Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - [решено] Помогите разобраться с программой на ассемблере

Ответить
Настройки темы
Assm - [решено] Помогите разобраться с программой на ассемблере

Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток. Есть написанная программа, направленная на возведение числа в степень с использованием возможностей математического сопроцессора. Код взят с какой-то методички. Вопрос заключается в том, почему она корректно не запускается, и что можно сделать, чтобы она всё-таки запустилась? Компилировал через Tasm и линковал с помощью Tlink с ключами /x /3. Код программы прикладываю. Буду благодарен всем откликнувшимся.

Цитата:
.286
.model tiny
.code
org 100h
start:
.386
finit ;
fldln2;st(0):=ln(2)
fild X;st(0):=X, st(1):=ln(2)
fyl2x;st(0):=st(1)*log2(st(0))=ln(2)*log2(x)
fimul dword ptr Y;st(0):=ln(2)*log2(x)*Y
FLDL2E;st(0):=log2(e) st(1):=ln(2)*log2(x)*Y
FMULP ST(1),ST(0);st(0):=ln(2)*log2(x)*Y*log2(e)
FLD ST(0);copy the logarithm; st(1):=st(0):=ln(2)*log2(x)*Y*log2(e)
FRNDINT;keep only the characteristic
FSUB ST(1),ST(0);keeps only the mantissa
FXCH ST(1);get the mantissa on top
F2XM1;->2^(mantissa)-1
FLD1;st(0)=1.0
FADDP ST(1),ST(0);add 1 back
;the number must now be readjusted for the characteristic of the logarithm
FSCALE;scale it with the characteristic
mov edi,offset buffer
fbstp Data_BCD ;извлечь число в коде BCD
mov ecx,9 ;в десятом байте информация о знаке числа
b2: cmp byte ptr [ecx-1+Data_BCD],0
jnz b3
loop b2 ;пропускаем незначащие (нулевые) разряды слева
b3: mov al,byte ptr [ecx-1+Data_BCD];загружаем первую значащую пару разрядов
cmp al,9 ;если в старшей тетраде 0 - пропустить старшую тетраду
ja b4
add al,30h ;младшую тетраду переводим в ASCII
stosb
dec ecx
b4: xor ax,ax ;распаковываем остальные разряды числа
mov al,byte ptr [ecx-1+Data_BCD]
shl ax,4 ;выделяем старшую и младшую тетрады
shr al,4
add ax,3030h ;переводим в ASCII-код
xchg ah,al
stosw
loop b4
a2: mov ax,3;очищаю экран
int 10h
mov ah,9; вывожу результат
mov edx,offset buffer
int 21h
mov ah,0; жду нажатия на любую клавишу
int 16h
retn; выхожу из программы
buffer db 25 dup ('$')
X dd 81
Y dd 9;81^9=22876792454961=14CE6B167F31h
Data_BCD dt 0;число в BCD-формате
end start

Отправлено: 10:40, 23-12-2013

 

Старожил


Сообщения: 283
Благодарности: 53

Профиль | Отправить PM | Цитировать


Shenochek, пожалуйста, желаю здать на пятерку

Отправлено: 21:19, 23-12-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - [решено] Помогите разобраться с программой на ассемблере

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помогите, плз, разобраться с программой на shell sade Программирование в *nix 1 26-05-2010 23:47
Помогите с программой на shell pogo Программирование в *nix 4 21-05-2010 12:24
Assm - Помогите решить задание на ассемблере Wild_cat Программирование и базы данных 3 10-03-2009 09:49
программа на Ассемблере himik Программирование и базы данных 9 22-11-2003 04:40
Помгите разобраться с программой TarasBulba Программирование и базы данных 1 30-08-2002 22:26




 
Переход