Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 15:25   #1
Shamonya
Пользователь
 
Регистрация: 05.11.2010
Сообщений: 17
По умолчанию

Люди помогите пожалуйста написать прогу перевода двоичных числе на вершине стека сопроцессора в десятичный вид, неделю пытаюсь ничего не выходит((
Буду очень благодарен

Можно какнить асемблер заставить считать число на вершине стека сопроцессора двоиным числом какнить?

Последний раз редактировалось Stilet; 16.11.2010 в 20:20.
Shamonya вне форума Ответить с цитированием
Старый 16.11.2010, 15:31   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Shamonya
и что ты за неделю наваял? "Огласите весь список пожалуйста" (С)
Mikl___ вне форума Ответить с цитированием
Старый 16.11.2010, 15:53   #3
Shamonya
Пользователь
 
Регистрация: 05.11.2010
Сообщений: 17
По умолчанию

Ну моё число по идеи находиться на вершине ну вот поидеи это процедура перевода
Код:
Perevod proc near
        push    ax
        push    cx
        push    dx
        push    bp
        mov     bp, sp
        push    10
        push    2  
; Пояснение далее пойдёт на примере.   ; ST(0) ST(1) ST(2) ST(3) ...
; Отделим целую часть от дробной.      ; 73.25 ... что-то не наше
@oa1:   fld1                           ;  1    73.25 ...
        fld     st(1)                  ; 73.25  1    73.25 ...
; Остаток от деления на единицу даст дробную часть.
        fprem                          ;  0.25  1    73.25 ...

; Если вычесть её из исходного числа, получится целая часть.
        fsub    st(2), st              ;  0.25  1    73    ...     
        fstp    ost                    ;  1     73
        fld1                           ;  1     1     73
        fldZ                           ;  0     1     1     73
        fxch    st(3)                  ; 73     1     1     0
     ;   
; Сначала поработаем с целой частью. Считать количество цифр будем в CX.
      ;  xor     cx, cx
; Поделим целую часть на десять,
@o2:    fidiv   word ptr [bp - 2]       ;  7.3   1     1    0 
        fxch    st(1)                   ;  1     7.3   1    0
        fld     st(1)                   ;  7.3   1     7.3  1    0 
 ;отделим дробную часть - очередную с права цифру целой части исходного числа,-
       fprem                          ;  0.3   1     7.3  1     0 
 ;от чатсного оставим только целую часть
        fsub    st(2), st              ;  0.3   1     7    1     0    
; и сохраним цифру
        fimul   word ptr [bp - 2]      ;  3     1     7    1     0 
        fxch st(3)                     ;  1     1     7    3     0
        fmul st(3),st
        fxch st(3)                     ;    
        fadd st(4),st                  ;  3     1    7    1     3
        fxch st(3)
        fimul word ptr [bp-4]  
        fxch st(3)   
        fstp st(0)                     ;  
 ;в стэке.
        fxch    st(1)                  ;  7     1     2       3
; Так будем повторять, пока от целой части не останется ноль.
        ftst
        fstsw   ax
        sahf
        jnz     short @o2
;fstp st(0)
;fstp st(0)
fstp st(0)


; Точнее, стэков.

        leave
        pop     si
        pop     dx
        pop     ax
        ret
endp perevod
Shamonya вне форума Ответить с цитированием
Старый 16.11.2010, 16:47   #4
Shamonya
Пользователь
 
Регистрация: 05.11.2010
Сообщений: 17
По умолчанию

АААААААА ЗАРАБОТАЛО!!!!!!!!
ПРОБЛЕма была в том что перекап регистров был
Shamonya вне форума Ответить с цитированием
Старый 16.11.2010, 20:21   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
перекап регистров был
Wow! это вкуда регистров?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2010, 05:06   #6
Shamonya
Пользователь
 
Регистрация: 05.11.2010
Сообщений: 17
По умолчанию

На ввод на вывод на преобразование везде нужны были.
Вопрос почему когда слишком много регистров то выводит бредядинку
Shamonya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бьюсь с кодом смайлов сла JavaScript, Ajax 3 07.09.2010 09:02
План работ на неделю ann200 Microsoft Office Access 2 04.04.2010 14:26
Народ зацените задачу!!! неделю писал. Mclaren Паскаль, Turbo Pascal, PascalABC.NET 9 08.06.2009 23:12
ребята нашол интересную задачу уже неделю думаю на даюсь на вашу помощь программа на Jave Лучик2009 Помощь студентам 8 09.05.2009 23:12
DDE Delphi-Delphi сутки бьюсь... Ash Общие вопросы Delphi 4 28.10.2008 02:24