Назад | Начало урока | Вперед
Содержание

Глава 2

Процедура вывода шестнадцатиричного числа с учетом цвета. Эта процедура нужна для вывода на экран машинного числа в шестнадцатеричной форме т.к. непосредственно машинное число вывести на экран нелзья.

Вверх

;процедура вывода шестнадцатиричного числа с учетом цвета *********************
;входные параметры
;firstp_val - первый разряд числа
;secondp_val - второй разряд числа

print_h_el proc
push ax
push bx
push cx
push dx

mov al,firstp_val ;заносим в al превую цифру числа
mov ah,09h ;номер процедуры BIOS
mov bl,0Fh ;выбор цвета
mov cx,01h ;количество повторений
int 10h ;вызов процедуры BIOS

;сдвиг на одну позию от текущей
call cursor_sdvig

mov al,secondp_val ;заносим в al вторую цифру числа
mov ah,09h ;номер процедуры BIOS
mov bl,0Fh ;выбор цвета
mov cx,01h ;количество повторений
int 10h ;вызов процедуры BIOS

call cursor_sdvig

mov al,"h"
mov ah,09h
mov bl,07h
mov cx,01h
int 10h

pop dx
pop cx
pop bx
pop ax
ret

print_h_el endp
;*****************************************************************************

Процедура print_h_el проста для понимания. Эта процедура выводит 16-ричное число на экран. 16-ричное число в данном случае состоит из 2-х разрядов. Обе эти цифры передаются процедуре через два параметра firstp_val и second_val. Вывод на экран происходит при помощи функции 09h прерывания BIOS 10h. Вывод на экран происходит в текущую позицию курсора. После двух цифр процедура выводит еще символ "h" несколько более бледным цветом.

Для сравнения еще раз поместим процедуру print_el. Она в точности является фрагментом предыдущей процедуры. В программе периодически возникала необходимость вывода не экран символа то была написана процедура исключающая часто повторяемые участки кода

Вверх

;процедура вывода символа с учетом цвета *************************************
;входные параметры
;tek_el - выводимый символ

print_el proc
push ax
push dx

mov al,tek_el ;заносим в al вторую цифру числа
mov ah,09h ;номер процедуры BIOS
mov bl,0Fh ;выбор цвета
mov cx,01h ;количество повторений
int 10h ;вызов процедуры BIOS

pop dx
pop ax
ret

print_el endp
;*****************************************************************************

Вот процедура readSR, которой через переменную svalue передается адрес ячейки, и которая прочитает
в переменную tek_el значение, содержащееся по этому адресу. Всего одна ячейка!
Но прочитав одну ячейку, мы можем прочитать и все остальные!

Придется рассмотреть процедуру readSR. Процедуре передается адрес ячейки, через переменную svalue, и процедура возвращает прочтенное значение через переменную tek_el.
Интересно, что эта задача решается через обращение к порту 70h.

Вверх

;процедура чтения значений CMOS и RTS ****************************************
;входные параметры
;svalue - адрес ячейки чтение значения которой производится
;выходные параметры
;tek_el - прочтенное значение

readSR proc
push ax

mov al,svalue ;номер (адрес) ячейки из которой производится чтение
out 70h,al ;заносим это значние в порт smoc rts
wait
xor ax,ax ;очистка регистра ax
in al,71h ;вводим в регистр al из порта значение ячейки smoc rts
wait
mov tek_el,al ;присваеваем tek_el значение ячейки

pop ax
ret

readSR endp
;*****************************************************************************

Процедуре передается адрес ячейки, через переменную svalue, и процедура возвращает прочтенное значение через переменную tek_el.
Интересно, что эта задача решается через обращение к порту 70h.

Всего одна ячейка! Но прочитав одну ячейку, мы можем прочитать и все остальные!


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz