Учебник по ассемблеру (ASM)
 

Ассемблер в примерах - Установка видеорежима для Windows XP

Вопрос:
У меня вопрос по рассылке Калашникова О. в частности о программе которая выводит рожицу на синем фоне в левый верхний угол экрана. Почему то она у меня не работает, отладчик CV при выполнении строки 10 выдаёт ошибку:(application output lost ; screen exchange is off) в окне память по адресу В800:0000 нет ни кода ни атрибута символа. Тем не менее в отладчике Debug , по команде -g программа работает и завершается как следует.
1  CSEG segment
2  ASSUME CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG
3  org 100h
4  begin:
5  mov ax,0B800h
6  mov es,ax  
7  mov di,0 
8  mov ah,31 
9  mov al,1
10 mov es:[di],ax 
11 mov ah,10h
12 int 16h
13 int 20h
14 CSEG ends
15 end begin
Ответ:
Рассылка О.Калашникова создавалась давно, когда ХР наверное было только в планах MS, все программы - примеры были написаны для Win9х, которая автоматически ставила 3-й видеорежим при эмуляции MS-DOS. ХР этого неделает. Соответственно видеобуфер находится по другому адресу. Отладчик сам ставит 3-й видео режим и только потом запускает программу. Поэтому Вам нужно самому устанавливать этот режим в начале программмы с помощью команд:
begin: mov ax,03
int 10h

   Вперёд
   Содержание