Консультация № 55150
12.09.2006, 13:32
0.00 руб.
0 2 2
Добрый день уважаемые эксперты!Не судите строго за следующий вопрос начинающего ассемблировщика:
CSEG segment
org 100h
Begin:
mov ah,9
mov dx,offset Message
int 21h
int 20h
Message db ‘Hello, world!$‘
CSEG ends
end Begin
если строка начинается с 109h нельзя ли mov dx,offset Message напиать после int 20h , ведь данная ф-ция выводит строку ds:dx какая разница когда я укажу ее смещение.Объясните строчку Message db ‘Hello, world!$‘ каим образом ‘Hello, world! переводиться в ASCII если просмотреть соответсвующие регистры там ASCII символы и что такое db!?

Обсуждение

Неизвестный
12.09.2006, 16:12
общий
это ответ
Здравствуйте, Maksim,V,I/max!
1) Написать mov dx,offset Message после int 20h нельзя, т.к тогда эта строка просто не выполнится. Вообще вам стоит посмотреть в литературе про то как работают прерывания. Для данного случая - 9 функция 21h прерывания выводит строку, адрес строки должен находится в dx - т.е перед прерыванием регистры должны быть сформированы! Если это сделать позже то функция получит неправильные параметры.
2) За вас это делает компилятор.
3) db - Define Byte - определить (задать) байт – директива для определения данных.
Неизвестный
12.09.2006, 20:03
общий
это ответ
Здравствуйте, Maksim,V,I/max!
В Message db ‘Hello, world!$‘ строка и так в ASCII, откройте исходник в шестнадцатеричном редакторе и сравните коды по таблице ASCII.
Форма ответа