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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2009, 19:52   #1
Hesheit
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 12
По умолчанию Ассемблер в делфи

Таккая проблема - делаю вставку ассемблера в делфи которая считает такое уравнение a * b - c / d
Код:
if(CheckBox1.Checked=true) then begin a:=128+StrToInt(Edit1.Text); end
else  a:=StrToInt(Edit1.Text) ;
if(CheckBox2.Checked=true) then begin b:=128+StrToInt(Edit2.Text); end
else    b:=StrToInt(Edit2.Text) ;
if(CheckBox3.Checked=true) then begin c:=128+StrToInt(Edit3.Text); end
else    c:=StrToInt(Edit3.Text) ;
if(CheckBox4.Checked=true) then begin d:=128+StrToInt(Edit4.Text); end
else    d:=StrToInt(Edit4.Text);
asm
sub ax,ax
sub bx,bx
mov bl, b
mov al, a


imul bl
mov cx,ax

sub ax,ax
mov al, c

sub bx,bx
mov bl, d


idiv d

mov ah,0


sub cx,ax

mov rz, cx
end;
res:=rz  ;
  ShowMessage(IntToStr(res));
а, b , c ,d байтовые переменные. Так считает все нормуль - ошибка возникает когда одно или больше чисел отрицательное. Насколько я понял проблема в том что отрицательные числа представляються в дополнительном коде, но вот не шарю как с этим бороться...

Можите подкинуть идейку или может в чем другом ошибка, кроме днк=)
Hesheit вне форума Ответить с цитированием
Старый 07.05.2009, 23:03   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Цитата:
Насколько я понял проблема в том что отрицательные числа представляються в дополнительном коде
Да. Ты все верно понял
Цитата:
но вот не шарю как с этим бороться...
Про регистры для работы с отрицательными числами можно почитать Здесь
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 08.05.2009, 00:30   #3
Hesheit
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 12
По умолчанию

спасибо - почитаю
Hesheit вне форума Ответить с цитированием
Старый 08.05.2009, 11:27   #4
Hesheit
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 12
По умолчанию

нашел ошибку - оказалась таки в днк=)
просьба удалить тему
Hesheit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ассемблер farxad Помощь студентам 6 11.09.2016 14:19
ассемблер перевести на С++ rudolfe Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 10.03.2009 20:10
ассемблер и АМД gtn_freewlkr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 15 04.11.2008 22:34
Ассемблер InTest Фриланс 1 12.12.2007 02:05