Интерфейсы и периферийные устройства
mov dh,24 ;нижняя Y-координата
mov dl,79 ;правая Х-координата
int 10h ;прерывание BIOS
ret
;ПП. Вывод на экран строки символов.-----------------------------------------
symv: mov ah,13h
mov al,0
mov bh,0
mov bl,1Fh
push ds
pop es
int 10h
ret
;ПП. Идентификация нажатой клавиши.------------------------------------------
nklav: lahf
or ah,01000000b
sahf
nrv1: mov ah,11h
int 16h
jz nrv1
ret
;ПП. Стирание из буфера символа.---------------------------------------------
clsym: mov ax,0C00h
int 21h
ret
;ПП. Задержка----------------------------------------------------------------
delay: mov ah,86h
mov cx,0
int 15h
ret
;ПП. Проверка регистра состояния---------------------------------------------
nrv11: mov cx,1000
nrv112: push cx
mov dx,379h
in al,dx
mov ack,al
mov busy,al
and ack,40h
cmp ack,40h
jne nrv111
and busy,80h
cmp busy,80h
jne nrv111
nrv111: pop cx
loop nrv112
ret
;ДАННЫЕ.---------------------------------------------------------------------
mes1 db 'ПРОГРАММА - "PRINT"'
len1=$-mes1
mes2 db '1. Вывод на печать данных из буфера.'
len2=$-mes2
mes3 db '2. Выход из программы.'
len3=$-mes3
mes4 db 'Наберите выводимый на печать текст с помощью клавиатуры.'
len4=$-mes4
buf1 db 100 dup('*')
lensym dw 0
ack db ?
busy db ?
;----------------------------------------------------------------------------
end start
Задание 7. Исследовать режим тестирования СОМ. Написать программу на ассемблере.
.model tiny ;модель памяти, исп. для СОМ
.code ;начало сегмента кода
org 100h ;нач. знач. счетчика - 100Н
;Начало основной программы---------------------------------------------------
start: call clear ;ярко-белые симв. на синем
;
mov cx,len1 ;
mov dh,10 ;
mov dl,27 ;
mov bp,offset mes1 ;
call symv ;вывод на экран строки симв.
;
call nklav ;идентиф. нажатой клавиши
call clsym ;стирание из буфера символа
;
call clear ;ярко-белые симв. на синем
;
mov cx,len2 ;
mov dh,10 ;
mov dl,23 ;
mov bp,offset mes2 ;
call symv ;вывод на экран строки симв.
;
mov cx,len3 ;
mov dh,12 ;
mov dl,23 ;
mov bp,offset mes3 ;
call symv ;вывод на экран строки симв.
;
nrv2: call nklav ;идентиф. нажатой клавиши
;
cmp ah,02h ;
je nrv3 ;
cmp ah,03h ;
je nrv10