Вывод палитры дисплея в текстовом режиме
И еще вопрос: правильные ли я написал комментарии к строкам?
message db 10,13,' Graphic in text mode: ENTER - next color, ESC - exit',13,10,'$' -- зачем тут 10 и 13?
Буду оооочень благодарен если подскажите ну или ткнете носом в ошибки)
Код:
code segment para 'code'
assume cs:code,ds:code,es:code,ss:code
org 100h ;директива, необходимая для .COM программы
entry: jmp main
; данные
message db 10,13,' Graphic in text mode: ENTER - next color, ESC - exit',13,10,'$'
cols db 00h
; код программы
main proc near
call clearScreen ;чистим экран
mov dx,0000h ;загружаем в DX 0000
call setCursor ;установка курсора
call setMode ;вызов функции, устанавливающей цвет строки
;и ее фон
for: lea dx,message ;загрузка адреса сообщения
call printString ;вывод текста
call pressKey ;ждем нажатия клавиши
cmp al,13 ;проверка на нажатие Enter'a
je cont ;если Enter был нажат переходим в cont
ret ;завершение выполнения
cont: mov ah,09h ;функция выводящая строку на экран
mov bl,cols ;загрузка в нижний регистр cols
mov cx,10
int 10h
inc cols
jmp near ptr for
main endp
; чистим экран через BIOS
clearScreen proc near
mov ax,0600h ;AH 06 - прокрутка
;AL 00 - весь экран
mov bh,07h
mov cx,0000 ;нормальный атрибут (черно-белый)
mov dx,184fh ;нижняя правая граница
int 10h
ret
clearScreen endp
; установка курсора через BIOS ( dh,dl-строка, столбец )
setCursor proc near
mov ah,02 ;установить положение курсора
mov bh,00 ;страница 0
int 10h
ret
setCursor endp
; вывод текста через DOS ( dx- адрес текста с '$' в конце )
printString proc near
mov ah,09 ;функция вывода
int 21h
ret
printString endp
; ввод скэн(ah) и ascii(al) кода без "эха" через BIOS
pressKey proc near
mov ah,00
int 16h
ret
pressKey endp
;Функция устанавливает стандартный 16ти цветовой графический режим
setMode proc near
mov ah,00h ;установка графического режима
mov al,03h ;стандартный цветной текст (ч/б)
int 10h
ret
setMode endp
code ends
end entry
assume cs:code,ds:code,es:code,ss:code
org 100h ;директива, необходимая для .COM программы
entry: jmp main
; данные
message db 10,13,' Graphic in text mode: ENTER - next color, ESC - exit',13,10,'$'
cols db 00h
; код программы
main proc near
call clearScreen ;чистим экран
mov dx,0000h ;загружаем в DX 0000
call setCursor ;установка курсора
call setMode ;вызов функции, устанавливающей цвет строки
;и ее фон
for: lea dx,message ;загрузка адреса сообщения
call printString ;вывод текста
call pressKey ;ждем нажатия клавиши
cmp al,13 ;проверка на нажатие Enter'a
je cont ;если Enter был нажат переходим в cont
ret ;завершение выполнения
cont: mov ah,09h ;функция выводящая строку на экран
mov bl,cols ;загрузка в нижний регистр cols
mov cx,10
int 10h
inc cols
jmp near ptr for
main endp
; чистим экран через BIOS
clearScreen proc near
mov ax,0600h ;AH 06 - прокрутка
;AL 00 - весь экран
mov bh,07h
mov cx,0000 ;нормальный атрибут (черно-белый)
mov dx,184fh ;нижняя правая граница
int 10h
ret
clearScreen endp
; установка курсора через BIOS ( dh,dl-строка, столбец )
setCursor proc near
mov ah,02 ;установить положение курсора
mov bh,00 ;страница 0
int 10h
ret
setCursor endp
; вывод текста через DOS ( dx- адрес текста с '$' в конце )
printString proc near
mov ah,09 ;функция вывода
int 21h
ret
printString endp
; ввод скэн(ah) и ascii(al) кода без "эха" через BIOS
pressKey proc near
mov ah,00
int 16h
ret
pressKey endp
;Функция устанавливает стандартный 16ти цветовой графический режим
setMode proc near
mov ah,00h ;установка графического режима
mov al,03h ;стандартный цветной текст (ч/б)
int 10h
ret
setMode endp
code ends
end entry
Код:
cont: mov ah,09h ;функция выводящая строку на экран
mov bl,cols ;загрузка в нижний регистр cols
mov cx,10
int 10h
inc cols
jmp near ptr for
main endp
mov bl,cols ;загрузка в нижний регистр cols
mov cx,10
int 10h
inc cols
jmp near ptr for
main endp
Код:
(1) cont: mov ah,09h ;функция выводящая строку на экран <----- строку, состоящую из символа с кодом al в количестве cx штук
(2) mov al, <--- character to write
mov bl,cols ;загрузка в нижний регистр cols
(3) mov bh, <---- video page number (0-based)
mov cx,10
int 10h
inc cols
jmp near ptr for
main endp
(2) mov al, <--- character to write
mov bl,cols ;загрузка в нижний регистр cols
(3) mov bh, <---- video page number (0-based)
mov cx,10
int 10h
inc cols
jmp near ptr for
main endp