ВУЗ:
Составители:
65
mov DS,DI
cld
; Настроить пару ES:DI для прямого вывода в видеопамять
push AX
; Загрузить адрес сегмента видеоданных в ES
mov AX,0B800h
mov ES,AX
; Умножить номер строки на длину строки в байтах
mov AX,[ScreenString]
mov DX,160
mul DX
; Прибавить номер колонки (дважды)
add AX,[ScreenColumn]
add AX,[ScreenColumn]
; Переписать результат в индексный регистр
mov DI,AX
pop AX
mov AH,[TextColorAndBackground]
stosw
; Подготовка для вывода следующих байтов
; Перевести текущую позицию на 2 символа влево
inc [ScreenColumn]
; Проверить пересечение правой границы экрана
cmp [ScreenColumn],80
jb @@End
; Если достигнута правая граница экрана -
; перейти на следующую строку
sub [ScreenColumn],80
inc [ScreenString]
@@End: pop ES
pop DS
popa
ret
ENDP ShowASCIIChar
;*******************************************************
;* ПЕРЕВОД ЧИСЛА ИЗ ШЕСТНАДЦАТЕРИЧНОГО КОДА В ДВОИЧНЫЙ *
;* DS:SI - число в коде ASCII. *
;* Результат возвращается в EAX. *
;*******************************************************
PROC HexToBin32 near
push EBX
push CX
push SI
cld
xor EBX,EBX ;обнуляем накопитель
xor CX,CX ;обнуляем счетчик цифр
@@h0: lodsb
; Проверка на ноль (признак конца строки)
mov DS,DI cld ; Настроить пару ES:DI для прямого вывода в видеопамять push AX ; Загрузить адрес сегмента видеоданных в ES mov AX,0B800h mov ES,AX ; Умножить номер строки на длину строки в байтах mov AX,[ScreenString] mov DX,160 mul DX ; Прибавить номер колонки (дважды) add AX,[ScreenColumn] add AX,[ScreenColumn] ; Переписать результат в индексный регистр mov DI,AX pop AX mov AH,[TextColorAndBackground] stosw ; Подготовка для вывода следующих байтов ; Перевести текущую позицию на 2 символа влево inc [ScreenColumn] ; Проверить пересечение правой границы экрана cmp [ScreenColumn],80 jb @@End ; Если достигнута правая граница экрана - ; перейти на следующую строку sub [ScreenColumn],80 inc [ScreenString] @@End: pop ES pop DS popa ret ENDP ShowASCIIChar ;******************************************************* ;* ПЕРЕВОД ЧИСЛА ИЗ ШЕСТНАДЦАТЕРИЧНОГО КОДА В ДВОИЧНЫЙ * ;* DS:SI - число в коде ASCII. * ;* Результат возвращается в EAX. * ;******************************************************* PROC HexToBin32 near push EBX push CX push SI cld xor EBX,EBX ;обнуляем накопитель xor CX,CX ;обнуляем счетчик цифр @@h0: lodsb ; Проверка на ноль (признак конца строки) 65
Страницы
- « первая
- ‹ предыдущая
- …
- 63
- 64
- 65
- 66
- 67
- …
- следующая ›
- последняя »