Не работает графика при 32К - Assembler

Узнай цену своей работы

Формулировка задачи:

Добрый день! дело заключается в то, что нужно написать программу для тестирования видео режимов, так вот я написал, только при тестировании режимов с 32К точек и более - черный экран, при этом размер окна меняется. Подскажите, в чем дело? Не судите строго, я начинающий в ассемблере.
cseg segment
assume cs:cseg, ds:cseg
org 100h
start:
 
;Разрешение 640 x 480 2 цвета
 
mov ax, 4f02h
mov bx, 11h
int 10h
 
mov ah,13h
mov al,0
mov cx,19
mov dl,20
mov dh,20
mov bl,4h ;красный цвет
mov bp, offset mess
int 10h
 
xor ax, ax
int 16h
 
;Разрешение 640 x 480 16 цветов
 
mov ax, 4f02h
mov bx, 12h
int 10h
 
mov ah,13h
mov al,0
mov cx,19
mov dl,20
mov dh,20
mov bl,4h ;красный цвет
mov bp, offset mess1
int 10h
 
xor ax, ax
int 16h
 
;Разрешение 320 x 200 256 цветов
 
mov ax, 4f02h
mov bx, 13h
int 10h
 
mov ah,13h
mov al,0
mov cx,19
mov dl,20
mov dh,20
mov bl,4h ;красный цвет
mov bp, offset mess2
int 10h
 
xor ax, ax
int 16h
 
;Разрешение 640*480, 16 цветов  SVGA режим
 
mov ax, 4f02h
mov bx, 100h
int 10h
 
mov ah,13h
mov al,0
mov cx,19
mov dl,20
mov dh,20
mov bl,4h ;красный цвет
mov bp, offset mess3
int 10h
 
xor ax, ax
int 16h
 
;Разрешение 800*600, 256 цветов  SVGA режим
 
mov ax, 4f02h
mov bx, 103h
int 10h
mov ah,13h
mov al,0
mov cx,19
mov dl,20
mov dh,20
mov bl,4h ;красный цвет
mov bp, offset mess4
int 10h
 
xor ax, ax
int 16h

; Разрешение 1024*768, 256 цветов  SVGA режим
 
mov  ah, 4Fh
mov  al, 02h
mov  bx, 105h
int 10h
 
mov ah,13h
mov al,0
mov cx,20
mov dl,10
mov dh,10
mov bl,4h ;красный цвет
mov bp, offset mess5
int 10h
 
xor ax, ax
int 16h
 
; Разрешение 1280*1024, 256 цветов  SVGA режим
mov  ah, 4Fh
mov  al, 02h
mov  bx, 107h
int 10h
 
mov ah,13h
mov al,0
mov cx,20
mov dl,10
mov dh,10
mov bl,4h ;красный цвет
mov bp, offset mess6
int 10h
 
xor ax, ax
int 16h
 
; Разрешение 640x480, 32K цветов  SVGA режим
mov  ax, 4F02h
;mov  al, 02h
mov  bx, 10Dh
int 10h
 
mov ah,13h
mov al,0
mov cx,30
mov dl,20
mov dh,20
mov bl,4h ;красный цвет
mov bp, offset mess7
int 10h
 
xor ax, ax
int 16h
 
; Разрешение 800x600, 32K цветов  SVGA режим
;mov  ah, 4Fh
;mov  al, 02h
;mov  bx, 113h
;int 10h
 
;mov ah,13h
;mov al,0
;mov cx,20
;mov dl,10
;mov dh,10
;mov bl,4h ;красный цвет
;mov bp, offset mess8
;int 10h
 
;xor ax, ax
;int 16h
 
; Разрешение 1024x768, 32K цветов  SVGA режим
;mov  ah, 4Fh
;mov  al, 02h
;mov  bx, 116h
;int 10h
 
;mov ah,13h
;mov al,0
;mov cx,20
;mov dl,10
;mov dh,10
;mov bl,4h ;красный цвет
;mov bp, offset mess9
;int 10h
 
;xor ax, ax
;int 16h

; Обработка окончания 
mov ax, 4c00h
int 21h
 
mess db '640 x 480 2colors', 0dh,0ah,'$'
 
mess1 db '640 x 480 16colors', 0dh,0ah, '$'
 
mess2 db '320 x 200 256colors', 0dh,0ah, '$'
 
mess3 db '640 x 480 16colors', 0dh,0ah, '$'
 
mess4 db '800 x 600 256colors', 0dh,0ah, '$'
 
mess5 db '1024 x 768 256colors', 0dh,0ah, '$'
 
mess6 db '1280 x 1024 256colors', 0dh,0ah, '$'
 
mess7 db '640 x 480 32Kcolors', 0dh,0ah, '$'
 
mess8 db '800 x 600 32Kcolors', 0dh,0ah, '$'
 
mess9 db '1024 x 768 32Kcolors', 0dh,0ah, '$'
 
mess10 db '1280 x 1024 32Kcolors', 0dh,0ah, '$'

cseg ends
end start

Решение задачи: «Не работает графика при 32К»

textual
Листинг программы
xor ax,ax
mov es,ax
mov bx,es:[046Ch]
mov cx,es:[046Ch+2]

Объяснение кода листинга программы

  1. xor ax,ax - Код очищает регистр AX.
  2. mov es,ax - Код перемещает сегментный регистр ES в регистр AX.
  3. mov bx,es:[046Ch] - Код перемещает байт из памяти по адресу 046C в регистр BX.
  4. mov cx,es:[046Ch+2] - Код перемещает слово (2 байта) из памяти по адресу 046C в регистр CX.

Оцени полезность:

9   голосов , оценка 3.444 из 5