Будем принимать символы с клавиатуры с помощью функции 1 прерывания 21h. Дополним наш объектный модуль mylib.obj подпрограммами ввода десятичных и восьмеричных чисел. Нам понадобится команда умножения целых чисел
mul si ; dx : ax = ax * si
записанных в ax и si, результат которой будет записан в регистровую пару dx:ax, в dx – старшие, а в ax – младшие разряды результата. В модуле mylib.asm надо добавить строку
public get
и написать следующий текст:
< 1 > get proc ;ввод десятичного числа в bx
< 2 > mov bx,0 ;очистка bx
< 3 > mov si,10 ;десятичное число
< 4 > mov cx,5 ;пять цифр
< 5 > next:
< 6 > mov ah,1 ;ввод символа
< 7 > int 21h ;с клавиатуры в al
< 8 > cmp al,’ ‘ ;конец ввода — пробел
< 9 > je back
< 10 > mov ah,0
< 11 > and al,00001111b ;значение цифры
< 12 > mov di,ax ;сохранить ax
< 13 > mov ax,bx ;умножить bx
< 14 > mul si ;на 10
< 15 > add ax,di ;значение bx*10+цифра
< 16 > mov bx,ax ;записать bx
< 17 > loop next
< 18 > back: ;в bx значение
< 19 > ret ;введенного числа
< 20 > get endp