| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Найти значение выражения в ассемблере |
| Автор: 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 А, уже запускалось, но считалось не правильно(не могу привести тот пример забыл сохранить).Подскажи где тут ошибка, и как делать этого же выражение для знаковых пожалуйста |
| Автор: _zorn_ 29.10.2016, 16:38 |
| Это паскаль, а не асемблер. Хоть и большая часть программы на ассемблере. Т.е. компилировать нужно паскалем/делфи и производными. Турбопаскаль возьми. Асмовый код не смотрел, так что не знаю правильный он или нет. |
| Автор: Trakker 29.10.2016, 19:33 | ||
Да, асм это вставка я все таки сделал для без знаковых 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; как сделать для знаковых? Да, я пользуюсь турбопаскалем через досбокс |
| Автор: _zorn_ 30.10.2016, 13:19 |
| Знаковые/беззнаковые отличаются одним старшим битом. В вашем случае обзовите то что хотите вывести знаковым типом и все срастется скорей всего. Хотя не факт. Потому что старший бит он и в африке старший. А у вас al,ah,ax и т.п. А знак находится тут eax & 0x80000000 Для x86 конечно... PS для справки eax = 0x12345678 ax = 0x5678 ah = 0x56 al = 0x78 |