Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Programování v asembleru - instrukce Jakub Yaghob.

Podobné prezentace


Prezentace na téma: "Programování v asembleru - instrukce Jakub Yaghob."— Transkript prezentace:

1 Programování v asembleru - instrukce Jakub Yaghob

2 Datové typy I. Celočíselné typy Bezznaménkové Rozsah Znaménkové Dvojkový doplněk Rozsah Velikosti Byte, word, doubleword, quadword

3 Datové typy II. Ukazatele „Pakované“ BCD

4 Podmínky A/NBECF or ZF=0> AE/NBCF=0>= B/NAECF=1< BE/AECF or ZF=1<= CCF=1Carry E/ZZF=1== NCCF=0Not carry NE/NZZF=0!= NP/POPF=0Lichá parita P/PEPF=1Sudá parita G/NLE(SF xor OF) or ZF=0> GE/NLSF xor OF=0>= L/NGESF xor OF=1< LE/NG(SF xor OF) or ZF=1<= NOOF=0Not over NSSF=0>=0 OOF=1Overflow SSF=1<0 BezznaménkovéZnaménkové

5 Přesuny MOV, CMOVcc Výměny XCHG, BSWAP Zásobník PUSH, POP PUSHA, POPA PUSH oper ESP  ESP-4 [SS:ESP]  oper Vstup/výstup IN, OUT Konverze CWD, CDQ CWD: DX:AX  S(AX) CBW, CWDE CBW: AX  S(AL) Přesuny s rozšířením MOVSX, MOVZX

6 Celočíselná aritmetika I. Sčítání ADD, ADC Odčítání SUB, SBB Inkrement/dekrement INC, DEC Negace NEG Porovnání CMP

7 Celočíselná aritmetika II. Násobení MUL, IMUL MUL src: AX  AL*src DX:AX  AX*src EDX:EAX  EAX*src IMUL rx,rmx IMUL rx,rmx,imm8 IMUL rx,imm8 IMUL rx,rmx,immx IMUL rx,immx Dělení DIV, IDIV DIV src: AL  AX/src AH  AX%src AX  DX:AX/src DX  DX:AX%src EAX  EDX:EAX/src EDX  EDX:EAX%src

8 Logické instrukce, posuvy, rotace I. Logické instrukce AND, OR, XOR, NOT Logické porovnání TEST Aritmetický posuv SAL(=SHL), SAR SAR: SAL: Logický posuv SHL(=SAL), SHR SHR: Rotace ROL, ROR ROL: ROR: OPCF OPCF 0 OPCF 0 OPCFOPCF

9 Logické instrukce, posuvy, rotace II. Rotace s přenosem RCL, RCR RCL: RCR: Velké posuvy SHLD, SHRD SHLD: SHLD rmx,rx,imm8 SHLD rmx,rx,CL OPCFOPCF DSTCF 0 SRC Možnosti posuvů RCL rm,imm8 RCL rm,CL

10 Skoky JMP, Jcc Cykly JCXZ, JECXZ JECXZ:IF ECX=0 GOTO LOOP LOOP:IF --ECX GOTO LOOPZ/LOOPE LOOPZ:IF ZF --ECX GOTO LOOPNZ/LOOPNE Podprogramy CALL, RET CALL dst:PUSH EIP EIP  dst RET imm16:POP EIP ESP  ESP+imm16 Přerušení INT, INTO, IRET Podpora VPJ BOUND ENTER, LEAVE

11 Bitové a BCD operace Operace s bity BT, BTS, BTR, BTC BTo rmx,rx BTo rmx,imm8 Hledání bitu BSF, BSR BSo rx,rmx Podmíněné nastavení SETcc Desítkové opravy DAA, DAS ASCII opravy AAA, AAS, AAM, AAD AAD [i]: AL  AL+AH*i AH  0 AAM [i]: AH  AL/i AL  AL%i

12 „Semaforové“ operace XADD CMPXCHG XADD r/m,r temp  src+dst src  dst dst  temp CMPXCHG r/m,r if ACC==dst { ZF  1;dst  src; } else { ZF  0;ACC  dst; }

13 „Semaforové“ operace Velké semaforové operace CMPXCHG8B, CMPXCHG16B if vDX:vAX==dst { ZF  1;dst  vCX:vBX; } else { ZF  0;vDX:vAX  dst; }

14 Ostatní Operace s CF STC, CLC, CMC Operace s DF STD, CLD Operace s IF STI, CLI Operace s EFLAGS LAHF, SAHF PUSHF, POPF Dlouhé ukazatele LDS, LES, LFS, LGS, LSS Ostatní LEA, NOP, XLATB, CPUID XLATB: AL  [EBX+AL]

15 Řetězcové operace I. Různé šířky Byte, Word, Doubleword Zdroj DS:ESI Lze změnit DS prefixem instrukce Nelze změnit ESI  Cíl ES:EDI Nelze změnit ES:EDI  Opakování Počet v ECX a nelze to změnit  Směr Podle DF Instrukce samy posouvají cíl/zdroj podle šířky a směru

16 Řetězcové operace II. Přesun MOVSs [ES:EDI]  [DS:ESI] Porovnání CMPSs [DS:ESI] – [ES:EDI] Hledání SCASs ACC – [ES:EDI] Načtení LODSs ACC  [DS:ESI] Uložení STOSs [ES:EDI]  ACC Vstup INSs [ES:EDI]  [DX] Výstup OUTSs [DX]  [DS:ESI] Prefixy REP REPZ/REPE, REPNZ/REPNE

17 Řetězcové operace III. Je ECX==0? Pokud ano, konec. Nenastavuje příznaky Obsluha přerušení Vykonání instrukce posun cíle a zdroje nastaví příznaky pokud je porovnání ECX = ECX – 1 Nenastaví příznaky Pokud souhlasí podmínka nebo REP, jdi na začátek


Stáhnout ppt "Programování v asembleru - instrukce Jakub Yaghob."

Podobné prezentace


Reklamy Google