Выводит число задом наперед - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите найти ошибку. Есть код перевода числа в различные системы счисления в графическом режиме. При выводе выводит число задом наперед, например, ввел 543, на выходе получается 345. Хотя вроде делал через стек и все должно быть нормально.
.model tiny
.code
org 100h  
start:
 
mov ax,4F02h ; videoregim 640*480
mov bx,12h
int 10h  
 
;ввод числа
   mov si,10        ;работаем с десятичной нотацией
   mov di,0
@aa:
; вводим число до нажатия клавиши "ВВОД"
   mov ah,01h
   int 21h
   cmp al,13       ; проверяем нажатие клавиши "ВВОД"
   jz a1           ; если клавиша нажата, то переходим на конец
                   ; обработки ввода числа
                   ; иначе выполняем следующие 8 пунктов
 
   sub al,'0'      ; из кода ASCII получаем цифру
   xor ah,ah       ; теперь значение ах равно значению al
   mov cx,ax       ; копируем ах в сх
   mov ax,di       ;записываем в ах введенное до текущей цифры число
   mul si          ;умножаем его на 10, переходя тем самым в текущий
                   ;разряд
   add ax,cx       ;добавляем к числу текущую цифру
   mov di,ax       ;сохраняем текущее число в di
   jmp @aa         ; переходим на обработку следующего разряда
a1:
   mov num,di      ; сохраняем окончательное значение введенного числа
                   ; в переменной "num"
 
mov ah,02
mov bh,0
mov dh,1
mov dl,0
int 10h
 
mov ax,num
xor     cx, cx
mov     bx, 10 ; основание сс.
oi2:
    xor     dx,dx
    div     bx
    push    dx
    inc     cx
    test    ax, ax
    jnz     oi2
 
; Теперь приступим к выводу.
    mov     ah, 09h
    mov bh,0
    
oi3:
    pop     dx
    mov al,dl
    add     al, '0'
    int     10h
; Повторим ровно столько раз, сколько цифр насчитали.
    loop    oi3

mov ah,01h ожидание нажатия на клавишу
int 21h
mov ax,3
int 10h
 
ret
 
num dw 0
 
end start

Решение задачи: «Выводит число задом наперед»

textual
Листинг программы
A   db 0,0,0,1,1,0,0,0
       0,0,1,1,1,1,0,0
       0,1,1,0,0,1,1,0
       1,1,0,0,0,0,1,1
       1,1,1,1,1,1,1,1
       1,1,1,1,1,1,1,1
       1,1,0,0,0,0,1,1
       1,1,0,0,0,0,1,1

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5