. . .
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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.