Zdravím,
byl by někdo ochotný mi poradit s úlohou v assembleru na výpočet rovnice? Není potřeba mi psát kód, spíš bych potřeboval poradit algoritmus jak odečíst dvě čísla, z nichž jedno může/nemusí být záporné.
tě pic - tohle nespecifikování typu procesoru respektive assembleru u dotazu je na 2 věci..
ale obecně
když máš v A,20
a máš v B,30
add A,B v A je 50
pokud v A,20
a v B,-30 potom v B je nastaven horní bit a to číslo např. u 16bitu vypadá 0xFFE2
add A,B dá do A 0xFFF6 to je bez jakéhokoliv zádrhelu -10
to samý funguje u odčítání a to ať jsou čísla záporná obě nebo jedno...
v čem je problém?
pokud bys chtěl výsledek vypsat zjistíš si zda je poslední bit 1 pro číslo
0x8000 a výše, potom uděláš negaci registru, vypíšeš a podle toho bitu ne/přídáš mínus
to CPU mi sice moc neřiká :)
ale použil bych instrukci NEGF W
pokud je ve W 0x0001 potom v ní bude 0xFFFF což chceš jako -1
mimochodem registr je vždy naplněn číslem v binární soustavě a jaké tam je uspořádání tě zajímá jen při tom převodu z desítkové soustavy (tj. implementace dělení nebo posuvu,odčítání)
#4 MaxDJs
posuny a scitani... to samy jako se nasobi na zakladce v desitkovy soustave... jen tady je to o zakladu 2
dejme tomu
1001 * 0011 = 1001 + 10010 = 11011
9 * 3 = 9 + 9*2 = 27
násobení uděláš jako kombinační logickou funkci. Stačí projít katalog CMOS obvodů, v popisu násobičky byla i kombinační funkce. Večer se ti můžu do katalogu CMOS podívat.
Asi se zeptáš na dělení. Ve dvojkové soustavě funguje stejně jako v dekadické. Je to stejné, jako když dělíš "ručně" na papíře. Výhodou je, že výsledná cifra může být jen 0 nebo 1 (na rozdíl od desítkové soustavy, kde je to 0 - 9).
hu
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku