Консультация № 55311
13.09.2006, 17:26
0.00 руб.
0 1 1
Добрый день уважаемые эксперты!Хочу задать Вам следующ вопрос:
Это рабочая прога
CSEG segment
org 100h
Begin:
mov ah,9
mov dx,offset Message
int 21h
int 20h
Message db ‘Hello, world!$‘
CSEG ends
В отладчике AFD после int 20h идет dec ax - для чего это,затем db 65-?
и ниже какие-то команды(вы не могли бы подробно объяснить что это за команды и для чего они нужны!!!)
Это не рабочая прога:
CSEG segment
org 100h
Begin:
mov ah,9
mov dx,offset Message
Message db ‘Hello, world!$‘
int 21h
int 20h
CSEG ends
end Begin
Почему я не могу определьть байт в этом месте.Если ее запускать через AFD получается:
mov ah,9
mov dx,105
dec ax
db 65 и т.д. Куда делись int-ы?

Обсуждение

Неизвестный
13.09.2006, 19:00
общий
это ответ
Здравствуйте, Maksim,V,I/max!
Вот смотри что у тебя в программе идет после int 20h? - db "Hello...
Вот и в отладчике после int 20 идет код буквы "H", который равен 48h, который в свою очередь является командой "DEC AX", потом идет буковка "e" код которой 65h.
Т.е. как ты и писал в программе после int20 идет фраза "Hello, world!$", а вот после ней пойдет мусор, оставшийся после других программ.

Во втором случае, ты данные вставляешь внутрь кода программы. Процессор не знает где кончается код и начинаются данные, поэтому он начинает исполнять данные, когбуд-то это программа. Естественно получается черте что, и скорее всего вылетает ошибка.
Форма ответа