Keresés

Címkék

2025-04-20

Egyéb algebrai műveletek (SWAP, RL, RLC, RR, RRC, XCH, XCHD, INC, DEC, DA)

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
     R38ch    R10dh    a10h
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?