|
Ассемблер в примерах - Перевод символов в цифры
- Вопрос:
- Подскажите пожайлуста с помощью чего можно переводить символы в цифры. Например: мы набираем на клавиатуре 2 и 3. Они у нас в символьном виде, а нужно преоброзовать в численный вид.
- Ответ:
- Для первода символов в цифры десятичной системы достаточно применить к ним команду AND AL,0fh или SUB AL,30h .
Если вводить посимвольно число, то предлагаю воспользоваться такой п/программкой из приложения.
;в регистре DI будет искомое число на выходе из процедуры
;сейчас сбрасываем число
EnterNumber: xor di,di
;вводим без эхо, для реакции только на цифровые клавиши и "ВВОД"
NextNumber: mov ah,07
int 21h
;если нажата клавиша "ВВОД" заканчиваем ввод одного числа
cmp al,13
jz EnterStop
;если код нажатой клавиши меньше кода клавиши "0", то это не цифра
cmp al,'0'
jb NextNumber
;если код нажатой клавиши больше кода клавиши "9", то это не цифра
cmp al,'9'
ja NextNumber
;была нажата цифровая клавиша, выводим её символьное представление на экран
push ax
int 29h
pop ax
;получаем введенную цифру
and ax,0fh
;меняем местами регистры АХ и DI, т.е. последнюю введенную цифру и ранее введеное число
xchg ax,di
;умножаем ранее введеное число на 10
mov bx,10
xor dx,dx
mul bx
;теперь в DI введеное число
add di,ax
jmp short NextNumber
;была нажата клаввиша "ВВОД",
EnterStop:
;возврат из процедуры ввода числа
ret
| |