Нужно в общем ввести 3х значное число. Получился такой код (компилятор MASM) При проверке результат неточный к примеру вводишь 253, а в регистре dx 243 или 263 В чем ошибка? Код (Text): .model small .code start: mov ah,1 int 21h sub al,30h mov cl,al int 21h sub al,30h mov bl,al mov al,cl mov ah,0 mov bl,10 mul bl add ax,cx mov dx,0 mov bx,10 mul bx push ax mov ah,1 int 21h sub al,30h mov dl,al pop ax add ax,dx mov dx,ax mov ah,4Ch int 21 end start
Сам разобрался) Код (Text): .model small .code start: mov ah,1 int 21h sub al,30h mov cl,al int 21h sub al,30h mov bl,al mov ah,0 mov ax,cx push bx mov bl,10 mul bl mov ch,0 pop bx add ax,bx mov dx,0 mov bx,10 mul bx push ax mov ah,1 int 21h sub al,30h mov dl,al pop ax add ax,dx mov dx,ax mov ah,4Ch int 21 end start
попробуйте так Код (Text): .model small .code start: ; вводим старшую чифру mov ah, 8 ; если надо подтверждать введенные данные (ввод данных с echo), то ah должно быть равно 1, но не везде почему-то работает и лучше использовать ax=0C01h (с очисткой буфера клавиатуры) int 21h ; получаем из ASCII число sub al, 48 ; сохраняем в ch mov ch, al ; вводим среднюю цифру int 21h ; получаем из ASCII число sub al, 48 ; сохраняем в cl mov cl, al ; вводим младшую цифру int 21h ; получаем из ASCII число sub al, 48 ; ah=средняя цифрв mov ah, cl ; al=ah*10+al ; ah=0 aad ; если такой команды не знаете, то просто раскомментируйте следующий код и уберите неизвестную команду ; add ah, ah ; ah=ah*2 ; add ah, ah ; ah=ah*4 ; add ah, cl ; ah=ah*5 ; add ah, ah ; ah=ah*10 ; add al, ah ; al=ah*10+al ; sub ah, ah ; ah=0 ; cl=средняя цифра*10+младшая цифра mov cl, al ; al=старшая цифра mov al, ch ; ch=100 mov ch, 100 ; ax=старшая цифра*100 mul ch ; cx=средняя цифра*10+младшая цифра mov ch, 0 ; ax=старшая цифра*100+средняя цифра*10+младшая цифра add ax, cx mov ah,4Ch int 21 end start