Не могли бы вы помочь с маленькой проблемой? Программа, написанная на ассемблере и использующая графический режим, правильно выполняется на внешней видеокарте. На встроенной графике - только на секунды две появляется чёрный экран, и сама выгружается. Я новичок в ассемблере, задание делал по примерам к Зубкову, но и они выполняются только на внешней видеокарте.
вот код моей программки:
Код: Выделить всё
CSEG segment ; имя сегмента программы
org 100h ; начинаем её со смещения 100h
Start: ; метка начала программы
;*******************************************************************************
[U]mov ah, 0h ;Установка видео режима
mov al, 4h ;AL = режим(графика, 320*200)
int 10h ;Видео сервис[/U]
MOV CX, 160 ;номер столбца
MOV DX, 100 ;номер ряда
Main:
Set_quadro:
Call set_dot
Push dx
Push cx
Inc dx
Call set_dot
Inc dx
Call set_dot
Pop cx
Pop dx
Main_loop:
Mov ah, 1 ; код функции "проверка готовности"
Int 16h ; обращение к BIOS
Jz Main_loop ; символ не введён, возвращаемся на начало подпрограммы
Xor ah, ah ; код функции "чтение символа в AL"
Int 16h ; обращение к BIOS
;*******************************************************************************
Cmp al, 'k' ; сравнение полученного символа с "g"
Jne _cmp2
Call del_quadro
Inc cx
Cmp cx,320
Jne inc_2
Xor cx,cx
Inc_2:
Inc dx
Cmp dx,200
Jne main
Xor dx,dx
Jmp main
_cmp2:
;******************************************************************************
Cmp al, 'g'
Jne _cmp3
Call del_quadro
Dec cx
Jnz Dec_2
Mov cx,319
Dec_2:
Inc dx
Cmp dx,200
Jne main
Xor dx,dx
Jmp main
_cmp3:
Cmp ah, 41h
Jne Main
mov ah, 0h ;Установка видео режима
mov al, 3h ;AL = режим(текст,80x25,16/8)
int 10h ;Видео сервис
int 20h ; выход из программы
;*******************************************************************************
set_dot:
Mov ax, 0B800H ;указываем на видеобуфер
mov ES,AX ;
Mov ax, 0C03h
Int 10h
ret
;*******************************************************************************
Del_dot:
Mov ax, 0B800H ;указываем на видеобуфер
mov ES,AX ;
Mov ah, 0Ch
Mov al,4
Int 10h
Ret
;*******************************************************************************
del_quadro:
Call del_dot
Push dx
Push cx
Inc dx
Call del_dot
Inc dx
Call del_dot
Pop cx
Pop dx
;*******************************************************************************
CSEG ends ; конец сегмента
end Start ; конец программы.
OS Windows XP SP3, motherboard GA M55-S3Gplus, CPU Athlon 6000