Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

PENDAHULUAN Bab ini akan menitikberatkan pada pembahasan mengenai instruksi perpindahan data. Instruksi perpindahan data meliputi MOV, MOVSX, MOVZX, PUSH,

Presentasi serupa


Presentasi berjudul: "PENDAHULUAN Bab ini akan menitikberatkan pada pembahasan mengenai instruksi perpindahan data. Instruksi perpindahan data meliputi MOV, MOVSX, MOVZX, PUSH,"— Transcript presentasi:

1 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 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 NEXT TABEL 4-7 Instruksi PUSH SimbolContohCatatan PUSH reg 16PUSH BXRegister 16-bit PUSH reg 32PUSH EDXRegister 32-bit PUSH mem 16PUSH WORD PTR (BX) Pointer 16-bit PUSH mem 32PUSH WORD PTR (EBX) Pointer 32-bit PUSH segPUSH DSRegister segmen PUSH imm 8PUSH ‘,‘immediate 8-bit PUSH imm 16PUSHW 1000Himmediate 16-bit PUSH imm 32PUSHD 20immediate 32-bit PUSHAPUSHAMenyimpan semua register 16-bit PUSHADPUSHADMenyimpan semua register 32-bit PUSHFPUSHFMenyimpan flag PUSHFDPUSHFDMenyimpan EFLAG

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 NEXT CONTOH 4-4.MODEL SMALL: select SMALL model.386; select DATA ; start of DATA segment SADDR DD 7 ; old stack address [ SAREA DW 1OO0H DUP (?) ; new stack area 0000 ] 2004 = 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 C4 MOVAX,SP; save old SP OO13 A R MOV WORD PTR SADDR,AX OO16 8C DO MOVAX,SS ; save old SS 0018 A R MOVWORD PTR SADDR+2.AX O01B 8C D8 MOVAX.DS ; load new SS 00ID 8E DO MOV SS.AX OQ1F B R MOV AX,OFFSET STOP ; load new SP B EO MOVSP,AX 0024 FB STI; enable interrupt B CO MOV AX,AX; do dummy instructions B CO MOV AX,AX 0029 OF B R LSS SP,SADDR; load old SS and SP.EXIT ; exit to DOS END; end of file

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 NEXT TABEL4-10 Bentuk instruksi LODS. Bahasa Assembly Operasi LODSB AL = DS:[SI]; SI = SI ± 1 LODSW AX = DS:[SI]; SI = SI ± 2 LODSDEAX = 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.

13 NEXT GAMBAR 4-16 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.

14 NEXT Soal 1.Gambarkan instruksi MOV WORD PTR [BX H], 1234H yang dikonversi ke dalam bahasa mesin biner! 2.Buatlah tabel dari instruksi PUSH! 3.Gambarkan operasi instruksi LODSW jika DS = 1000H, D = 0, 11000H = 32, dan 11001H = AO.

15 TUTUP Terima Kasih


Download ppt "PENDAHULUAN Bab ini akan menitikberatkan pada pembahasan mengenai instruksi perpindahan data. Instruksi perpindahan data meliputi MOV, MOVSX, MOVZX, PUSH,"

Presentasi serupa


Iklan oleh Google