Вы определили строковую константу, когда я подозреваю, что вы не хотели.Следующее:
dw "13,37,99,99"
Будет выдавать следующий вывод:
Offset 00 01 02 03 04 05 06 07 08 09 0A 0B
31 33 2C 33 37 2C 39 39 2C 39 39 00
Почему?Потому что:
- 31 - это код ASCII для '1'
- 33 - это код ASCII для '3'
- 2C - это код ASCII для ','
- ...
- 39 - это код ASCII для '9'
- NASM также завершает вашу строку нулем, поставив в конце 0 байт (если вы этого не сделаетехотите, чтобы строки были нулевыми в конце, вместо них используйте одинарные кавычки:
'13,37,99,99'
)
Примите во внимание, что ax
содержит два байта, и должно быть достаточно ясно, почему ax
содержит 0x2C33
.
Я подозреваю, что вы хотели, чтобы было больше по духу этого (без кавычек и мы используем db
, чтобы указать, что мы объявляем данные размером в байт вместо dw
, который объявляетданные размером с слово):
db 13,37,99,99
Это все равно даст вам 0x6363
(ax
содержит два байта / преобразование 99, 99 в гекс).Не знаю, откуда у вас 0x3337
.
Я рекомендую вам установить hex hex и провести эксперимент с проверкой выходных данных NASM.