Я работаю над программой для сохранения пользовательского ввода в виде шестнадцатеричного значения в AL.Если пользователь вводит 9, а затем 4, я хочу в конечном итоге сохранить 94h в AL.Эта часть работает.Теперь, если пользователь вводит сначала B, а затем 4, я хочу сохранить B4h в AL.Вот где я застрял.Я новичок в сборке, так что не бейте меня слишком сильно - я знаю, что это не красиво!Проблема, с которой я сталкиваюсь, состоит в том, что когда у меня будет 0Bh в DH и 04h в DL, как бы я связал их, чтобы получить B4h?
Примечание: я не закончил с инструкциями прыжка, и я знаю, что мне нужно закончить их.
ReadHexByte proc
call ReadChar
cmp al, 39h
jbe number
cmp al, 41h
jz letter_a
cmp al, 42h
jz letter_b
cmp al, 43h
jz letter_c
cmp al, 44h
jz letter_d
cmp al, 45h
jz letter_e
cmp al, 46h
jz letter_f
number: mov dh, al
sub dh, 30h
shl dh, 4
call ReadChar
sub al, 30h
add al, dh
letter_a: mov dh, 0Ah
shr dh, 4
call ReadChar
sub al, 30h
add al, dh
letter_b: mov dh, 0Bh
call ReadChar
sub al, 30h
letter_c: mov dh, 0Ch
call ReadChar
sub al, 30h
add al, dh
letter_d: mov dh, 0Dh
call ReadChar
sub al, 30h
add al, dh
letter_e: mov dh, 0Eh
call ReadChar
sub al, 30h
add al, dh
letter_f: mov dh, 0Fh
call ReadChar
sub al, 30h
add al, dh
ReadHexByte endp