Консультация № 160931
19.02.2009, 21:26
0.00 руб.
0 2 1
Доброго времени суток.
Вопрос по книге Калашникова, а точнее по поводу следующего исходника:

CSEG segment
org 100h

_beg:
mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end _beg

Который должен вывести на мой экран весёлую рожицу.

Дабы отбросить сомнения по поводу правильности набора, я по итогу содрал код из прилагаемого диска с исходниками. Однако весёлой рожицы в углу экрана так и не узрел.

В чём может быть проблема? Лично сам склоняюсь к мысли, что данный код работает только под ДОСом (У меня Виндос ХР). Однако предидущие программки у меня работали. Опять же с оговоркой на то, что "Hello, world" проскакивало очень быстро. Однако из положения я вышел дописав код остановки программы до нажатия клавиши. Т.е. без этой доработки код в принципе работает. Но реакция что бы его углядеть нужна как у мангуста.

З.Ы. очень прошу помочь, потому как речь идёт не только о отсутствии на экране одной довольной рожици. Но и присутствии перед экраном одной недовольной-)

Обсуждение

давно
Старший Модератор
31795
6196
19.02.2009, 21:33
общий
это ответ
Здравствуйте, Stazher!

Проблема в том, что у Вас ХР, а не Win9x.
ХР не устанавливает нужный текстовый режим, у которого сегментный адрес равен 0B800h.
Поставте такие строки в начале программы:
_beg:mov ax,3
int 10h

И наслаждайтесь работой программы.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
19.02.2009, 21:44
общий
автоматическое завершение программы это ещё одна особенность ХР, но Вы её решили.
На будущее, пользуйтесь поиском в архиве рассылки, по книге О.Калашникова там есть ответы практически на все возникающие вопросы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа