Показать сообщение отдельно
  #17  
Старый 07.01.2013, 19:08
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
...команду db
"Хорошо" же сейчас преподают ассемблер... Или ты "хорошо" слушаешь. Нет такой команды. Открой справочник интел/амд и убедишься. DB означает что Байт (B) после этой директивы будет в исполняемом файле записан на текущем адресе так, как есть.
А теперь открываю справочник и цитирую:
Цитата:
DOS Fn 09H: Выдать строку на дисплей

Вход
AH = 09H
DS: DX = адрес строки, заканчивающейся символом '$' (ASCII 24H)

Выход
нет =

Описание:
строка, исключая завершающий ее символ '$', посылается на стандартный вывод. символы Backspace обрабатываются как в функции 02H Display Char. обычно, чтобы перейти на новую строку, включают в текст пару CR/LF (ASCII 13H и ASCII 0aH). строки, содержащие '$', можно выдать через 40H Write Handle (BX=0).
Что конкретно тут не понятно? В описании четко сказано. DS-BX - адрес. А у тебя DX перед выводом равен случайному значению, очевидно, что там лежит адрес какой-то дурацкой строки системы. И строка находится в сегменте кода, а не данных.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием