Операнд памяти ассемблера
Я использую emu8086 для изучения ассемблера. У меня есть вопрос, который говорит: Преобразуйте следующее в фрагмент кода в код языка ассемблера: a = 0
Я инициализирую переменную a как десятичный код 48 ascii (который имеет символьное значение 0)?
a db 48
Или я инициализирую переменную a как сам десятичный код ascii 0 (который имеет символьное значение NUL)?
a db 0
1 ответ
a = 0
означает, что переменная a
должно быть установлено на 0. Вы должны различать символы ASCII и их значения.
Значение 48 = 0x30 = '0' представляет символ ASCII для 0
но не ценность 0
Поэтому, если вы хотите установить значение 0, вы должны использовать
a db 0
Если вы хотите иметь символ 0, вы должны использовать
a db '0'
или альтернативно
a db 48
a db 30h
что все то же самое, но вы должны использовать обозначение, которое соответствует цели. Если вы используете символы, вы должны использовать символы, а не их значения ASCII. Технически это то же самое, но смысл, переданный читателю, отличается.