A fent leírt instrukciók szintén aritmetikai eljárások, viszont a túlzsúfoltság elkerülése végett ezeket ide tettem. Ezek 90%-a az a-val végeztethető el.
Az instrukciók jelentései:
- SWAP (cserélés)
- RL - rotate left (forgasd balra)
- RLC - rotate left with carry (forgasd balra carry-vel)
- RR - rotate right (forgasd jobbra)
- RRC - rotate right with carry (forgasd jobbra carry-vel)
- XCH - exchange (átváltás)
- XCHD - exchange digits (számjegyek átváltása)
- DA - decimal adjust (decimális igazítás)
- CLR - clear (törölj)
- INC - increase (emeld)
- DEC - decrease (csökkentsd)
SWAP
Az a regiszter felső és alsó nybble-jeit cseréli ki egymással, sorrendváltoztatás nélkül; vagyis a 8 bites szám egyik és másik felét. Csak a-n használható.
swap a
pl. 45h ==> 54h
RL
Az a regiszter minden bitjét eggyel nagyobb helyiértékre tolja. Az eredeti 8. bit átugrik az 1. bit helyére. Csak a-n használható.
rl a
pl. 01101100b ==> 11011000b
11101100b ==> 11011001b
RLC
Az a minden bitje eggyel nagyobb helyiértékre kerül. Az eredeti 8. bit bekerül a CARRY tárolóba, az eredeti CARRY pedig az a 1. bitjébe. Csak a-n használható.
rlc a
RR
Az a minden bitje eggyel kisebb helyiértékre kerül. Az eredeti 1. bit átkerül a 8. bit helyére. Csak a-n használható.
rr a
pl. 00101110b ==> 00010111b
11011001b ==> 11101100b
RRC
Az a minden bitje eggyel kisebb helyiértékre kerül. Az eredeti 1. bit átkerül a CARRY-be, az eredeti CARRY pedig az a 8. bitjébe. Csak a-n használható.
XCH
Az a és a megadott másik tároló értékei megcserélődnek. A másik tároló lehet R0-R7, R0-R1 által mutatott memóriacím, és megadott memóriacím.
xch a,r2
xch a,@r0
xch a,86h
pl. 00 02 02 50 ff 14 a7 98 3b 07
08 76 8a 60 f8 e3 5a 82 03 0f
R3⇐8ch R1⇐0dh a⇐10h
xch a,r3 ==> a=8ch R3=10h
XCHD
Az a és R0-R1 által mutatott memóriacím kisebb nybble-jei megcserélődnek.
xchd a,@r0
INC
A megadott regiszter vagy memóriacím értéke 1-gyel növelődik. A regiszter lehet a, R0-R7, és dptr. A memóriacím lehet konkrét cím, vagy R0-R1 által mutatott.
inc a
inc r4
inc dptr
inc 30h
inc @r1
DEC
A megadott regiszter vagy memóriacímben található szám 1-gyel csökken. Lehet a, R0-R7, @R0-R1, direkt memóriacím és R0-R7 a tároló.
dec a
dec r4
dec 30h
dec @r1
DA
ha az a regiszteren hozzáadáskor 2 BCD-számot használtunk, akkor az eredmény nem BCD lesz. Ez az instrukció ezt helyreállítja.
da a
Nincsenek megjegyzések:
Megjegyzés küldése
Mit gondolsz?