 |
Ассемблер в примерах - Установка видеорежима для 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
|  |