Форум программистов Контакты:
О проблемах с регистрацией, почтой и по другим вопросам пишите сюда - post@programmersforum.ru
По необходимости будем регистрировать вручную. И проверяйте папку спам!
Главная  |  Правила форума  |  Исходники Delphi  |  Основы Delphi  |  Блог программистов  |  Рассылка  |  Повторная активизация e-mail  | 

Вернуться   Форум программистов > Новички в программировании > Помощь студентам

Ответ
 
Опции темы
Старый 27.06.2010, 15:31   #1
McDoC
 
Регистрация: 04.05.2010
Сообщений: 7
Репутация: 10
По умолчанию Перевод из dec в hex

Здравствуйте, возникла проблема с написанием программы на ассемблере, ниже привожу ее описание:
Цитата:
По запросу программы с клавиатуры вводиться последовательность целых трехзначных положительных десятичных чисел, разделенных пробелами. Ввод последовательности заканчивается нажатием <Enter>. Программа выводит последовательность этих же чисел, но записанных в обратном порядке и в шестнадцатеричной системе счисления.
Помогите написать процедуру перевода из десятичной СС в шестнадцатеричную СС на аасемблере.
McDoC вне форума   Ответить с цитированием
Старый 27.06.2010, 15:59   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 4,788
Репутация: 492

icq: 216409213
По умолчанию

Перевод туда-сюда был сто раз. Поиском религия не позволяет пользоваться?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 27.06.2010, 16:48   #3
McDoC
 
Регистрация: 04.05.2010
Сообщений: 7
Репутация: 10
Плохо

Цитата:
Сообщение от p51x Посмотреть сообщение
Перевод туда-сюда был сто раз. Поиском религия не позволяет пользоваться?
Спасибо за подсказку! Только нет подходящей темы. Полно тем, как перевести из одной системы счисления в другую в Delphi или на C++. Если была нужная тема, эту бы я не создавал.
McDoC вне форума   Ответить с цитированием
Старый 27.06.2010, 18:40   #4
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 4,788
Репутация: 492

icq: 216409213
По умолчанию

http://www.google.ru/search?hl=ru&ne...=&oq=&gs_rfai=

Там куча добра.... Хотя и пишется сие не сложно.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 27.06.2010, 19:55   #5
DeKot
Профессионал
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Адрес: Молдова
Сообщений: 1,981
Репутация: 884
По умолчанию

Независимо от языка - автор, Вы алгоритм перевода из одной системы в другую представляете? Вот отсюда надо и плясать. Толку то, если Вам сейчас скинут код ( не важно, на asm, pascal или СИ), не понимая принципа Вы завтра же это все забудете.
__________________
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума   Ответить с цитированием
Старый 28.06.2010, 12:10   #6
McDoC
 
Регистрация: 04.05.2010
Сообщений: 7
Репутация: 10
Восклицание

Цитата:
Сообщение от p51x Посмотреть сообщение
http://www.google.ru/search?hl=ru&ne...=&oq=&gs_rfai=

Там куча добра.... Хотя и пишется сие не сложно.
Я опять повторюсь, если бы были подходящие темы в инете эту бы тему я не создавал.

Цитата:
Сообщение от DeKot Посмотреть сообщение
Независимо от языка - автор, Вы алгоритм перевода из одной системы в другую представляете? Вот отсюда надо и плясать. Толку то, если Вам сейчас скинут код ( не важно, на asm, pascal или СИ), не понимая принципа Вы завтра же это все забудете.
Кажется этот раздел называется "Помощь студентам", а не раздел "Пустой болтовни".Я в программирование новичок, так что не можешь помочь, тогда не пеши и не умничай.
McDoC вне форума   Ответить с цитированием
Старый 28.06.2010, 12:17   #7
Utkin
Реинкарнирован
Профессионал
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Адрес: DuckBurg
Сообщений: 15,058
Репутация: 3308
По умолчанию

Хорошо, я помогу тебе . Давай свои наработки и соображения.
__________________
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума   Ответить с цитированием
Старый 29.06.2010, 17:21   #8
McDoC
 
