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

Глава 3

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

Процедура нужна для обеспечения ввода чисел в программу

Вверх

;чтение шестнадцатиричного числа с клавиатуры *************************************************
;ВХОДНЫЕ ПАРАМЕТРЫ
;ВЫХОДНЫЕ ПАРАМЕТРЫ
;;chislo – hex число введенное с клавиатуры преобразованное в BCD формат

read_int proc
push ax

cyclRC:
call press_key
cmp scan_code,01h
je exit_nsk
cmp ascii_code,00h
je cyclRC

;отображение нажатой клавише на экране
mov al,ascii_code
mov tek_el,al
call print_el

;символ должен принадлежать от 0 до 9

cyclRC1:
cmp ascii_code,30h
jnae cyclRC
cmp ascii_code,39h
jna RC1

;либо от "A" до "F"

cyclRC2:
cmp ascii_code,41h
jnae cyclRC
cmp ascii_code,46h
jna RC2

;либо от "a" до "f"

cyclRC3:
cmp ascii_code,61h
jnae cyclRC
cmp ascii_code,66h
jnbe cyclRC

sub ascii_code,57h
jmp next_int

RC1: sub ascii_code,30h
jmp next_int

RC2: sub ascii_code,37h
jmp next_int

next_int:

call cursor_position
call cursor_sdvig

cmp count,2
je second_int
mov ah,ascii_code
shl ah,4

second_int:
inc count
cmp count,2
jna cyclRC

or ah,ascii_code
mov tek_el,ah
mov chislo,ah

call cursor_sdvig
mov count,1


exitRI:
pop ax
ret

read_int endp

;*****************************************************************************

Примечание:

В Cmos Editor отсутствует обработка ошибок при вводе с клавиатуры. Так, программа не проверяет факт нахождения числа в допустимом диапазоне. В данной постановке задачи это не требовалось. Поэтому вся ответственность за вносимые изменения ложится на пользователя.


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

Hosted by uCoz