Операнд памяти ассемблера

Я использую 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. Технически это то же самое, но смысл, переданный читателю, отличается.

Другие вопросы по тегам