ВУЗ:
Составители:
67
mov [ScreenString],21
@@GetAddressOrCommand:
; Инициализировать переменные
; Обнулить счетчик цифр
mov [CharacterCounter],0
; Очистить строку
mov DI,offset AddressString
mov [byte ptr DS:DI],0
; Очистить позицию ввода (забить пробелами)
mov SI,offset SpaceString
call ShowString
; Установить курсор в позицию ввода
mov [ScreenColumn],47
mov AL,[CharacterCounter]
add [byte ptr ScreenColumn],AL
call SetCursorPosition
; Ввести цифру или команду
call GetChar
; Адрес или команда?
cmp AL,0
jz @@Command
; Введена первая цифра числа
; ВВОД АДРЕСА В ШЕСТНАДЦАТЕРИЧНОМ КОДЕ
@@Address:
; Проверка на диапазон '0'-'9'
cmp AL,'0'
jb @@AddressError
cmp AL,'9'
jbe @@WriteChar
; Проверка на диапазон 'A'-'F'
cmp AL,'A'
jb @@AddressError
cmp AL,'F'
jbe @@WriteChar
; Проверка на диапазон 'a'-'f'
cmp AL,'a'
jb @@AddressError
cmp AL,'f'
ja @@AddressError
@@WriteChar:
; Проверяем количество цифр
cmp [CharacterCounter],8
jae @@AddressError
inc [CharacterCounter]
; Записываем цифру в число
mov [DS:DI],AL
inc DI
; Передвинуть признак конца строки
; в следующий разряд
mov [byte ptr DS:DI],0
mov [ScreenString],21
@@GetAddressOrCommand:
; Инициализировать переменные
; Обнулить счетчик цифр
mov [CharacterCounter],0
; Очистить строку
mov DI,offset AddressString
mov [byte ptr DS:DI],0
; Очистить позицию ввода (забить пробелами)
mov SI,offset SpaceString
call ShowString
; Установить курсор в позицию ввода
mov [ScreenColumn],47
mov AL,[CharacterCounter]
add [byte ptr ScreenColumn],AL
call SetCursorPosition
; Ввести цифру или команду
call GetChar
; Адрес или команда?
cmp AL,0
jz @@Command
; Введена первая цифра числа
; ВВОД АДРЕСА В ШЕСТНАДЦАТЕРИЧНОМ КОДЕ
@@Address:
; Проверка на диапазон '0'-'9'
cmp AL,'0'
jb @@AddressError
cmp AL,'9'
jbe @@WriteChar
; Проверка на диапазон 'A'-'F'
cmp AL,'A'
jb @@AddressError
cmp AL,'F'
jbe @@WriteChar
; Проверка на диапазон 'a'-'f'
cmp AL,'a'
jb @@AddressError
cmp AL,'f'
ja @@AddressError
@@WriteChar:
; Проверяем количество цифр
cmp [CharacterCounter],8
jae @@AddressError
inc [CharacterCounter]
; Записываем цифру в число
mov [DS:DI],AL
inc DI
; Передвинуть признак конца строки
; в следующий разряд
mov [byte ptr DS:DI],0
67
Страницы
- « первая
- ‹ предыдущая
- …
- 65
- 66
- 67
- 68
- 69
- …
- следующая ›
- последняя »
