Методические указания по лабораторным работам по курсу «Аппаратные средства компьютерных систем», страница 20

       . . .

Type   PROC  NEAR    ;Подпрограмма вывода

       MOV   AL,DS:[SI] ;Выбрать символ для вывода

       CMP   AL,0    ;Конец сообщения

       JE    L0      ;Да

       MOV   AH,9    ;Вывести символ

       MOV   CX,1

       INT   10h

       CALL  MoveC   ;Передвинуть курсор

       INC   SI      ;Сдвинуть указатель

L0:    RET

Type   ENDP

MoveC  PROC  NEAR    ;Подпрограмма сдвига курсора

       PUSH  AX

       PUSH  CX

       PUSH  BX

       MOV   AH,15   ;Получить режим экрана

       INT   10h     ;В AH - ширина экрана

       MOV   AH,3    ;Получить позицию курсора

       INT   10h     ;В DX - координаты курсора

       CMP   DL,AH   ;Конец строки ?

       JB    L1      ;Нет

       MOV   DL,0    ;Курсор в начало строки

       CMP   DH,24   ;Конец экрана ?

       JB    L2      ;Нет

       POP   BX

       MOV   BH,BL   ;Атрибут заполнителя

       PUSH  BX

       PUSH  DX

       MOV   CX,0    ;Координаты экрана

       MOV   DL,AH

       MOV   DH,24

       MOV   AL,1    ;Скроллинг экрана на 1 строку

       MOV   AH,6    ;вверх

       INT   10h

       POP   DX

       JMP   L3

L1:    INC   DL      ;Курсор в следующий столбец

       JMP   A3

L2:    INC   DH      ;Курсор на следующую строку

L3:    POP   BX

       MOV   AL,2    ;Установить позицию курсора

       INT   10h

       POP   CX

       POP   AX

       RET

MoveC  ENDP

Рисунок 3.2

На рисунке 3.3 приведена процедура вывода символа и его атрибута путем непосредственной записи в видеопамять. Входные данные для процедуры: AX — символ и его атрибут, BX — номер столбца и номер строки, CH — номер видеостраницы.

DirVA  PROC  FAR

       PUSH  DX

       PUSH  CX

       MOV   DX,4096 ;Вычислить адрес знакоместа

       MUL   DX,CH

       MOV   CX,160

       MUL   CX,BL

       ADD   DX,CX

       MOV   CX,2

       MUL   CX,BH

       ADD   DX,CX