1 / 17

P rogramování v asembleru - instrukce

P rogramování v asembleru - instrukce. Jakub Yaghob. Datové typy I. Celočíselné typy Bezznaménkové Rozsah <0, 2 n -1> Znaménkové Dvojkový doplněk Rozsah < -2 n-1 , 2 n-1 -1> Velikosti Byte, word, doubleword, quadword. Datové typy II. Ukazatele „Pakované“ BCD. Podmínky.

keene
Télécharger la présentation

P rogramování v asembleru - instrukce

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programování v asembleru - instrukce Jakub Yaghob

  2. Datové typy I. • Celočíselné typy • Bezznaménkové • Rozsah <0, 2n-1> • Znaménkové • Dvojkový doplněk • Rozsah < -2n-1, 2n-1-1> • Velikosti • Byte, word, doubleword, quadword

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

  4. Podmínky 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 Přesuny

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

  7. 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 Celočíselná aritmetika II.

  8. 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: OP CF CF OP OP CF 0 0 OP CF CF OP Logické instrukce, posuvy, rotace I.

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

  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 Skoky

  11. 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 Bitové a BCD operace

  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; } „Semaforové“ operace

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

  14. 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] Ostatní

  15. 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 ECXa nelze to změnit  Směr Podle DF Instrukce samy posouvají cíl/zdroj podle šířky a směru Řetězcové operace I.

  16. 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 Řetězcové operace II.

  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

More Related