|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.05.2016, 21:26 | #1 |
Новичок
Джуниор
Регистрация: 30.08.2015
Сообщений: 1
|
Выводит число задом наперед
Помогите найти ошибку. Есть код перевода числа в различные системы счисления в графическом режиме. При выводе выводит число задом наперед, например, ввел 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 ax,num xor bx,bx mov bx,32 call OutInt ret OutInt proc near xor cx, cx oi2: xor dx,dx div bx push dx inc cx test ax, ax jnz oi2 ; Теперь приступим к выводу. oi3: mov ah, 09h mov bl,1 mov bh,0 pop dx mov al,dl cmp al,9 jbe oi4 add al,7 oi4: add al, '0' int 10h ; Повторим ровно столько раз, сколько цифр насчитали. loop oi3 ret OutInt endp ; задание констант num dw '0' end start |
29.05.2016, 22:08 | #2 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
morhaint, скачиваешь отладчик, открываешь в нём свою программу и смотришь на регистры. Ошибки сразу на лицо.. Если лень возиться с отладчиком, то можешь использовать такие функции ввода/вывода чисел в различных системах счислений:
Код:
Нашедшего выход - затаптывают первым..
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Каждое слово строки вывести задом наперед | DAn9I | Общие вопросы C/C++ | 4 | 14.04.2014 22:51 |
Не выводит нужное число | Mike26rus | Общие вопросы C/C++ | 7 | 09.12.2011 16:36 |
Текст "Задом наперед" | Irzhi | Microsoft Office Excel | 6 | 15.06.2011 18:55 |
Программа Вводит символьную строку и число N и выводит строку, состоящую из первых N символов (С++) | Yulai | Помощь студентам | 1 | 11.05.2009 11:39 |
Помогите сделать программу c выводом строки задом наперед(Pascal) | Batman10000 | Помощь студентам | 2 | 14.12.2008 17:54 |