ELŐADÁS április 1
Egy operandus. Utalva a csapat, amely meghatározza egy egyedi operandus-TION, mint a csapat INC. Általában arra használják, hogy növeljük az index, vagy az index regiszter kiszámításakor elmozdulások és
- 16-bites aritmetikai műveleteket Ronan. Ilyen operandusok parancsnak egy nagyon egyszerű, egy byte ábrán látható alakban. 2.8. Ez egy 3-bites mező reg, meghatározó egy nyolc 16-bites regiszterek. Coding a REG látható az első két oszlopban táblázat. 2.1.
2.1 táblázat regiszterek Coding
A legáltalánosabb formában, INC parancs létrehoz a növekmény tartalmáért Ron index vagy index regiszter (8 vagy 16 bit), és minden egyes byte vagy a memória szót. Ez a forma két bájt hosszúságú ábrán látható. 2.10. Most a CPC mező két részből áll: a hét bit azt találhatók az első bájt, és három - a második. INC parancs műveleti kód formában van 000 1111111 w-bites mező hosszát határozza meg az operandus: ha w = 0, az operandus 8 bit, és amikor w = 1 - 16 bit. Mod mező jelzi, hogy az operandus egy nyilvántartásban vagy a memória. Ha mod = 11, az operandus tartalmazza egy regiszterben, és a másik három kombináció lásd a mod mező memóriát. Amikor operandus - egy regisztermezőt r / m mutatja egy specifikus nyilvántartás; és ha az operandus - a memóriában, az azonos területen meghatározza pontosan hol található (rövidítése R / m jelöli a nyilvántartás / memória).
2.3 táblázat bázis és indexregiszter, a mező által meghatározott r / t az operandusok memóriában (mod ¹ 11)
Példaként, úgy a parancsot ábrán látható. 2.12. Műveleti kód mező 1111111 000 meghatározza INC parancsot. Field w = 1 azt jelzi, hossza 16 bites operandus. Field mod = 01 és operandus ezért a memóriában tárolt; Sőt, a váltás parancsot a következő bájt ki kell bővíteni, hogy 16 az előjel bit: 0000 0000 0101 1100.
Field R / T = 100, így ellensúlyozza a csapat meg kell Összefoglalva a tartalmát regiszter SI (akkor is, ha egyenlő 1010 0000 1000 0110);
+ 1010 0000 1000 0110 (tartalma SI)
0000 0000 0101 1100 (elmozdulás a parancs)
1010 0000 1110 0010 (eredmény)
+ 1111 0000 1111 0000 (szegmens)
1010 0000 1110 0010 (elmozdulás a szegmensben)
Operandus nem lehet csak az aktuális adat szegmensben verem. Meg lehet olvasni minden szegmensben a parancs belépés előtt egybájtos előtag kijelölő egy szegmens regiszter (ábra. 2.13). Ábra. 2.14 ábra ugyanazt a parancsot, mint látható. 2,12, de most az operandus az aktuális overlay.
Két operandus. Odnooperandnymi foglalkozott parancsokat, hogy kapcsolja a parancsokat, amelyek a két operandus, például ADD. Már mondta, hogy ez a csapat értékét veszi egy operandust, hozzáadja az értéket a második operandus, és tárolja az eredményt helyett valamelyik operandusa. Ha mindkét operandus meghatározásának lehetővé a memória lenne szükség a csapat a területen, és a mod r / m mindegyikre. Ahhoz, hogy lerövidítse a csapatok, úgy döntöttek, hogy legalább az egyik operandus kell összhangban legyen egymással. Ezután egy parancs szükséges mező és a mod r / m egyetlen operandus, és egy másik területen kellően reg (ábra. 2.16).
Field w mutatja bájt operandusok (w = 0) vagy a szavakat (w = 1). is kiderült, egy új mezőt a D parancsot (vevő); ha d = 0, az eredmény tárolódik az operandus területeken meghatározott és mod r / m, egy ha d - 1 - egy operandus által meghatározott mező reg. Operandus, ahol az eredmény eltárolódik, az úgynevezett egy vevő, és a másik az úgynevezett a forrás operandus.
Példaként, úgy az ADD parancs ábrán látható. 2.17. Meg van egy műveleti kód mezőt 000000. w = 0 azt jelzi, hogy mindkét operandus bájt. Reg meghatározott mező operandus az regiszter CH. Mod = 11 mező jelzi, hogy a mező és a mod R / m regiszter meghatározzuk, és a mező R / T meghatározza a nyilvántartás BL. Field of d = 1 eredményét mutatja be felvételt a operandus meghatározott mező reg, azaz a nyilvántartásba CH. Következésképpen a összeadja a regiszterben BL (forrás) a regiszter tartalma CH (vevő), és elhelyezi az eredményt szívelégtelenségben.
Egy példa a csapat azonnali operandus MOV utasítás (előre). Gyakran használják betöltése állandók a nyilvántartásban. Itt a közvetlen operandus mezőben lehet meghatározni reg, és a csapat lesz egy egyszerű űrlap ábrán látható. 2.18. Field w még operandus meghatározza hossza 8 (w = 0), vagy 16 (w = 1) bit; Az első esetben azonnali operandus egy byte a csapatban, és a második - két bájt. Példaként, ábrán. 2.19 ábra parancs, amely átviszi az értéke 1111 0000 0000 1111 regiszterben DI.
Egy valamivel bonyolultabb vevő parancs operandus meghatározott területek és a mod R / m mező helyett reg, így egy extra byte jelenik meg a parancsot (ábra. 2.20). Ábrán látható. 2.21 parancsot továbbítja az érték 1111 0000 0000 1111 a szót, található a adatszegmensben eltolva a DI-nyilvántartásban.
Mivel két operandus utasítás csak egy mezőt w, mindkét operandus kell hossza 8 vagy 16 bit. Gyakran azonban közvetlen operandus kis számban, és nem igényelnek 16 bites. Ez különösen igaz a túl utasítást, kivonás és összehasonlítás, bár az operandusok logikai parancsok, az általában nem áll fenn. Következésképpen, lehetséges, hogy csökkentse a méretét utasítás azonnali operandusok ha nem osztja 16 bit tárolására kis számban. Ezért az egyes parancsok (összeadás, kivonás, és összehasonlítás) behelyezett bit s (s azt jelenti: „megjelölés kiterjesztés”). Elveszi a helyét a kis d, hiszen a csapatok azonnali operandusa csak egy irányban. Field s csak akkor hasznos, 16-bites operandusokat (w = 1), és azt jelzi, hogy vannak-e a csapat, mind a 16-bites közvetlen operandus (s = 0), vagy csak 8 bitet (s = 1), hogy bővíthető a jele, hogy a 16 bit így egy 16-bites operandus. Ez a forma a parancs ábrán látható. 2.22. Egy hasonló példa ábrán látható. 2.23. Itt, a tartalom a szó szerepel a memóriában, akkor az érték 0000 0000 0000 1111 és az eredmény kerül ugyanaz a szó. A tárolt szót az adatszegmens, és annak elmozdulását venni a DI regiszter. Vegye figyelembe, hogy az s bit megtakarítás egy bájt.