Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
METODIchka4.DOC
Скачиваний:
5
Добавлен:
04.05.2019
Размер:
940.03 Кб
Скачать

Пример выполнения работы.

Программа перепрограммирует символ А на сим­вол

1 2 3 4 5 6 7 8 9 10 11

В случае если принтер не готов, выводится сообще­ние о причине неготовности, иначе печатаются стро­ки символов А и нового символа.

data segment

com1 db 27,'x',0 ; Выбор режима печати

draft

com2 db 27,':*,0,0,0 ;Копирование встроенного

; набора символов в загружаемый знакогенератор

соm3 db 27,'&',0,'АА',136 ; Определение загружаемого символа

symd db 0,32,80,168,84,42,84,168,80,32,0

; Данные символа

соm4 db 27,' % ',1 ; Выбор загружаемого набора символов

соm5 db 27,' % ',0 ; Выбор встроенного набора символов

stri db "A A A A ",13,10,"$'

msgl db " Принтер не подключен к ПЭВМ", 13, 10,'$'

msg2 db " Принтер выключен",13,10,'$'

msg3 db " Принтер off-line",13,10,'$'

msg4 db " Нет бумаги",13,10,'$'

msg5 db " Сбой ПУ",13,10,'$'

data ends

code segment

assume cs:code, ds:data

main proc far

mov ax, data

mov ds,ax

mov dx,0

mov ah,1

int 17h ; Инициализация ПУ

mov cx,01fh

l1: mov dx,0ffffh ; Временная задержка для завершения

13: dec dx ; инициализации ПУ

jne 13

loop 11

mov dx,0

mov ah, 2

int 17h ; Получаем слово состояния ПУ

cmp ah,144 ; ПУ готово к работе?

jz prn

call error

prn: lea bx,com1

mov cx,3

call printn

lea bx,com2

mov ex,5

call printn

lea bx,com3

mov cx,6

call printn

lea bx,symd

mov cx, 11

call printn

call prints

lea bx,com4

mov cx,3

call printn

call prints

lea bx,com5

mov cx,3

call printn

call prints

mov ax,4c00h ; Завершение программы

int 21h

main endp

; Подпрограмма печати символа из аl

print proc near

mov dx,0 ; Выбираем lpt1

mov ah,0 ; Вывод на печать

int 17h

call error

ret

print endp

prints proc near

lea bx,stri 12:

mov al,[bx]

cmp al,'$' ; Конец строки ?

je end_p

call print ; Печать символа

inc bx

jmp 12 ; Переход к следующему символу

end_p: ret

prints endp

; Подпрограмма печати заданного в СХ количества символов, смещение первого символа в BX

printn proc near

l01: mov al,[bx]

call print

inc bx

loop 101

ret

printn endp

; Подпрограмма анализа результата печати символа

error proc near

cmp ah, 16 ; Печать успешна ?

jz e01

cmp ah,48 ;Принтер не подкл. к ПЭВМ ?

jz war1

cmp ah, 136 ; Принтер выключен ?

jz war2

cmp ah,24 ; Принтер OFF-LINE ?

jz war3

cmp ah,56 ; Нет бумаги ?

jz war4

tea dx,msg5 ; Сбой принтера

jmp end_m

war1: lea dx,msg1

jmp end_m

war2: lea dx,msg2

jmp end_m

war3: lea dx,msg3

jmp end_m

war4: lea dx,msg4

end_m: mov ah,09 ; Вывод сообщения об ошибке

int 21h ; на экран

mov ax,4c00h ; Завершение программы

int 21h

е01: ret

error endp

code ends

end main_

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]