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

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

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

Помогите найти ошибку. Есть код перевода числа в различные системы счисления в графическом режиме. При выводе выводит число задом наперед, например, ввел 543, на выходе получается 345. Хотя вроде делал через стек и все должно быть нормально.
Листинг программы
  1. .model tiny
  2. .code
  3. org 100h
  4. start:
  5. mov ax,4F02h ; videoregim 640*480
  6. mov bx,12h
  7. int 10h
  8. ;ввод числа
  9. mov si,10 ;работаем с десятичной нотацией
  10. mov di,0
  11. @aa:
  12. ; вводим число до нажатия клавиши "ВВОД"
  13. mov ah,01h
  14. int 21h
  15. cmp al,13 ; проверяем нажатие клавиши "ВВОД"
  16. jz a1 ; если клавиша нажата, то переходим на конец
  17. ; обработки ввода числа
  18. ; иначе выполняем следующие 8 пунктов
  19. sub al,'0' ; из кода ASCII получаем цифру
  20. xor ah,ah ; теперь значение ах равно значению al
  21. mov cx,ax ; копируем ах в сх
  22. mov ax,di ;записываем в ах введенное до текущей цифры число
  23. mul si ;умножаем его на 10, переходя тем самым в текущий
  24. ;разряд
  25. add ax,cx ;добавляем к числу текущую цифру
  26. mov di,ax ;сохраняем текущее число в di
  27. jmp @aa ; переходим на обработку следующего разряда
  28. a1:
  29. mov num,di ; сохраняем окончательное значение введенного числа
  30. ; в переменной "num"
  31. mov ah,02
  32. mov bh,0
  33. mov dh,1
  34. mov dl,0
  35. int 10h
  36. mov ax,num
  37. xor cx, cx
  38. mov bx, 10 ; основание сс.
  39. oi2:
  40. xor dx,dx
  41. div bx
  42. push dx
  43. inc cx
  44. test ax, ax
  45. jnz oi2
  46. ; Теперь приступим к выводу.
  47. mov ah, 09h
  48. mov bh,0
  49. oi3:
  50. pop dx
  51. mov al,dl
  52. add al, '0'
  53. int 10h
  54. ; Повторим ровно столько раз, сколько цифр насчитали.
  55. loop oi3
  56.  
  57. mov ah,01h ожидание нажатия на клавишу
  58. int 21h
  59. mov ax,3
  60. int 10h
  61. ret
  62. num dw 0
  63. end start

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

textual
Листинг программы
  1. A   db 0,0,0,1,1,0,0,0
  2.        0,0,1,1,1,1,0,0
  3.        0,1,1,0,0,1,1,0
  4.        1,1,0,0,0,0,1,1
  5.        1,1,1,1,1,1,1,1
  6.        1,1,1,1,1,1,1,1
  7.        1,1,0,0,0,0,1,1
  8.        1,1,0,0,0,0,1,1

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут