Прежде всего, это домашнее задание.
Я пытаюсь прочитать 5-значное число в регистре bx.Предполагается, что число не превышает 65535 (16 бит).Ниже описано, как я пытаюсь это сделать.
Однако, когда я пытаюсь напечатать число, я печатаю только самую последнюю введенную цифру.Это заставляет меня предположить, что когда я добавляю другой номер в bx, он перезаписывает предыдущий номер, но я не вижу проблемы.Любая помощь будет оценена, я почти уверен, что это что-то маленькое, что я пропускаю: - /
mov cx,0x05 ; loop 5 times
mov bx,0 ; clear the register we are going to store our result in
mov dx,10 ; set our divisor to 10
read:
mov ah,0x01 ; read a character function
int 0x21 ; store the character in al
sub al,0x30 ; convert ascii number to its decimal equivalent
and ax,0x000F ; set higher bits of ax to 0, so we are left with the decimal
push ax ; store the number on the stack, this is the single digit that was typed
; at this point we have read the char, converted it to decimal, and pushed it onto the stack
mov ax,bx ; move our total into ax
mul dx ; multiply our total by 10, to shift it right 1
pop bx ; pop our single digit into bx
add bx,ax ; add our total to bx
loop read ; read another char