Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
11:37
3907
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->

АвторПроблема с ассемблером
Есть уравнение:
s019.radikal.ru/i620/1210/2b/2a8e6e86cf84.jpg
Вот его решение на ассемблере в delphi:
[color=#92f9a7]program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils, math;

var y,b,a:integer;
begin
readln(a,b);
asm
mov eax, a
mov edx, 7
cdq
div eax
mov ebx, eax
mov eax, b
mov edx, 11
cdq
div eax
mov ecx, eax
add ecx, ebx
add ecx, 12{Chislitel rabotaet. rezult in ECX}
mov edx, a
add edx, b //rez in EDX
mov eax, 17
add eax, b // rez in EAX
cdq
div eax
mov edx, eax
mov eax, ecx
cdq
div eax
mov y, eax
end;
writeln(y);
readln;
end.
[/color]

Числитель работает, а знаменатель, по непонятным мне причинам, вычисляется не правильно. Пытался найти ошибку, но к сожалению безуспешно
Прошу помощи у вас...
Извиняюсь, по привычке вставил теги цвета [color].. К исходному коду они никакого отношения не имеют!
попробуй после вычисления числителя
заменить adadd edx, b //rez in EDX на mov edx, b
я низное,мне 6 лет...
хм, думаю
для Как-Никак:
Спасибо за совет, но это в данном случае не поможет... Данная строка просто перезапишет данные в регистре, которые мы заносили туда до этого (в нашем случае переменную А)
эээ, у меня такое ощущение, что и числитель у вас неверно считается.

скажем что значит строчка
mov eax, a
mov edx, 7
cdq
div eax

разве не "div edx" нужно писать, что бы получить в ax результат a/7?
все, вопрос снят, я туплю :)
для MrSlayer:
Да, числитель действительно вычисляется неправильно, просто при проверке я брал числа 7 и 11, и поэтому посчитал результат верным, хотя код в любом случае выдает 14, не зависимо от величины переменных:(
Теперь нужно и в числителе искать ошибку:(
ошибка достаточно проста div eax означает содержимое EDX:EAX поделить на EAX, а это 1.
пиши делимое в AX, делитель в BX и дели на BX. Только не забывай обнулять DX.
А вообще учить ассемблер в Delphi сомнительная затея. Лучше какой-нибудь tasm-компилятор старенький взять, там и отладчик хороший, можно прям регистры смотреть после каждого шага какие получаются, для обучения самое то.
для MrSlayer:
Большое спасибо за помощь! Буду повнимательней в следующий раз)
для MrSlayer:
Просто это у меня предмет в универе "Архитектура вычислительных систем", задали самостоятельную, которую нужно сделать именно в делфи.. Так что у меня нет выбора)
тема закрыта by David_Belle_koz (2012-10-22 18:59:46)
К списку тем
2007-2025, онлайн игры HeroesWM