Регистрация: 04.05.2010
Сообщений: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Хорошо, я помогу тебе . Давай свои наработки и соображения.
Спасибо, что согласился помочь. Чтобы перевести из одной системы счисления в другую нужно разделить на число той системы, в которою переводишь. Пример из hex в dec:
Код:

                  MOV  AX,DX                  ;Выводимое число в регисте AX
                  XOR  CX,CX          ;Обнулим CX
                  MOV  BX,10          ;Делим на 10
Not_zero:         XOR  DX,DX          ;Очистим регистр dx
                  INC  CX                ;Увеличиваем содержимое CX на 1
                  DIV  BX                ;Делим 
                  PUSH DX               ;Сохраним цифру
                  OR   AX,AX            ;Остался 0?
                  JNE  Not_zero         ;нет -> продолжим 
                  MOV  AH,2h            ;Функция вывода символа
Write_dec:        POP  DX                 ;Восстановим цифру
                  DEC  CX                 ;Уменьшаем содержимое CX на 1
                  ADD  DL,'0'             ;Преобразуем число в цифру
                  INT  21h                ;Выведем цифру на экран
                  CMP  CX,0              ;Остался 0?
                  JA   Write_dec        ;нет -> продолжим
                  POP  AX                ;Извлекаем АX из стека

Таким же методом перевести из dec в hex не получается. В моем случае вводится трехзначное десятичное число, если использовать этот код ввода:
Код:

Test_Read_dec    PROC  NEAR
                            mov  cx,03
N1:                       call Read_dec
                            loop N1
                            int 20h         
Test_write_hex   ENDP
;  
Read_dec    PROC  NEAR
                   push cx
                   mov  cx,04 
M1:                mov  ah,08
                   int  21h
                   cmp  al,30h
                   jb   M2
                   cmp  al,39h
                   ja   M2
                   sub  al,30h
                   clc 
                   jmp  M2
M2:                stc
                   jc   M1
M3:                shl  dx,cx
                   add  dl,al
                   pop  cx
                   ret               
Read_dec    ENDP

В DX получаем введенное число. Делить на 16 нет смысла. Может при вводе, полученный код ASCII преобразовать как-то по-другому?

Последний раз редактировалось McDoC; 30.06.2010 в 08:00.
McDoC вне форума   Ответить с цитированием
Старый 30.06.2010, 06:50   #9
Utkin
Реинкарнирован
Профессионал
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Адрес: DuckBurg
Сообщений: 15,058
Репутация: 3308
По умолчанию

Цитата:
Сообщение от McDoC Посмотреть сообщение
В DX получаем введенное число. Делить на 16 нет смысла.
Почему? Вот образец:
Код:

 mov ax,3136h ;ax=3136h
 and ax,0f0fh ;ax=0106h
 aаd ;al=10h — получили его двоичный эквивалент

(число в символьном виде)
__________________
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 30.06.2010 в 06:57.
Utkin вне форума   Ответить с цитированием
Старый 30.06.2010, 07:58   #10
McDoC
 
Регистрация: 04.05.2010
Сообщений: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Код:

 mov ax,3136h ;ax=3136h
 and ax,0f0fh ;ax=0106h
 aаd ;al=10h — получили его двоичный эквивалент

(число в символьном виде)
А можно пояснить последнею строчку кода, что за операция aad, что она делает и что с результатом делать дальше?
McDoC вне форума   Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Dec to Hex to Dec translator Alex Cones Обсуждение программ 0 16.05.2010 19:05
String[3] => Hex => Dec Alex Cones Общие вопросы Delphi 5 21.03.2010 17:07
Dec to Hex - пример использования Roof Общие вопросы Delphi 8 03.08.2008 18:40
HEX ->DEC 69_rus Assembler 1 13.06.2007 19:44




16:43.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.

Forex с Admiral Markets — это надежно


Работа на Forex с 2000 года. Очное и дистанционное обучение. Выгодные условия.
магазин горящих туров


более 1000 горящих предложений ежедневно
Бэбиблог - соц сеть для будущих мам


RusProfile.ru


Справочник российских юридических лиц и организаций.