Команда mov ax, [bx] читает из ячейки с двумя адресами. Зачем?
А какие есть примеры, когда в компайлтайме предпочтительно какие-то вычисления делать?
А как понять, что ты правильно слинковал? Через переменные в Environment Variables? Или set в самом симейк листс писать?
Если уж закреп не найти — может айти всё-таки не ваше?