450 likes | 599 Views
Riistvarapõhine programmeerimine. Loeng 5 Loogilised käsud Nihkekäsud. Loogilised käsud. And A, B Or A, B Xor A, B Not A. And I. And A, B Lipud: Cf -> 0 Of -> 0 Zf -> vastavalt tulemusele Sf -> vastavalt tulemusele Pf -> vastavalt tulemusele Af -> vastavalt tulemusele. And II.
E N D
Riistvarapõhine programmeerimine Loeng 5 Loogilised käsud Nihkekäsud
Loogilised käsud • And A, B • Or A, B • Xor A, B • Not A ID218 Riistvaralähedane programmeerimine
And I And A, B Lipud: Cf -> 0 Of -> 0 Zf -> vastavalt tulemusele Sf -> vastavalt tulemusele Pf -> vastavalt tulemusele Af -> vastavalt tulemusele ID218 Riistvaralähedane programmeerimine
And II ID218 Riistvaralähedane programmeerimine
And III and reg, reg and mem, reg and reg, mem and reg, immediate data and mem, immediate data ID218 Riistvaralähedane programmeerimine
And IV C := A and B mov ax, A and ax, B mov C, ax ID218 Riistvaralähedane programmeerimine
Or I Or A, B Lipud: Cf -> 0 Of -> 0 Zf -> vastavalt tulemusele Sf -> vastavalt tulemusele Pf -> vastavalt tulemusele Af -> vastavalt tulemusele ID218 Riistvaralähedane programmeerimine
Or II ID218 Riistvaralähedane programmeerimine
Or III orreg, reg ormem, reg orreg, mem orreg, immediate data ormem, immediate data ID218 Riistvaralähedane programmeerimine
Or IV C := A or B mov ax, A or ax, B mov C, ax ID218 Riistvaralähedane programmeerimine
Xor I Xor A, B Lipud: Cf -> 0 Of -> 0 Zf -> vastavalt tulemusele Sf -> vastavalt tulemusele Pf -> vastavalt tulemusele Af -> vastavalt tulemusele ID218 Riistvaralähedane programmeerimine
Xor II ID218 Riistvaralähedane programmeerimine
Xor III xorreg, reg xormem, reg xorreg, mem xorreg, immediate data xormem, immediate data ID218 Riistvaralähedane programmeerimine
Or IV C := A xor B mov ax, A xor ax, B mov C, ax ID218 Riistvaralähedane programmeerimine
Not I Not A Lipud: Cf -> Ei mõjuta Of -> Ei mõjuta Zf -> Ei mõjuta Sf -> Ei mõjuta Pf -> Ei mõjuta Af -> Ei mõjuta ID218 Riistvaralähedane programmeerimine
Not II ID218 Riistvaralähedane programmeerimine
Not III not register not mem ID218 Riistvaralähedane programmeerimine
Not IV B := not A mov ax, A ; not 1 -> 0 not ax ; not 1 = 0FEh and ax, 1 ; 0FEh and 1 = 0 mov B, ax ID218 Riistvaralähedane programmeerimine
Not V B := NOT A mov ax, A xor ax, 1 mov B, ax ID218 Riistvaralähedane programmeerimine
Nihkekäsud • RCL • RCR • ROL • ROR • SHL/SAL • SAR • SHR ID218 Riistvaralähedane programmeerimine
SHL/SAL I shl A, c (c -> 1, cl) Lipud: Cf -> Vanem bit Of -> c=1, 1 (bit 7 != bit 8) c!=1, ei ole määratud Zf -> vastavalt tulemusele Sf -> vanem bit Pf -> vastavalt tulemusele Af -> ei ole määratud ID218 Riistvaralähedane programmeerimine
SHL/SAL II ID218 Riistvaralähedane programmeerimine
SHL/SAL III shl ax, 1 ; AX*2 shl ax, ‘2’; AX*4 shl ax, ‘3’; AX*8 shl ax, ‘4’; AX*16 - - - - - - - - - - - - - - - - - - - - - - - - ID218 Riistvaralähedane programmeerimine
SHL/SAL IV shl ax, ‘8’; AX*256 mov ah,al mov al, 0 ID218 Riistvaralähedane programmeerimine
SAR I sar A, c (c -> 1, cl) Lipud: Cf -> Noorem bit Of -> c=1, 0 c!=1, ei ole määratud Zf -> vastavalt tulemusele Sf -> vanem bit Pf -> vastavalt tulemusele Af -> ei ole määratud ID218 Riistvaralähedane programmeerimine
SAR II ID218 Riistvaralähedane programmeerimine
SAR III sar ax, 1 ;Signed division by 2 sar ax, ‘2’;Signed division by 4 sar ax, ‘3’;Signed division by 8 sar ax, ‘4’;Signed division by 16 ID218 Riistvaralähedane programmeerimine
SAR IV idiv mov ax, -15 cwd mov bx, 2 idiv bx ; –7 sar mov ax, -15 sar ax, 1 ; -8 ID218 Riistvaralähedane programmeerimine
SAR V CBW: mov ah, al sar ah, 7 CWD: mov dx, ax sar dx, 15 Sign extend bx into cx:bx mov cx, bx sar cx, 15 ID218 Riistvaralähedane programmeerimine
SHR I shr A, c (c -> 1, cl) Lipud: Cf -> Noorem bit Of -> c=1, 1 kui märk muutus c!=1, ei ole määratud Zf -> vastavalt tulemusele Sf -> 0 Pf -> vastavalt tulemusele Af -> ei ole määratud ID218 Riistvaralähedane programmeerimine
SHR II ID218 Riistvaralähedane programmeerimine
SHR III shr ax, 1 ; AX/2 shr ax, ‘2’;AX/4 shr ax, ‘3’; AX/8 shr ax, ‘4’; AX/16 ID218 Riistvaralähedane programmeerimine
SHR IV shr ax, ‘8’; AX/256 mov al, ah mov ah, 0 ID218 Riistvaralähedane programmeerimine
RCL I rcl A, c (c -> 1, cl) Lipud: Cf -> Vanem bit Of -> c=1, 1 kui märk muutus c!=1, ei ole määratud Zf -> ei mõjuta Sf -> ei mõjuta Pf -> ei mõjuta Af -> ei mõjuta ID218 Riistvaralähedane programmeerimine
RCL II ID218 Riistvaralähedane programmeerimine
RCR I rcr A, c (c -> 1, cl) Lipud: Cf -> Noorem bit Of -> c=1, 1 kui märk muutus c!=1, ei ole määratud Zf -> ei mõjuta Sf -> ei mõjuta Pf -> ei mõjuta Af -> ei mõjuta ID218 Riistvaralähedane programmeerimine
RCR II ID218 Riistvaralähedane programmeerimine
ROL I rol A, c (c -> 1, cl) Lipud: Cf -> Vanem bit Of -> c=1, 1 kui märk muutus c!=1, ei ole määratud Zf -> ei mõjuta Sf -> ei mõjuta Pf -> ei mõjuta Af -> ei mõjuta ID218 Riistvaralähedane programmeerimine
ROL II ID218 Riistvaralähedane programmeerimine
ROR I ror A, c (c -> 1, cl) Lipud: Cf -> Noorem bit Of -> c=1, 1 kui märk muutus c!=1, ei ole määratud Zf -> ei mõjuta Sf -> ei mõjuta Pf -> ei mõjuta Af -> ei mõjuta ID218 Riistvaralähedane programmeerimine
ROR II ID218 Riistvaralähedane programmeerimine
R*R / R*L • Ei mõjuta Zf, Sf, Pf, Af • Kui need lipud vaja: Cmp A, 0 Kontrollida lipud ID218 Riistvaralähedane programmeerimine
Kokkuvõte I • Loogilised käsud • And A, B • Or A, B • Xor A, B • Not A ID218 Riistvaralähedane programmeerimine
Kokkuvõte II • Nihkekäsud • SHL / SAL • SAR • SHR ID218 Riistvaralähedane programmeerimine
Kokkuvõte III • Nihkekäsud • RCL • RCR • ROL • ROR ID218 Riistvaralähedane programmeerimine