Ассемблер и программирование для IBM PC



         

ГЛАВА 23. Прерывания BIOS и DOS - часть 19


Ассемблер для IBM PC. Программы. 28

page 60,132 TITLE ALLASC (COM) Вывод на экран ASCII-символов 00-FF CODESC SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:NOTHING ORG 100H BEGIN: JMP SHORT MAIN CTR DB 00,'S'

; Основная процедура: ; ------------------ MAIN PROC NEAR CALL B10CDR ;Очистить экран CALL C10SET ;Установить курсор CALL D10DISP ;Вывести символ на экран RET MAIN ENDP ; Очистка экрана: ; -------------- B10CLR PROC MOV AX,0600H MOV BH,07 MOV CX,0000 ;Левая верхняя позиция MOV DX,184FH ;Правая нижняя позиция INT 10H RET B10CLR ENDP ; Установка курсора в 00,00: ; ------------------------- C10SET PROC MOV AN,02 MOV BN,00 MOV DX,0000 INT 10H RET C10SET ENDP ; Вывод на экран ASCII символов: ; ----------------------------- D10DISP PROC MOV CX,256 ;256 итераций LEA DX,CTR ;Адрес счетчика D20 MOV AH,09 ;Функция вывода символа INT 21H INC CTR ;Увеличить счетчик LOOP D20 ;Уменьшить CX, ; цикл, если не ноль RET ;Вернуться D10DISP ENDP

CODESG ENDS END BEGIN

Ассемблер для IBM PC. Программы. 29

page 60,132 TITLE CTRNAME (EXE) Ввод имен и вывод в центр экрана ;-------------------------------------------------------- STSCKSG SEGMENT PARA STACK 'Stack' DW 32 DUP(?) STACKSG ENDS ;-------------------------------------------------------- DATASG SEGMENT PARA 'Data' NAMEPAR LABEL BYTE ;Имя списка параметров: MAXNLEN DB 20 ; макс.длина имени NAMELEN DB ? ; число введенных символов NAMEFLD DB 20 DUP(' '),'$' ; имя и ограничитель ; для вывода на экран PRIMPT DB 'Name? ', '$' DATASG ENDS ;-------------------------------------------------------- CODESG SEGMENT PARA 'Code" BEGIN PROC FAR ASSUME CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASC PUSH DS SUB AX,AX PUCH AX MOV AX,DATASC MOV DS,AX MOV ES,AX CALL Q10CLR ;Очистить экран A20LOOP: MOV DX,0000 ;Установить курсор в 00,00 CALL Q20CURS CALL B10PRMP ;Выдать текст запроса CALL D10INPT ;Ввести имя CALL Q10CLR ;Очистить экран CMP NAMELEN,00 ;Имя введено? JE A30 ; нет - выйти CALL E10CODE ;Установить звуковой сигнал ; и ограничитель '$' CALL F10CENT ;Центрирование и вывод JMP A20LOOP A30: RET ;Вернуться в DOS BEGIN ENDP ; Вывод текста запроса: ; -------------------- B10PRMP PROC NEAR MUV AN,09 ;Функция вывода на экран LEA DX,PROMPT INT 21H RET B10PRMP ENDP ; Ввод имени с клавиатуры: ; ----------------------- D10INPT PROC NEAR




Содержание  Назад  Вперед