Papp Róbert

SZámítógép ARchitektúra jegyzet 2005/I.

(Bartók Tamás / Szerda 16:00-17:00)
7. gyakorlat - 2005. 10. 26.

Bitmozgatás

Ha az utasítás nem csinál semmit a Carry-vel, akkor léptető, ha beteszi az elejére vagy a végére, akkor forgató.
SzintaxisBitek változásaAritmetikai műveletRövidítés
SHR op1,op20->|_|_|_|_|_|_|_|_| -> CFop1=op1/2SHift Right
SHL op1,op2CF<-|_|_|_|_|_|_|_|_| <- 0op1=op1*2SHift Left
ROR op1,op2CF1 ->|_|_|_|_|_|_|_|_| -> CF1op1=op1/2+CF*128ROtate Right
ROL op1,op2CF1 <-|_|_|_|_|_|_|_|_| <- CF1op1=op1*2+CFROtate Left
RCR op1,op2CF1 ->|_|_|_|_|_|_|_|_| -> CF2op1=op1/2Rotate through Carry Right
RCL op1,op2CF2 <-|_|_|_|_|_|_|_|_| <- CF1op1=op1*2Rotate through Carry Left
SAR op1,op2mint SHR, csak előjeles, tehát az első bit maradop1=op1*2Shift Aritmetical Right
SAL op1,op2teljesen ugyanaz, mint az SHLop1=op1*2Shift Aritmetical Left
Megjegyzések:
op1 = memóriahivatkozás vagy regiszter
op2 = 1 vagy CL (lehet más szám is, de ez a szabványos jelölés).

Aritmetikai ugrások

Előjelesrelációelőjeltetlen
JZ, JE=JZ, JE
JNZ, JNE!=JNZ, JNE
JG, JNLE>JA, JNBE
JGE, JNL>=JAE, JNB
JL, JNGE<JB, JNAE
JLE, JNG<=JBE,JNA
J=Jump, G=Greater, L=Less, N=Not, E=Equal, A=Above, B=Below

Logikai ugrások

JC;CF=1
JNC;CF=0

1. Feladat: AX=AL*6 //no MUL & IMUL

Input AL előjeltelen
XOR AH,AH
SHL AX,1
MOV BX,AX
SHL AX,1
ADD AX,BX

2. Feladat: AX-nek hány bitje 1-es?

XOR BX,BX
;BL 0-> 16, BH=1-esek száma
@Ciklus:
SHR AX,1
JNC vmi
INC BH
Vmi:
INC BL
CMP BL,16
JNZ ciklus

3. Feladat: (DX:AX) = M^n (Szüneti házi)

Input: m,n
Output (DX:AX) = M^n
Tfh m^(n-1) elfér 16 biten
0^0=1
(9 utasítás 2 címke)
© All rights reserved by TWiStEr & PaulikR. Köszönöm -[PaulikR]-nek a segítséget!