Найти значение выражения в ассемблере

 
0
 
ASM
ava
Trakker | 29.10.2016, 09:58
Y=2А/C+B/A
пробовал так не компилируется(дали задание но ничего про регистры не рассказали, ошибка в них как я думаю)
program sum_bz;сумма для без знаковых
var A,C,Y:byte;
B:word;
writeln('vv A,B i C');
readln(A,B,C);
asm
mov Al,A
xor AH,AH
shl Al,1
div C
mov BX,B
div A
ADD AL,BX
mov Y,AL
end;
writeln('y=',Y);
end.
-----------------------------------
попробовал если заносить в BX А, уже запускалось, но считалось не правильно(не могу привести тот пример забыл сохранить).Подскажи где тут ошибка, и как делать этого же выражение для знаковых пожалуйста
Kommentare (3)
ava
_zorn_ | 29.10.2016, 16:38 #
Это паскаль, а не асемблер.
Хоть и большая часть программы на ассемблере. Т.е. компилировать нужно паскалем/делфи и производными.
Турбопаскаль возьми.
Асмовый код не смотрел, так что не знаю правильный он или нет.
ava
Trakker | 29.10.2016, 19:33 #
Цитата (_zorn_ @ 29.10.2016,  16:38)
Это паскаль, а не асемблер.

Хоть и большая часть программы на ассемблере. Т.е. компилировать нужно паскалем/делфи и производными.

Турбопаскаль возьми.

Асмовый код не смотрел, так что не знаю правильный он или нет.

Да, асм это вставка я все таки сделал для без знаковых
asm
mov al,a
xor ah,ah
shl ax,1
div c
mov bl,al
mov ax,b
div a
add al,bl
mov y,al
end;

как сделать для знаковых?
Да, я пользуюсь турбопаскалем через досбокс
ava
_zorn_ | 30.10.2016, 13:19 #
Знаковые/беззнаковые отличаются одним старшим битом. В вашем случае обзовите то что хотите вывести знаковым типом и все срастется скорей всего.
Хотя не факт. Потому что старший бит он и в африке старший.
А у вас al,ah,ax и т.п. А знак находится тут eax & 0x80000000
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
  _zorn_   Trakker
advanced
Absenden