Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод из HEX в DEC систему, Помогите! 
:(
    Опции темы
MacTep
Дата 13.1.2004, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Ребят! Помогите, пожалуйста, сделать следующее. Пусть в регистре ax, например, дано какое-либо число шестнадцатиричное (например ax=1Ah). Получить и вывести на экран значение этого числа в десятичной системе счисления. То есть вывести на экран число 26. И то же самое нужно сделать для восьмеричного вида числа. Поможете?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Chingachguk
Дата 13.1.2004, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата

.8087
text segment byte
assume cs:text,ds:text
org 100h
begin:
  ; Форматируем
  mov  ax,1Ah ; 0666
  call GetDecimalStr
  ; Выводим на печать
  mov  dx,offset DecNum
  mov  ah,09h
  int  21h
  ret

; Это к делу не относится ;)

  fld  x
  fmul y

  fmul exp

  fistp res
 
  ret
x  dd  0.11
y  dd  11.50
exp dd  100.00
res dd ?

GetDecimalStr:
; Пусть в ax будет число, которое надо вывести как десятичное
; Форматируем его, результат записываем в строку
  mov  cx,10000 ; Начальный делитель
  mov  di,offset DecNum ; Адрес приемника
  cld  ; Флаг направления для команды stosb
@@GetDec:
  xor  dx,dx
  div  cx ; dx:ax / cx -> ax, остаток в dx
  add  al,'0' ; Приводим к ASCII
  stosb ; Записываем в выходную строку
  push dx ; Запоминаем остаток
  xor  dx,dx
  mov  ax,cx
  mov  cx,10
  div  cx  ; Делим делитель на 10
  mov  cx,ax
  pop  ax ; Вспоминаем делимое
  test cx,cx ; Делитель стал равен 0 ?
  jnz  @@GetDec
  ret
DecNum db '?confused.gif?',13,10,'$'
text ends
end begin



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
MacTep
Дата 13.1.2004, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



У меня получилось перевести в "чистый асм" и вывести число в десятичной системе. А вот в восьмеричной не допру как сделать! Help!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Chingachguk
Дата 14.1.2004, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Очевидно, в 8-ми ричной (бывает же такое, прости господи) основанием является не 10, а 8. Следовательно, надо делить на степени 8: 8^0=1,8^1=8...


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Serzh
Дата 14.1.2004, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 30.9.2003
Где: SPb

Репутация: нет
Всего: нет



да зачем делить для восьмеричной то?
если можно просто брать в начале
(8) 2 старших бита
(16) старший бит
(32) 2 старших бита
, а потом по три бита.
PM MAIL WWW ICQ   Вверх
MacTep
Дата 17.1.2004, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Chingachguk, ты прав! Этоя все понимаю. Но, пожалуйста, не надо голых слов! Сделай код на чистом асме и все дела! Зачем демагогию разводить!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
oleg1973
Дата 19.1.2004, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 7
Всего: 34



а может и ключ от квартиры где $ лежат?


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
MacTep
Дата 19.1.2004, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Нет, ключ от квартиры, где $ лежат, у меня есть. :-) А вот кода на асме пока не имею. Помогите! Благодарю!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Serzh
Дата 20.1.2004, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 30.9.2003
Где: SPb

Репутация: нет
Всего: нет



Код
.8087
.286
text segment byte
assume cs:text,ds:text
org 100h
begin:
; Форматируем
 mov  ax,1Ah; 0666
 call GetOctStr
; Выводим на печать
 mov  dx,offset OctNum
 mov  ah,09h
 int  21h
 ret

GetOctStr:
; Пусть в ax будет число, которое надо вывести как восьмеричное
; Форматируем его, результат записываем в строку
 mov  di,offset OctNum + 6; Адрес приемника
 std; Флаг направления для команды stosb
 mov cx, 6
@@GetOct:
 push ax
 and al, 7
 add  al,'0'; Приводим к ASCII
 stosb; Записываем в выходную строку
 pop ax
 shr ax, 3
 loop @@GetDec
 ret
OctNum db '??????',13,10,'$'
text ends
end begin

вроде должна работать. я не проверял - мне влом.
если не правильно, то ктонить неленивый поправит наверное. :)

Это сообщение отредактировал(а) Serzh - 20.1.2004, 01:59
PM MAIL WWW ICQ   Вверх
MacTep
Дата 20.1.2004, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Благодарю, Serzh, за прогу! Попробую сделать так, чтобы работала! smile.gif


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
69_rus
Дата 13.6.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 13.6.2007

Репутация: нет
Всего: нет




Здравствуйте, уважаемые мудрецы-програмеры.Прошу подсказать, как в ASM реализовать перевод
чисел из шест. системы в десятичную? Я сумел намучить только ввод чисел. Адальше как?само преобразование?
Код

CODESG  SEGMENT PARA 'Code'
ASSUME  CS:CODESG,DS:CODESG         
 
MAIN PROC NEAR 

MOV AX,CS
MOV DS,AX
A: MOV AH,0Ah
MOV DX,offset KEYB_MAX
INT 21H
MOV AL,KEYB_LEN
CMP AL,0
JZ A
MOV CL,KEYB_LEN
MOV BX,offset KEYB_DATA
A2: MOV AH,2
MOV DL,DS:[BX]
INT 21H
INC BX
LOOP A2

c: jmp c
ret

RET
MAIN ENDP
KEYB_MAX DB 5
KEYB_LEN DB ?
KEYB_DATA DB 6 DUP(?)
CODESG  ENDS
END

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1138 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.