80 likes | 307 Views
Asembler x86 64 - instrukcije op š te namene. - seminarski rad- Arhitektura i operativni sistemi Milica Kosti ć , Marija Vla š kovi ć. U vod. P rogramski jezici - o lak š a va ju komunikaciju sa ra č unarom
E N D
Asembler x86 64 - instrukcije opštenamene -seminarski rad- Arhitekturaioperativnisistemi MilicaKostić, MarijaVlašković
Uvod Programski jezici - olakšavajukomunikacijusaračunarom Asemblerski jezik – jezik nižeg nivoa; prevodi tekstualni kod u mašinski. Jedna asemblerska instrukcija = jedna mašinska instrukcija (preslikavanje 1-1) Primer 1: Instrukcijakojaizracunavazbir EAX I EBX registarairezultatsmesta u EAX registar u masinskomjeziku: 03 c3 Primer 2: Instrukcija koja izracunava zbir EAX I EBX registara i rezultat smesta u EAX registar u asemblerskomjeziku:addeax, ebx
Instrukcijski operandi • Svakainstrukcijaimado 3 operanada- vrednostiizregistara, podaciizmemorije, konstante • Novi registri(R8 – R15)šifrovani prefiksom REX – povećanje instrukcije za 1 bajt • Segmentni registri – segmenti programa, podataka i steka • Načini adresiranja operanada: neposredno, registarsko, indirektno, RIP – relativno • Dozvoljenevrednosti: byte B, word W, double word D, quad word Q5, ten bytes T
Osnovneinstrukcije • Instrukcijezaprenospodataka: • MOV, CMOV, POP, PUSH, MOVSD, MOVSS, ADDSD, MULSD • Instrukcijeza poređenje: • CMP • Instrukcije za pomeranje - bitska instrukcija: • SHL, SAL, SHR • Instrukcije za rotaciju - bitska instrukcija: • ROL, ROR, RCL, RCR
Aritmetickologickeinstrukcije • Instrukcijezasabiranje: • ADD, ADC, INC • Instrukcijezaoduzimanje: • DEC, NEG, SUB, SBC • Instrukcijezamnozenje: • MUL, IMUL • Instrukcijezadeljenje: • DIV, IDIV, CQO, CDQ, CWD • Logickeinstrukcije: • AND, NOT, OR, XOR
Instrukcijezakontrolutoka • Instrukcijezaskokove: • Uslovni: IF (uslovistinit), THEN (grananjenanovusekvencu), ELSE (izvrsinarednuinstrukciju) • Bezuslovni: JMP, JE, JNE, JC, JNC, LOOP, LOOPE, LOOPNE • Instrukcijepotprograma: • CALL • RET • Zasistemskepozivekoristi se instrukcijasyscall,umestoint 0x80 kaou 32-bitnoj arhitekturi
Direktive • Instruišu asemblerda učininekuakcijuilidagainformisu. • Namene: definisanjekonstanti, definisanjememorijskihresursazasmeštanjepodataka, grupisanjememorije u segmente, (uslovno) uključivanjeizvornogkoda • Najčešće korišćene direktive: .intel syntax noprex, .text, .data, .int n, .ascizstr, .global label • Labele se mogukoristiti u svrhureferensiranja podataka u kodu. Postoje dva nacina za to - čista labela i labelasauglastimzagradama ([])