Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 66 стр.

UptoLike

Составители: 

66
and AL,AL
jz @@h4
; Проверка на диапазон '0'-'9'
cmp AL,'0'
jb @@Error
cmp AL,'9'
ja @@h1
sub AL,'0'
jmp short @@h3
@@h1: ; Проверка на диапазон 'A'-'F'
cmp AL,'A'
jb @@Error
cmp AL,'F'
ja @@h2
sub AL,'A'-10
jmp short @@h3
@@h2: ; Проверка на диапазон 'a'-'f'
cmp AL,'a'
jb @@Error
cmp AL,'f'
ja @@Error
sub AL,'a'-10
@@h3: ; Дописать к результату
; очередные 4 разряда справа
shl EBX,4
or BL,AL
inc CX
cmp CX,8
jbe @@h0
; Если в числе больше 8 цифр - ошибка
jmp short @@Error
@@h4: ; Успешное завершение - результат в EAX
mov EAX,EBX
jmp short @@End
@@Error:; Ошибка - обнулить результат
xor EAX,EAX
@@End: pop SI
pop CX
pop EBX
ret
ENDP HexToBin32
;************************************************
;* ПРИНЯТЬ С КЛАВИАТУРЫ НОВЫЙ АДРЕС ИЛИ КОМАНДУ *
;************************************************
PROC GetAddressOrCommand near
pushad
; Использовать при выводе белый цвет, черный фон
mov [TextColorAndBackground],WHITE
; Установить номер строки поля ввода
        and     AL,AL
        jz      @@h4
        ; Проверка на диапазон '0'-'9'
        cmp     AL,'0'
        jb      @@Error
        cmp     AL,'9'
        ja      @@h1
        sub     AL,'0'
        jmp short @@h3
@@h1:   ; Проверка на диапазон 'A'-'F'
        cmp     AL,'A'
        jb      @@Error
        cmp     AL,'F'
        ja      @@h2
        sub     AL,'A'-10
        jmp short @@h3
@@h2:   ; Проверка на диапазон 'a'-'f'
        cmp     AL,'a'
        jb      @@Error
        cmp     AL,'f'
        ja      @@Error
        sub     AL,'a'-10
@@h3:   ; Дописать к результату
        ; очередные 4 разряда справа
        shl     EBX,4
        or      BL,AL
        inc     CX
        cmp     CX,8
        jbe     @@h0
        ; Если в числе больше 8 цифр - ошибка
        jmp short @@Error
@@h4:   ; Успешное завершение - результат в EAX
        mov     EAX,EBX
        jmp short @@End
@@Error:; Ошибка - обнулить результат
        xor     EAX,EAX
@@End: pop      SI
        pop     CX
        pop     EBX
        ret
ENDP HexToBin32


;************************************************
;* ПРИНЯТЬ С КЛАВИАТУРЫ НОВЫЙ АДРЕС ИЛИ КОМАНДУ *
;************************************************
PROC GetAddressOrCommand near
        pushad
        ; Использовать при выводе белый цвет, черный фон
        mov     [TextColorAndBackground],WHITE
        ; Установить номер строки поля ввода


                            66