Неожиданный вывод в консоль
Начал изучать ассемблер (TASM,64x,Windows). В регистр dx положили переменную Mess2, а в консоль выводиться "Hello, World!". Почему?
CSEG segment
org 100h
Begin:
mov ah, 9
mov dx, offset Mess2
int 21h
int 20h
Message db 'Hello, World!$'
Mess2 db 'Hi$!'
CSEG ends
end Begin
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
У вас код для COM файла, а собираете вы EXE. Для EXE файла нужно обязательно инициализировать регистр DS (как именно - смотрите в примерах кода для EXE), иначе там будет мусор, и при выполнении данные будут браться не оттуда, откуда вам нужно, а из какого-то другого места.
Либо собирайте в COM файл - для этого при запуске линкера (TLINK) нужно добавить опцию /t:
tlink /t T.obj
