Глава 2
Процедура вывода шестнадцатиричного числа с учетом цвета. Эта процедура нужна для вывода на экран машинного числа в шестнадцатеричной форме т.к. непосредственно машинное число вывести на экран нелзья.
Вверх
;процедура вывода шестнадцатиричного числа с учетом цвета *********************
mov al,firstp_val ;заносим в al превую цифру числа
;сдвиг на одну позию от текущей
mov al,secondp_val ;заносим в al вторую цифру числа
call cursor_sdvig
mov al,"h"
pop dx
Процедура print_h_el проста для понимания. Эта процедура выводит 16-ричное число на экран.
16-ричное число в данном случае состоит из 2-х разрядов. Обе эти цифры передаются процедуре через два параметра firstp_val и second_val. Вывод на экран происходит при помощи функции 09h прерывания BIOS 10h. Вывод на экран происходит в текущую позицию курсора. После двух цифр процедура выводит еще символ "h" несколько более бледным цветом.
Для сравнения еще раз поместим процедуру print_el. Она в точности является фрагментом предыдущей процедуры. В программе периодически возникала необходимость вывода не экран символа то была написана процедура исключающая часто повторяемые участки кода
Вверх
;процедура вывода символа с учетом цвета *************************************
mov al,tek_el ;заносим в al вторую цифру числа
pop dx
Вот процедура readSR, которой через переменную svalue передается адрес ячейки, и которая прочитает
Придется рассмотреть процедуру readSR. Процедуре передается адрес ячейки, через переменную svalue, и процедура возвращает прочтенное значение через переменную tek_el.
Вверх
;процедура чтения значений CMOS и RTS ****************************************
mov al,svalue ;номер (адрес) ячейки из которой производится чтение
pop ax
Процедуре передается адрес ячейки, через переменную svalue, и процедура возвращает прочтенное значение через переменную tek_el.
Всего одна ячейка!
Но прочитав одну ячейку, мы можем прочитать и все остальные!
Назад |
Начало урока |
Вверх |
Вперед
;входные параметры
;firstp_val - первый разряд числа
;secondp_val - второй разряд числа
push bx
push cx
push dx
mov ah,09h ;номер процедуры BIOS
mov bl,0Fh ;выбор цвета
mov cx,01h ;количество повторений
int 10h ;вызов процедуры BIOS
call cursor_sdvig
mov ah,09h ;номер процедуры BIOS
mov bl,0Fh ;выбор цвета
mov cx,01h ;количество повторений
int 10h ;вызов процедуры BIOS
mov ah,09h
mov bl,07h
mov cx,01h
int 10h
pop cx
pop bx
pop ax
ret
;входные параметры
;tek_el - выводимый символ
push dx
mov ah,09h ;номер процедуры BIOS
mov bl,0Fh ;выбор цвета
mov cx,01h ;количество повторений
int 10h ;вызов процедуры BIOS
pop ax
ret
в переменную tek_el значение, содержащееся по этому адресу. Всего одна ячейка!
Но прочитав одну ячейку, мы можем прочитать и все остальные!
Интересно, что эта задача решается через обращение к порту 70h.
;входные параметры
;svalue - адрес ячейки чтение значения которой производится
;выходные параметры
;tek_el - прочтенное значение
out 70h,al ;заносим это значние в порт smoc rts
wait
xor ax,ax ;очистка регистра ax
in al,71h ;вводим в регистр al из порта значение ячейки smoc rts
wait
mov tek_el,al ;присваеваем tek_el значение ячейки
ret
Интересно, что эта задача решается через обращение к порту 70h.
Содержание