Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Instruksi Perpindahan Data
PENDAHULUAN Bab ini akan menitikberatkan pada pembahasan mengenai instruksi perpindahan data. Instruksi perpindahan data meliputi MOV, MOVSX, MOVZX, PUSH, POP, BSWAP, XCHG, XLAT, IN, OUT, LEA, LDS, LES, LFS, LSS, LAHF, SAHF, dan instruksi string yaitu MOVS, LODS, STOS, INS, OUTS. Instruksi transfer data diimplementasikan terakhir pada Pentium Pro sampai Pentium 4 adalah instruksi CMOV (conditional move). Instruksi perpindahan data dijelaskan pertama kali karena kerap digunakan dalam program dan mudah dimengerti. Mikroprosesor membutuhkan program assembler, yang menghasilkan bahasa mesin, karena instruksi bahasa mesin terlalu kompleks dibuat secara efisien oleh manusia. Bab ini akan mendeskripsikan sintaks bahasa assembly dan beberapa direktifnya. [ Bahasan ini mengasumsikan pengguna mengembangkan perangkat lunak pada PC IBM atau sejenisnya. Pengguna disarankan untuk menggunakan Microsoft Macro Assembler (MASM) sebagai alat pengembangan meskipun tak menutup kemungkinan untuk memanfaatkan Intel Assembler (ASM), Borland Turbo Assembler (TASM) atau perangkat lunak lain yang mempunyai fungsi serupa. Versi terbaru dari TASM menyerupai program MASM. Bahasan ini menyajikan informasi yang berfungsi dalam assembler Microsoft MASM, tetapi sebagian besar program di- assembly tanpa modifikasi dengan assembler lain. Lampiran A menjelaskan assembler Microsoft dan menyediakan detailnya pada program linker dan Programmer’s WorkBench.] NEXT
2
Usai memelajari bab ini, Anda akan mampu untuk :
TUJUAN BAB Usai memelajari bab ini, Anda akan mampu untuk : 1. Menjelaskan operasi setiap instruksi perpindahan data dengan mode pengalamatan yang dapat diaplikasikan. 2. Menjelaskan manfaat bahasa assembly pseudo-operations dan kata kunci seperti ALIGN, ASSUME, DB, DD, DW, END, ENDS, EQU, MODEL, OFFSET, ORG, PROC, PTR, SEGMENT, USE32, dan USES. 3. Memilih instruksi bahasa assembly yang sesuai untuk menyelesaikan tugas perpindahan data yang spesifik. 4. Menentukan opcode simbolik, sumber, tujuan, dan mode pengalamatan untuk instruksi bahasa mesin heksadesimal. 5. Menggunakan assembler untuk mengatur segmen data, segmen stack, dan segmen kode. 6. Memperlihatkan cara mengatur prosedur dengan menggunakan PROC dan ENDP. 7. Menjelaskan perbedaan antara model memori dan definisi segmen-penuh (full- segment) untuk assembler MASM. NEXT
3
TINJAUAN ULANG MOV Instruksi MOV, seperti yang telah dijelaskan dalam Bab 3, menjelaskan keragaman mode pengamatan 8086-Pentium 4. Pada bab ini, instruksi MOV memperkenalkan instruksi bahasa mesin yang terdapat dalam berbagai mode pengalamatan dan instruksi. Kode mesin turut diperkenalkan karena kadangkala memang dibutuhkan untuk menginterpretasikan program bahasa mesin yang dihasilkan oleh assembler. Interpretasi bahasa asli mesin (bahasa mesin) dapat menyebabkan debugging atau modifikasi pada level bahasa mesin. Terkadang, tambahan bahasa mesin dibuat dengan menggunakan program DEBUG yang tersedia dalam DOS, yang membutuahkan pengetahuan tertentu mengenai bahasa mesin. Konversi antara instruksi bahasa mesin dan assembly diilustrasikan dalam Lampiran B. NEXT
4
NEXT
5
PUSH/POP Intruksi PUSH dan POP merupakan intruksi penting untuk menyimpan dan mengambil kembali data dari memori stack secara LIFO (last-in, first-out). Mikroprosesor mempunyai enam bentuk intruksi PUSH dan POP, yaitu register, memori, immediate, register segmen, flag, dan semua register. Bentuk PUSH dan POP immediate serta PUSHA dan POPA (semua register) tidak terdapat pada mikroposesor 8086/8088 awal, dan hanya terdapat pada sampai Pentium 4. Pengalaman register memungkinkan isi register 16-bit ditransfer dari atau ke dalam stack. Pada ke atas, extended register 32-bit dan flag (EFLAGS) dapat juga dimasukan (push) dan dikeluarkan (pop) dari stack. Intruksi pengalamatan memori PUSH dan POP menyimpan isi lokasi memori 16-bit (atau 32-bit pada ke atas) dalam stack atau data stack ke dalam suatu lokasi memori. Pengalamatan immediate memungkinkan data immediate dimasukkan ke dalam stack, tetapi tidak dapat dikeluarkan dari stack. Pengalamatan register segmen memungkinkan isi setiap register segmen dimasukkan ke dalam stack atau dikeluarkan dari stack (CS dapat dimasukkan, tetapi data dari stack tidak pernah bisa dikeluarkan ke CS). Flag juga dapat dimasukkan dan dikeluarkan dari stack, demikian juga isi semua register. NEXT
6
NEXT
7
TABEL 4-7 Instruksi PUSH Simbol Contoh Catatan PUSH reg 16 PUSH BX Register 16-bit PUSH reg 32 PUSH EDX Register 32-bit PUSH mem 16 PUSH WORD PTR (BX) Pointer 16-bit PUSH mem 32 PUSH WORD PTR (EBX) Pointer 32-bit PUSH seg PUSH DS Register segmen PUSH imm 8 PUSH ‘,‘ immediate 8-bit PUSH imm 16 PUSHW 1000H immediate 16-bit PUSH imm 32 PUSHD 20 immediate 32-bit PUSHA PUSHA Menyimpan semua register 16-bit PUSHAD PUSHAD Menyimpan semua register 32-bit PUSHF PUSHF Menyimpan flag PUSHFD PUSHFD Menyimpan EFLAG NEXT
8
PENGISIAN ALAMAT EFKTIF
Terdapat beberapa instruksi pengisian alamat efektif dalam set instruksi mikroprosesor. Instruksi LEA mengisi register 16-bit dengan lamat, seperti yang ditentukan oleh mode pengalamatan yang dipilih untuk instruksi. Variasi LDS dan LES mengisi setiap register 16-bit dengan alamat offset yang diperoleh dari suatu lokasi memori. Pada ke atas, LFS, LGS, dan LSS ditambahkan ke set instruksi, dan register 32-bit dapat dipilih untuk menerima offset 32-bit dari memori. Tabel 4-9 berisi daftar instruksi pengisian alamat efektif. NEXT
9
NEXT
10
CONTOH 4-4 .MODEL SMALL : select SMALL model ; select 80386 DATA ; start of DATA segment SADDR DD ; old stack address [ SAREA DW 1OO0H DUP (?) ; new stack area 0000 ] 2004 = STOP EOU THIS WORD ; define to of new stack 000O CODE ; start of CODE segment .STARTUP ; start of program 0010 FA CLI ; disable interrupt OO11 8B C MOV AX,SP ; save old SP OO13 A R MOV WORD PTR SADDR,AX OO16 8C DO MOV AX,SS ; save old SS 0018 A R MOV WORD PTR SADDR+2.AX O01B 8C D MOV AX.DS ; load new SS 00ID 8E DO MOV SS.AX OQ1F B R MOV AX,OFFSET STOP ; load new SP 0022 8B EO MOV SP,AX 0024 FB STI ; enable interrupt 0025 8B CO MOV AX,AX ; do dummy instructions 0027 8B CO MOV AX,AX 0029 OF B R LSS SP,SADDR ; load old SS and SP .EXIT ; exit to DOS END ; end of file NEXT
11
PERPINDAHAN DATA STRING
Terdapat Lima instruksi transfer data string: LCDS, STOS, MOVS, INS, dan OUTS. Setiap instruksi string memungkinkan transfer data berupa byte, word, atau doubleword (atau jika diulang, satu blok byte, word, atau doubleword). Sebelum instruksi string dijelaskan, operasi bit flag D (direction), DL, dan SI harus dipahami terlebih dahulu sebagaimana penggunaan flag tersebut dalam instruksi string. NEXT
12
TABEL4-10 Bentuk instruksi LODS. Bahasa Assembly Operasi
LODSB AL = DS:[SI]; SI = SI ± 1 LODSW AX = DS:[SI]; SI = SI ± 2 LODSD EAX = DS:[SI]; SI = SI ± 4 LODS LIST AL = DS:[SI]; SI = SI ± 1 [jika LIST adalah sebuah byte] LODS DATA1 AX = DS:[SIJ; SI = SI ± 2 [jika DATA adalah sebuah word] LODS FROG EAX = DS:[SIJ; SI = SI ± 4 [jika FROG adalah sebuah doubleword] Catatan: segmen dapat di-override dengan segment override prefix seperti pada LODS ES:DATA4. NEXT
13
GAMBAR Operasi instruksi LODSW jika DS = 1000H, D = 0, 11000H = 32, dan 11001H = AO. Instruksi ini diperlihatkan setelah AX diisi dari memori, tetapi sebalum SI dinaikan 2. NEXT
14
Soal Gambarkan instruksi MOV WORD PTR [BX H], 1234H yang dikonversi ke dalam bahasa mesin biner! Buatlah tabel dari instruksi PUSH! Gambarkan operasi instruksi LODSW jika DS = 1000H, D = 0, 11000H = 32, dan 11001H = AO. NEXT
15
TUTUP Terima Kasih
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.