ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »