Учебник по ассемблеру (ASM)
 

Ассемблер в примерах - Перевод символов в цифры

Вопрос:
Подскажите пожайлуста с помощью чего можно переводить символы в цифры. Например: мы набираем на клавиатуре 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


   Вперёд
   Содержание