Совсем не обязательно вместо ' ставить `, то есть совсем не обязательно использовать другой символ для кавычки. Можно использовать или дублирующую кавычку (две ' подряд):
dll EQU 'a\'''
или да, всё выражение заключить в другие кавычки, например в данном случае в двойные: ":
CityCat4, уже третий день (или уже четвёртый?) я вижу вопросы от ZIK1337 всё про одну и ту же лабораторную работу или домашнее задание. ТРЕТИЙ ДЕНЬ ПОДРЯД, КАРЛ! К вангованию присоединяюсь. Никому не интересно помогать тому, кто сам хоть немного подумать не в состоянии.
getch() там берётся судя по всему из curses. А вот nodelay там предварительно нигде не устанавливается. Естественно getch() будет возвращать -1 что есть ERR.
Вот всю голову сломал но так и не понял как этот однострочник работает. Но ведь работает! Не, pythonic way это всё же сложно и непонятно и совсем не "Beautiful is better than ugly/Explicit is better than implicit/Simple is better than complex/и т.д.", наоборот всё так запутано, что хрен поймёшь. То ли дело когда всё последовательно и не в одну строчку, в которой сам чёрт ногу сломит почему же она работает.
Попробую угадать опять (ну что значит "программа не компилируется"? неужели трудно привести сообщение которое транслятор говорит? телепатом работать сложно). Скорее всего ошибка тут:
add ax, a
В таком случае оставляем переменную 'a' как было:
a dw 30 ; test
А тут явно указываем использовать байт:
mov byte ptr [a],al
PS: синтаксис 'byte ptr' и требование наличия квадратных скобок вокруг имени переменной зависит от транслятора (masm, nasm, fasm, yasm, tasm), от режима этого транслятора (masm или ideal в tasm). Так что тут я тоже был вынужден обратиться к высшим силам и заняться телепатией. Потому что я понятия не имею что за транслятор/компилятор, в каком он режиме и т.д.