Прямой доступ к видеопамяти вссемблер 8086 TASM
Хочу вывести первые 16 символов ascii используя прямой доступ к видеопамяти и цепочечные команды Вот программа. Смысл процедуры up в том, чтоб увеличить на 8 первый байт в каждом слове массива слов txt.
.model tiny
.data
txt dw 0107h, 0207h, 0307h, 0407h, 0507h, 0607h, 0707h, 0807h
.code
start:
mov ax,0003h ;очистка экрана
int 10h
mov ax, @data
mov ds, ax
mov ax,0B800h ;адресую видеопамять
mov es,ax
mov di,9fh ;смещение в видеопамят
mov si,offset txt ;смещение строки
mov cx, 8
cld
rep movsw
call up
mov cx, 8
cld
rep movsw
int 20h ;выход из программы
up proc
push ax
mov ax, txt[0]
add ah, 08h
mov txt[0], ax
mov ax, txt[2]
add ah, 08h
mov txt[2], ax
mov ax, txt[4]
add ah, 08h
mov txt[4], ax
mov ax, txt[6]
add ah, 08h
mov txt[6], ax
mov ax, txt[8]
add ah, 08h
mov txt[8], ax
mov ax, txt[10]
add ah, 08h
mov txt[10], ax
mov ax, txt[12]
add ah, 08h
mov txt[12], ax
mov ax, txt[14]
add ah, 08h
mov txt[14], ax
pop ax
ret
up endp
end start
Проблема в том, что когда я второй раз вывожу на экран массив, уже после отработки процедуры, учитывая что изменял только старший байт, меняется цвет фона. Как это устранить?
