Az aláírt bináris számok kivonása

Az aláírt bináris számok kivonása némileg nehezebb. Az utolsó példa azt mutatta, hogy a processzornak nem kell két eszköze van - hozzáadás és kivonás. Elég, ha csak egy eszköz - hozzáadás. De az aláírt számok hozzáadásával történő kivonásnál mindkét operandust (mind a csökkentett, mind a kivonni) a kiegészítő kódban kell megjeleníteni. Az eredményt a kiegészítő kódban is értéknek kell tekinteni. De itt vannak nehézségek. Először is kapcsolódnak ahhoz a tényhez, hogy az operandus legfontosabb bitje aláírásnak minősül. Tekintsük a 45 - (-127) kivonás példáját.

A számok kivonásának első változata egy jellel:

A jelkategória alapján az eredmény negatív volt, ami viszont azt jelzi, hogy a számot a -44-es egyenértéknek kell tekinteni. A helyes eredmény legyen egyenlő 172. Itt is, mint abban az esetben, hozzáadunk jel, mantissza túlfolyó teljesül, amikor számos jelentős digit megváltozott előjel bit operandust. Ezt a helyzetet az OF túlcsordulási zóna tartalma követheti. A létesítmény egy 1 jelzi, hogy az eredmény meghaladta a tartományban a ikonikus ábrázolása számok (azaz változott szignifikáns bit) az operandus méretének és a programozó kell adnia a korrekciós intézkedéseket vezethet.

A számok következő kivonását a hozzáadás módszerével hajtja végre:

-45 - 45 - -45 + (-45) = -90.

Itt minden rendben van, az OF túlcsordulási jelző értéke 0-ra áll vissza, és az aláírt számjegy 1-ben jelzi, hogy az eredmény értéke egy kiegészítő kódban lévő szám.

Kivonás és nagyméretű operandusok hozzáadása.

Ha észreveszi, a hozzáadás és kivonás parancsok fix hosszúságú operandusokkal működnek: 8, 16, 32 bit. És mi van, ha számokat kell hozzáadni

nagyobb méret, például 48 bit, 16 bites operandus használatával?

Az operandusok szabványos bitjeit meghaladó számú reprezentációjú számok kivonásának elve ugyanaz, mint amikor hozzáadásra kerül, vagyis a CF transzfer zászlót használják. Elég csak elképzelni a kivonás folyamatát egy oszlopba, és helyesen kombinálni CPU utasítások az SB parancs V. írásához egy nagyon érdekes program, amely szimulálja ezt a folyamatot, meg kell, hogy ezeket a terveket assembly, amit még nem tárgyalt. Az ebben a fejezetben található könyvhöz csatolt fájlok közül azok az alprogramok forrásszövegei, amelyek tetszőleges dimenziójú bináris operandusok számára négy alapvető számtani műveletet hajtanak végre. Ne lusta, hogy alaposan tanulmányozza őket, mivel jól illusztrálják az ebben és a következő fejezetekben vizsgált anyagokat. Ezeket a példákat teljes mértékben meg lehet oldani az eljárások és makrók mechanizmusának tanulmányozása után (14. és 15. fejezet). Ezenkívül a [8] programozási számokban a teljes aritmetikai műveletekről beszélünk, de kiterjesztett környezetben.

Végén a vitát a összeadási és kivonási csoport megállapította, hogy amellett, hogy a CF és zászlók a EFLAGS regisztrációhoz, több zászlókat, hogy lehet használni a bináris aritmetikai utasításokat. Ezek a zászlók:

ZF - nulla zászló, amely 1-re van állítva, ha a művelet eredménye 0, és 0-ra, ha az eredmény nem 0;

SF - jel zászló, amelynek értéke után aritmetikai műveletek (és nem csak) egybeesik az érték az MSB eredmény, vagyis 7,15 vagy 31 bit (tehát ez a zászló is használható műveletek aláírt egészek).