Top Banner
Bahasa Rakitan BAHASA RAKITAN Universitas Gunadarma Kuliah I : Pengenalan
77

BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Dec 03, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

BAHASA RAKITANUniversitas Gunadarma

Kuliah I : Pengenalan

BAHASA RAKITANUniversitas Gunadarma

Kuliah I : Pengenalan

Page 2: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

I.1. Bahasa– Komputer “bicara/berkomunikasi” dgn suatu bahasa– Bahasa-2 pemrograman menyediakan tools u/ mengekspresikan

pemrosesan data secara simbolik– Setiap bahasa memiliki sintaks dan grammar yang dirumuskan

dgn baik

I.2. Bahasa-2 Pemrograman• Terdapat banyak bahasa pemrograman tergolong menjadi 2:

– Bahasa Tingkat Tinggi: (C, C++, Pascal, Basic)• Machine-independent dan instruksinya lebih ekspresif (spt bhs

manusia)

– Bahasa Tingkat-rendah: (bahasa rakitan)• Machine-specific; dan instruksinya lebih halus-kecil (finer-grained)

yang terkait erat dgn bahasa mesin dari prosessor target.

I.1. Bahasa– Komputer “bicara/berkomunikasi” dgn suatu bahasa– Bahasa-2 pemrograman menyediakan tools u/ mengekspresikan

pemrosesan data secara simbolik– Setiap bahasa memiliki sintaks dan grammar yang dirumuskan

dgn baik

I.2. Bahasa-2 Pemrograman• Terdapat banyak bahasa pemrograman tergolong menjadi 2:

– Bahasa Tingkat Tinggi: (C, C++, Pascal, Basic)• Machine-independent dan instruksinya lebih ekspresif (spt bhs

manusia)

– Bahasa Tingkat-rendah: (bahasa rakitan)• Machine-specific; dan instruksinya lebih halus-kecil (finer-grained)

yang terkait erat dgn bahasa mesin dari prosessor target.

Page 3: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

I.3. Bahasa-2 Rakitan– Bahasa-2 rakitan representasi teks dari bahasa mesin– Satu statement merepresentasikan satu instruksi mesin– Lapisan abstraksi antara program-2 tingkat tinggi dan kode mesin

I.4. Bahasa Mesin– Merupakan bahasa ibu/alamiah dari komputer– Kata-2 (WORDS) instruksi-2– Vocabulary set instruksi– Representasi bit dari operasi mesin dieksekusi oleh hardware

I.3. Bahasa-2 Rakitan– Bahasa-2 rakitan representasi teks dari bahasa mesin– Satu statement merepresentasikan satu instruksi mesin– Lapisan abstraksi antara program-2 tingkat tinggi dan kode mesin

I.4. Bahasa Mesin– Merupakan bahasa ibu/alamiah dari komputer– Kata-2 (WORDS) instruksi-2– Vocabulary set instruksi– Representasi bit dari operasi mesin dieksekusi oleh hardware

Page 4: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

• Hirarki bahasa-2 diatas sbb:• Hirarki bahasa-2 diatas sbb:

Page 5: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

Catatan:• Bahasa rakitan membuka rahasia HW dan SW komputer

– Mempelajari/menganalisa :• tentang cara HW komputer dan Sistem operasi bekerja sama;• bagaimana program aplikasi berkomunikasi dgn sistem operasi

• Tidak terdapat bahasa rakitan tunggal.– Setiap komputer atau family komputer menggunakan set instruksi mesin yang

berbeda dan bahasa rakitan yang berbeda• Bahasa rakitan IBM-PC mengandung hanya set instruksi intel 8086/8088, dgn

enhancement u/ 80186/286/386 (instruksi set 8088 dapat digunakan tanpa modifikasiyang signifikan)

• Assembler: suatu program yang mengkonversi program source-code kebahasa mesin:– IBM-PC Microsoft Macro Assembler (MASM), Borland’s Turbo Assembler– Focus MASM (mengenal lebih dari 50 directives)

Jadi bahasa rakitan IBM-PC merujuk set instruksi 8086/8088 dan set komplit daridirectives MASM

Catatan:• Bahasa rakitan membuka rahasia HW dan SW komputer

– Mempelajari/menganalisa :• tentang cara HW komputer dan Sistem operasi bekerja sama;• bagaimana program aplikasi berkomunikasi dgn sistem operasi

• Tidak terdapat bahasa rakitan tunggal.– Setiap komputer atau family komputer menggunakan set instruksi mesin yang

berbeda dan bahasa rakitan yang berbeda• Bahasa rakitan IBM-PC mengandung hanya set instruksi intel 8086/8088, dgn

enhancement u/ 80186/286/386 (instruksi set 8088 dapat digunakan tanpa modifikasiyang signifikan)

• Assembler: suatu program yang mengkonversi program source-code kebahasa mesin:– IBM-PC Microsoft Macro Assembler (MASM), Borland’s Turbo Assembler– Focus MASM (mengenal lebih dari 50 directives)

Jadi bahasa rakitan IBM-PC merujuk set instruksi 8086/8088 dan set komplit daridirectives MASM

Page 6: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

Mengetahui Bahasa Rakitan perlukah?• Dipelajari dgn berbagai alasan:

– Mengetahui lebih dalam tentang arsitektur komputer dan sistemoperasi

– Mengetahui lebih lanjut tentang komputer dan bagaimana bahasakomputer membangkitkan kode mesinJelas: karena bhs rakitan mempunyai hubungan yang dekat dgnbhs mesin

– Mempelajari utilitasnya.• Tipe pemrogramman tertentu sulit atau tidak mungkin dilakukan dgn

bhs tingkat tinggi. Contoh:– Komunikasi langsung dgn SO komputer– Program color high-speed graphics dgn memori rendah– Program interfacing– Program telekomunikasi

Mengetahui Bahasa Rakitan perlukah?• Dipelajari dgn berbagai alasan:

– Mengetahui lebih dalam tentang arsitektur komputer dan sistemoperasi

– Mengetahui lebih lanjut tentang komputer dan bagaimana bahasakomputer membangkitkan kode mesinJelas: karena bhs rakitan mempunyai hubungan yang dekat dgnbhs mesin

– Mempelajari utilitasnya.• Tipe pemrogramman tertentu sulit atau tidak mungkin dilakukan dgn

bhs tingkat tinggi. Contoh:– Komunikasi langsung dgn SO komputer– Program color high-speed graphics dgn memori rendah– Program interfacing– Program telekomunikasi

Page 7: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

– Sebagai Solusi akibat batasan-2 pada bhs tingkat tinggi.• Contoh:

– Bhs tingkat tinggi: tidak diizinkan pengerjaan (assigning) sebuah nilaikarakter ke variabel integer. (buat programmer yang expert no problem,namun programnya tidak kompetibel)

• Bhs rakitan batasan atau aturannya sangat sedikit

– Sebagai alat belajar (learning tool) terutama menyakut kerjaOS

Aplikasi bhs. Rakitan• Program subroutine: aplikasi spesifik (short program)

– Program subroutine (dpt dipanggil oleh bhs tingkat tinggi)• Kombinasi ini diperoleh kekuatan bhs tingkat tinggi

– Contoh: Program COBOL; andikan compilernya tidak mendukung akankebutuhan mis: u/pengecekan harddisk, pembuatan subdirektori, proteskifile, dll.

• Tugas ini dapat diatasi dgn membuat subroutine bhs rakitan

– Sebagai Solusi akibat batasan-2 pada bhs tingkat tinggi.• Contoh:

– Bhs tingkat tinggi: tidak diizinkan pengerjaan (assigning) sebuah nilaikarakter ke variabel integer. (buat programmer yang expert no problem,namun programnya tidak kompetibel)

• Bhs rakitan batasan atau aturannya sangat sedikit

– Sebagai alat belajar (learning tool) terutama menyakut kerjaOS

Aplikasi bhs. Rakitan• Program subroutine: aplikasi spesifik (short program)

– Program subroutine (dpt dipanggil oleh bhs tingkat tinggi)• Kombinasi ini diperoleh kekuatan bhs tingkat tinggi

– Contoh: Program COBOL; andikan compilernya tidak mendukung akankebutuhan mis: u/pengecekan harddisk, pembuatan subdirektori, proteskifile, dll.

• Tugas ini dapat diatasi dgn membuat subroutine bhs rakitan

Page 8: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

I.5. Instruksi-2 bahasa rakitan– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam

mesin MIPS):– Nama operator– Tempat menyimpan (store) hasil– Operand 1– Operand 2 (dalam MIPS)Contoh: mov al,5 (intel)

add a,b,c (MIPS)

– Format-format yang fix dan sederhana membuat implementasiHW lebih sederhana (“simplicity favors regularity”)

– Pada kebanyakan arsitektur, tidak ada batasan akan elemen-2yang muncul lebih dari satu

I.5. Instruksi-2 bahasa rakitan– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam

mesin MIPS):– Nama operator– Tempat menyimpan (store) hasil– Operand 1– Operand 2 (dalam MIPS)Contoh: mov al,5 (intel)

add a,b,c (MIPS)

– Format-format yang fix dan sederhana membuat implementasiHW lebih sederhana (“simplicity favors regularity”)

– Pada kebanyakan arsitektur, tidak ada batasan akan elemen-2yang muncul lebih dari satu

Page 9: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

I.5.1. Mnemonic– Merupakan kode alphabet pendek yang membantu memori dalam

mengingat suatu instruksi CPU.– Dapat berupa: instruksi atau directive– Contoh: instruksi: mov (move)

directive: DB (define byte)I.5.2. Operand

– Sebuah instruksi bisa berisi nol, satu atau dua operand– Sebuah Operand bisa berupa: register, variabel memori, atau immediate

value– Contoh:

10 (immediate value)count (variabel memori)AX (register)

I.5.3 Komentar– Tanda # dalam MIPS– Tanda ; dalam intel

I.5.1. Mnemonic– Merupakan kode alphabet pendek yang membantu memori dalam

mengingat suatu instruksi CPU.– Dapat berupa: instruksi atau directive– Contoh: instruksi: mov (move)

directive: DB (define byte)I.5.2. Operand

– Sebuah instruksi bisa berisi nol, satu atau dua operand– Sebuah Operand bisa berupa: register, variabel memori, atau immediate

value– Contoh:

10 (immediate value)count (variabel memori)AX (register)

I.5.3 Komentar– Tanda # dalam MIPS– Tanda ; dalam intel

Page 10: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

I.6. Unsur-2 Dasar Bhs Rakitan• Set karakter dasar (pada MASM)

Letter: A-Z, a-zDigits: 0-9Karakters khusus:? @ _ $ :. (period) [ ] ( ) <> ,(comma)“(double quotes) & % ! ‘ (appostrope)| \ = { } # +

• Pembangun dasar statemen bhs rakitan :– Konstanta (nilai yg tidak berubah saat runtime) bilangan atau karakter– Variabel (lokasi penyimpanan yg dapat berubah saat runtime)– Name mengidentifikasikan label, variabel, simbol atau reserved word– Mnemonic– Operands– Kommentar

I.6. Unsur-2 Dasar Bhs Rakitan• Set karakter dasar (pada MASM)

Letter: A-Z, a-zDigits: 0-9Karakters khusus:? @ _ $ :. (period) [ ] ( ) <> ,(comma)“(double quotes) & % ! ‘ (appostrope)| \ = { } # +

• Pembangun dasar statemen bhs rakitan :– Konstanta (nilai yg tidak berubah saat runtime) bilangan atau karakter– Variabel (lokasi penyimpanan yg dapat berubah saat runtime)– Name mengidentifikasikan label, variabel, simbol atau reserved word– Mnemonic– Operands– Kommentar

Page 11: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)• Format Statement (pada MASM)

[name] [mnemonic] [operands] [;comments]

Statement dibagi menjadi 2 kelas:– Instruksi : executable statement– Directive : statement yang menyediakn informasi untuk membantu assembler

dalam menghasil executable code.Statement bersifat free-form

– Ditulis dalam suatu kolom dgn sejumlah spaces antar setiap operands– Blank lines diizinkan– Dapat ditulis dalam suatu baris tunggal (max. 128 kolom)

• Catatan:– Directives: statement yang mempengaruhi baik listing program maupun cara kode

mesin dibangkitkan• Contoh: DB directive memerintahkan MASM u/ meng-create storage untuk variabel

bernama count dan menginisialisasikan dgn 50count db 50

– Instruksi: dieksekusi oleh Mikroprosessor saat runtime.• Tipe umum: program control, data transfer, arithmetic, logical, dan I/O

• Format Statement (pada MASM)[name] [mnemonic] [operands] [;comments]

Statement dibagi menjadi 2 kelas:– Instruksi : executable statement– Directive : statement yang menyediakn informasi untuk membantu assembler

dalam menghasil executable code.Statement bersifat free-form

– Ditulis dalam suatu kolom dgn sejumlah spaces antar setiap operands– Blank lines diizinkan– Dapat ditulis dalam suatu baris tunggal (max. 128 kolom)

• Catatan:– Directives: statement yang mempengaruhi baik listing program maupun cara kode

mesin dibangkitkan• Contoh: DB directive memerintahkan MASM u/ meng-create storage untuk variabel

bernama count dan menginisialisasikan dgn 50count db 50

– Instruksi: dieksekusi oleh Mikroprosessor saat runtime.• Tipe umum: program control, data transfer, arithmetic, logical, dan I/O

Page 12: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

I.6 Operator Aritmatik– Misalkan dalam C, operasi penjumlahan:

a=b+c;

– Operasi penjumlahan dalam MIPS dan intel:add a,b,c add b,c

mov a,b

– Operasi pengurangan (a = b – c) dalam MIPS dan intel:sub a,b,c sub b,c

move a,b

I.7 Operasi-operasi kompleks– Misalkan: a=b+c+d-e;– Menjadi (dlm MIPS)

add t0,b,c #t0=b+cadd t1,t0,d #t1=t0+dsub a,t1,c #a=t1-e

I.6 Operator Aritmatik– Misalkan dalam C, operasi penjumlahan:

a=b+c;

– Operasi penjumlahan dalam MIPS dan intel:add a,b,c add b,c

mov a,b

– Operasi pengurangan (a = b – c) dalam MIPS dan intel:sub a,b,c sub b,c

move a,b

I.7 Operasi-operasi kompleks– Misalkan: a=b+c+d-e;– Menjadi (dlm MIPS)

add t0,b,c #t0=b+cadd t1,t0,d #t1=t0+dsub a,t1,c #a=t1-e

CatatanKompiler-kompiler biasanyamenggunakan variabel-2 temporalKetika membangkitan kode

Page 13: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

I.8. Representasi data– Bits: 0 dan 1– Bit string (sederetan dari bits (sequence of bits))

8 bits 1 Byte16 bits half-word32 bits word64 bits double-word

– Karakter-2 – satu byte, biasanya menggunakan ASCII– Bilangan integer – disimpan 2’s complement– Floating point – menggunakan suatu mantissa dan

ekponensial(m x 2e)

I.8. Representasi data– Bits: 0 dan 1– Bit string (sederetan dari bits (sequence of bits))

8 bits 1 Byte16 bits half-word32 bits word64 bits double-word

– Karakter-2 – satu byte, biasanya menggunakan ASCII– Bilangan integer – disimpan 2’s complement– Floating point – menggunakan suatu mantissa dan

ekponensial(m x 2e)

Page 14: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

I.9. Penyimpan Data (data Storage)– Pada Bahasa tingkat tinggi, data disimpan dalam variabel– Dalam prakteknya, data disimpan pada banyak

tempat/media yang berbeda:• Disk• Random Access Memory (RAM)• Cache (RAM atai disk)• Registers

I.9. Penyimpan Data (data Storage)– Pada Bahasa tingkat tinggi, data disimpan dalam variabel– Dalam prakteknya, data disimpan pada banyak

tempat/media yang berbeda:• Disk• Random Access Memory (RAM)• Cache (RAM atai disk)• Registers

Page 15: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

I.10. Organisasi Register– Organisasi register merupakan satu aspek yang

menentukan tentang “Arsitektur Prosessor” tertentu– Tiga mekanisme dasar untuk Operator/operand

• Akkumulator : arsitektur yang menggunakan suatu registertunggal u/ satu dari sources dan destination (contoh 8088)

• Stack : operand dipushed dan di-pop (contoh java machine)• General purpose : sejumlah terbatas register digunakan u/

menyimpan data u/ setiap maksud/tujuan (purpose)(kebanyakan sistem saat ini)

– Register: blok memori kecil kecepatan tinggi (small high-speed) yang digunakan u/ menyimpan data

– Focus general purpose register

I.10. Organisasi Register– Organisasi register merupakan satu aspek yang

menentukan tentang “Arsitektur Prosessor” tertentu– Tiga mekanisme dasar untuk Operator/operand

• Akkumulator : arsitektur yang menggunakan suatu registertunggal u/ satu dari sources dan destination (contoh 8088)

• Stack : operand dipushed dan di-pop (contoh java machine)• General purpose : sejumlah terbatas register digunakan u/

menyimpan data u/ setiap maksud/tujuan (purpose)(kebanyakan sistem saat ini)

– Register: blok memori kecil kecepatan tinggi (small high-speed) yang digunakan u/ menyimpan data

– Focus general purpose register

Page 16: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

Contoh Akkumulator– Misalkan: A=B+C;– Dalam arsitektur berbasis-akkumulator, menjadi:

load addressB

add addressC

store addressA

Contoh Stack– Misalkan: a=b+c;– Dalam Javacode

iload a #load b ke stack

iload c #load c ke stack

iadd #add dan puts hasil ke stack

istore a #store ke a

Contoh Akkumulator– Misalkan: A=B+C;– Dalam arsitektur berbasis-akkumulator, menjadi:

load addressB

add addressC

store addressA

Contoh Stack– Misalkan: a=b+c;– Dalam Javacode

iload a #load b ke stack

iload c #load c ke stack

iadd #add dan puts hasil ke stack

istore a #store ke a

Page 17: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan

I. Pengenalan (cont’d)

Register General Purpose (GP)– Pada arsitektur yang menggunakn register GP, data dapat diakses

dalam cara-cara yang berbeda• Load/Store (L/S) – data disimpan ke register-register, dioperasikan

di dalamnya, dan simpan balik ke memori (contoh. Seluruh set-setinstruksi RISC)

– Hardware u/operand-2 sederhana– Semakin kecil semakin cepat, karena “clock cycle” dapat

menjadi dan dipertahankan lebih cepat Penekanan pada Efisiensi

Memori-Memori – operand-2 dapat menggunakan alamat memori(memori addresses) sebagai keduanya sources dan destination(contoh INTEL)

Register General Purpose (GP)– Pada arsitektur yang menggunakn register GP, data dapat diakses

dalam cara-cara yang berbeda• Load/Store (L/S) – data disimpan ke register-register, dioperasikan

di dalamnya, dan simpan balik ke memori (contoh. Seluruh set-setinstruksi RISC)

– Hardware u/operand-2 sederhana– Semakin kecil semakin cepat, karena “clock cycle” dapat

menjadi dan dipertahankan lebih cepat Penekanan pada Efisiensi

Memori-Memori – operand-2 dapat menggunakan alamat memori(memori addresses) sebagai keduanya sources dan destination(contoh INTEL)

Page 18: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 1

Kuliah 2:2.1. Struktur Register2.2. Mode Pengalamatan2.3. Set Instruksi

Kuliah 2:2.1. Struktur Register2.2. Mode Pengalamatan2.3. Set Instruksi

Page 19: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 2

2.1. Struktur Register

Register:• Lokasi memori yang sangat khusus terkonstruksi

dari Flip-Flop• Didesain u/ menampung data, data tsb. dapat

diakses dan diakses dalam berbagai operasi dgnkecepatan tinggi.– U/ prosessor 8088/8086, 80188/80186, 80286

register 16 bit– U/ prosessor 80386/80486/80586/Pentium

register 32 bit– Optional u/ general purpose register not

independent 8 bit registers u/ High Order Byte danLow Order Byte

• Jenis-Jenis Register:– General-purpose registers (data registers):

– 16 bit: AX, BX, CX, DX– 8 bit : AH, AL, BH, BL, CH, CL, DH, DL

– Segment registers : CS, DS, SS, ES– Index register: SI, DI, IP– Pointer register: IP, SP– Flags registers: Overflow, Direction, Interrupt, Trap,

Sign, Zero, Auxiliary Carry, Parity, Carry– 16 bit, tetapi hanya 9 bit yang digunakan

Register:• Lokasi memori yang sangat khusus terkonstruksi

dari Flip-Flop• Didesain u/ menampung data, data tsb. dapat

diakses dan diakses dalam berbagai operasi dgnkecepatan tinggi.– U/ prosessor 8088/8086, 80188/80186, 80286

register 16 bit– U/ prosessor 80386/80486/80586/Pentium

register 32 bit– Optional u/ general purpose register not

independent 8 bit registers u/ High Order Byte danLow Order Byte

• Jenis-Jenis Register:– General-purpose registers (data registers):

– 16 bit: AX, BX, CX, DX– 8 bit : AH, AL, BH, BL, CH, CL, DH, DL

– Segment registers : CS, DS, SS, ES– Index register: SI, DI, IP– Pointer register: IP, SP– Flags registers: Overflow, Direction, Interrupt, Trap,

Sign, Zero, Auxiliary Carry, Parity, Carry– 16 bit, tetapi hanya 9 bit yang digunakan

Page 20: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 3

2.1. Struktur Register (cont’d)

2.1.1 General-purpose register (dataregister)

– Digunakan u/ operasi aritmatik dan datamovement

– Setiap register dapat dialamatkan sebagaisuatu nilai 16 bit atau 8 bit

• Contoh: AX (16 bit) upper 8 bit AH dan lower8 bit AL

2.1.1 General-purpose register (dataregister)

– Digunakan u/ operasi aritmatik dan datamovement

– Setiap register dapat dialamatkan sebagaisuatu nilai 16 bit atau 8 bit

• Contoh: AX (16 bit) upper 8 bit AH dan lower8 bit AL

Page 21: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 4

2.1. Struktur Register (cont’d)

– Posisi bit selalu di nomori dari kiri kekanan,dimulai dgn 0:

– Instruksi dpt beralamat 16-bit atau 8-bit dataregisters:

– Jika suatu 16-bit register dimodifikasi otomatis terkait ke 8-bit-nya

• Contoh: andaikan AX berisi 0000h. Jika suatunilai data 126Fh di-move ke AX, maka ALbeurbah menjadi 6Fh

– Atribut khusus GP-register:• AX (accumulator): operasi aritmatik, (operasi

lain juga lebih effisien jk dilakukan di resgiter ini)• BX (base):

– Operasi aritmatik dan data movement– Kemampuan pengalamatan khusus; yaitu berisi

alamat memori yang menunjuk ke variabel lain.– Catatan: SI, DI, dan BP juga memiliki kemampuan

khusus ini

16 bit AX registerAH register AL register

7 0 7 0

AX

AH AL

BX CX DX

BH BL CH CL DH DL

Page 22: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 5

2.1. Struktur Register (cont’d)

• CX (counter): counter u/ instruksi repeatingatau looping– Instruksi ini otomatis mengulang dan

menurunkan (decrement) CX dan “quit” jika CX 0

• DX (data): berperan khusus dalam operasiperkalian dan pembagian. Dalam perkalian,sabgai contoh, DX berisi high 16-bits dariproduk.

2.1.2. Segment Registers• Digunakan sebagai base locations u/ intruksi-2

program, data, dan stack.• Segment-2 register:

– CS (code segment): berisi base location seluruhinstruksi/kode yang dapat dieksekusi (executable)dalam suatu program

– DS (data segment): default base location u/variabel-2 memori.• CPU menghitung “offsets” variabel menggunakan nilai

DS yang sedang berlaku (current value of DS)

– SS (stack segmen): berisi base location u/ currentprogram stack

– ES (extra segment): additional base location u/variabel-2 memori

• CX (counter): counter u/ instruksi repeatingatau looping– Instruksi ini otomatis mengulang dan

menurunkan (decrement) CX dan “quit” jika CX 0

• DX (data): berperan khusus dalam operasiperkalian dan pembagian. Dalam perkalian,sabgai contoh, DX berisi high 16-bits dariproduk.

2.1.2. Segment Registers• Digunakan sebagai base locations u/ intruksi-2

program, data, dan stack.• Segment-2 register:

– CS (code segment): berisi base location seluruhinstruksi/kode yang dapat dieksekusi (executable)dalam suatu program

– DS (data segment): default base location u/variabel-2 memori.• CPU menghitung “offsets” variabel menggunakan nilai

DS yang sedang berlaku (current value of DS)

– SS (stack segmen): berisi base location u/ currentprogram stack

– ES (extra segment): additional base location u/variabel-2 memori

Page 23: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 6

2.1.3. Indeks Registers• Berisi offsets variabel-2

– Offset merujuk pada jarak suatu variabel, label,atau instruksi dari base segment-nya.

• U/ speed up pemrosesan strings, arrays, danstruktur data lainnya yang mengandung multipleelements.

• Index-2 register:– SI (source index):

• 8088’s string movement instruction, dimana stringsumber dituju oleh register SI biasanya mengandungsuatu nilai offset dari register DS, namun ia dapatberalamat variabel manapun

– DI (destination index):• destination u/ 8088’s string movement instruction.

• Biasanya berisi suatu offset dari register ES, namun iadapat beralamat variabel manapun

– BP ( base pointer):• Berisi offset yang diasumsikan dari register SS

bekerja seperti stack pointer

• Digunakan oleh suatu subroutine u/ menempatkanvariabel-2 yang di-passed ke stack melalui suatu“calling” program

2.1.3. Indeks Registers• Berisi offsets variabel-2

– Offset merujuk pada jarak suatu variabel, label,atau instruksi dari base segment-nya.

• U/ speed up pemrosesan strings, arrays, danstruktur data lainnya yang mengandung multipleelements.

• Index-2 register:– SI (source index):

• 8088’s string movement instruction, dimana stringsumber dituju oleh register SI biasanya mengandungsuatu nilai offset dari register DS, namun ia dapatberalamat variabel manapun

– DI (destination index):• destination u/ 8088’s string movement instruction.

• Biasanya berisi suatu offset dari register ES, namun iadapat beralamat variabel manapun

– BP ( base pointer):• Berisi offset yang diasumsikan dari register SS

bekerja seperti stack pointer

• Digunakan oleh suatu subroutine u/ menempatkanvariabel-2 yang di-passed ke stack melalui suatu“calling” program

2.1. Struktur Register (cont’d)

Page 24: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 7

2.1. Struktur Register (cont’d)

2.1.4. Pointer Registers• Antara lain:

– IP (instruction pointer):• Berisi lokasi dari instruksi berikut yang akan diekskusi.• CS dan IP berkombinasi membentuk alamat instruksi

berikut yang akan diekskusi

– SP (stack pointer):• Berisi offset atau jarak (distance) dari awal stack ke

top stack.• SS dan SP berkombinasi membentuk “complete top-of

stack address”

2.1.5. Flags Regsiters• Register 16-bit khusus dgn posisi bit tunggal yang

dipekerjakan (assigned) u/ menunjukkan statusCPU atau hasil-hasil operasi aritmatik.

• Dari 16 bit posisi hanya 9 bit posisi yang digunakandan diberi nama

2.1.4. Pointer Registers• Antara lain:

– IP (instruction pointer):• Berisi lokasi dari instruksi berikut yang akan diekskusi.• CS dan IP berkombinasi membentuk alamat instruksi

berikut yang akan diekskusi

– SP (stack pointer):• Berisi offset atau jarak (distance) dari awal stack ke

top stack.• SS dan SP berkombinasi membentuk “complete top-of

stack address”

2.1.5. Flags Regsiters• Register 16-bit khusus dgn posisi bit tunggal yang

dipekerjakan (assigned) u/ menunjukkan statusCPU atau hasil-hasil operasi aritmatik.

• Dari 16 bit posisi hanya 9 bit posisi yang digunakandan diberi nama

CXPXAXZSTIDOXXXX

0123456789101112131415

Page 25: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 8

2.1. Struktur Register (cont’d)

O = Overflow S = SignD = Direction Z = ZeroI = Interrupt A = Auxiliary CarryT = Trap P = ParityX = undefined C = Carry

• Catatan: posisi diatas tidak perlu diingat, karenaterdapat instruki yng didesain u/ mentes danmemanipulasi flags

• Sebuah Flags atau bit set jika nilainya 1, clearjk nilainya 0

• CPU menset flags melalui “turning” pada bit-2indvidual dlm register flags

• Terdapat dua tipe flags dasar:– Control flags– Status flags

Control Flags:– Fungsinya u/ mengontrol operasi CPU ( diset oleh

programmer)– Antara lain:

– Direction:– Mengontrol arah yang digunakan pada pemrosesan string– Nilai : up (1) dan down (0) ( diset melalui instruski STD

dan CLD

O = Overflow S = SignD = Direction Z = ZeroI = Interrupt A = Auxiliary CarryT = Trap P = ParityX = undefined C = Carry

• Catatan: posisi diatas tidak perlu diingat, karenaterdapat instruki yng didesain u/ mentes danmemanipulasi flags

• Sebuah Flags atau bit set jika nilainya 1, clearjk nilainya 0

• CPU menset flags melalui “turning” pada bit-2indvidual dlm register flags

• Terdapat dua tipe flags dasar:– Control flags– Status flags

Control Flags:– Fungsinya u/ mengontrol operasi CPU ( diset oleh

programmer)– Antara lain:

– Direction:– Mengontrol arah yang digunakan pada pemrosesan string– Nilai : up (1) dan down (0) ( diset melalui instruski STD

dan CLD

Page 26: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 9

2.1. Struktur Register (cont’d)

– Interrupt flags:– Memungkinan external interrupt berlaku– Disebabkan oleh devais HW misalkan keyboard, disk drive,

system clock timer– Nilai: 1 enable(EI), 0 disable (DI) (dikontrol melalui

instruksi CLI dan STI)– Trap flags:– Menentukan apakah CPU perlu dihentikan setelah setiap

instruksi dilaksanakan– Digunakan pada saat Debugging program TRACING

Status Flags:– Merefleksikan outcome dari operasi aritmatik dan logika– Antara lain

– Carry Flags:– Diset jika hasil op. aritmatik terlalu besar u/ di fit-kan ke

destination– Contoh: Jika nilai 200 dn 56 dijumlahkan, kemudian

diletakkan ke suatu 8-bit destination, 256 terlalu besarsehingga CF ini harus diset 1 (CY) atau 0 (No Carry(NC))

– Overflow Flags:– Diset jika hasil operasi aritmatik yang bertanda terlalu

besar u/ di-fitkan ke destination area– Nilai: 1 (OV), 0 (NV)

– Interrupt flags:– Memungkinan external interrupt berlaku– Disebabkan oleh devais HW misalkan keyboard, disk drive,

system clock timer– Nilai: 1 enable(EI), 0 disable (DI) (dikontrol melalui

instruksi CLI dan STI)– Trap flags:– Menentukan apakah CPU perlu dihentikan setelah setiap

instruksi dilaksanakan– Digunakan pada saat Debugging program TRACING

Status Flags:– Merefleksikan outcome dari operasi aritmatik dan logika– Antara lain

– Carry Flags:– Diset jika hasil op. aritmatik terlalu besar u/ di fit-kan ke

destination– Contoh: Jika nilai 200 dn 56 dijumlahkan, kemudian

diletakkan ke suatu 8-bit destination, 256 terlalu besarsehingga CF ini harus diset 1 (CY) atau 0 (No Carry(NC))

– Overflow Flags:– Diset jika hasil operasi aritmatik yang bertanda terlalu

besar u/ di-fitkan ke destination area– Nilai: 1 (OV), 0 (NV)

Page 27: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 10

2.1. Struktur Register (cont’d)

– Sign Flag

– Diset jika hasil operasi aritmatik atau logika negatif

– Karena bil. negatif memiliki suatu 1 pada posisi bittertinggi, sign flag selalu merupakan suatu copy dari bittanda destination

– Nilai: negatif (NG) dan positif (PL)

– Zero Flag

– Diset jika hasil operasi aritmatik atau logika zero

– Terutama digunakan pada instruksi-2 jump dan loop,supaya memungkinkan percabangan ke suatu lokasi barudalam suatu program yang berbasis “perbandingan antaradua nilai”

– Nilai: zero (ZR), Not Zero (NZ)

– Auxilairy Flag

– Diset jika suatu operasi mengakibatkan suatu Carry, daribit 3 ke bit 4, ( atau Borrow dari bit 3 ke bit 4) dari sebuahoperand

– Nilai: Aux Carry (AC), No Aux Carry (NA)

– Parity Flag

– Merefleksi jumlah bit hasil dari operasi aritmatik yangdiset.

• Jika terdapat jumlah bit genap (even) PE

• Jika terdapat jumlah bits ganjil (odd) PO

– Sign Flag

– Diset jika hasil operasi aritmatik atau logika negatif

– Karena bil. negatif memiliki suatu 1 pada posisi bittertinggi, sign flag selalu merupakan suatu copy dari bittanda destination

– Nilai: negatif (NG) dan positif (PL)

– Zero Flag

– Diset jika hasil operasi aritmatik atau logika zero

– Terutama digunakan pada instruksi-2 jump dan loop,supaya memungkinkan percabangan ke suatu lokasi barudalam suatu program yang berbasis “perbandingan antaradua nilai”

– Nilai: zero (ZR), Not Zero (NZ)

– Auxilairy Flag

– Diset jika suatu operasi mengakibatkan suatu Carry, daribit 3 ke bit 4, ( atau Borrow dari bit 3 ke bit 4) dari sebuahoperand

– Nilai: Aux Carry (AC), No Aux Carry (NA)

– Parity Flag

– Merefleksi jumlah bit hasil dari operasi aritmatik yangdiset.

• Jika terdapat jumlah bit genap (even) PE

• Jika terdapat jumlah bits ganjil (odd) PO

Page 28: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 11

2.1. Struktur Register (cont’d)

– Digunakan• oleh SO u/ memverifikasi integritas memori dan

• oleh Software komunikasi u/ memverifikasi kebenarantransmisi data

2.1.6. Perhitungan Alamat• Prosessor 8086/8088 kapasitas memori 1 MB =

220 = 1048576 Byte0000 terendah

:FFFF tertinggi

• Alamat merujuk pada suatu lokasi memori 8 bit !!• Alamat dieskpresikan dalam 1 diantara 2 format

hexdesimal berikut:– Alamat segment:offset 16-bit kombinasi suatu

base location (segment) dgn offset u/merepresntasikan actual location– Segmet register: digit terendah (161) tertinggi (164)– Offset register: digit terendah (160) tertinggi (163)

– Alamat absolute 20-bit merujuk ke suatu lokasimemori yang eksak (alamat fisik)

– Digunakan• oleh SO u/ memverifikasi integritas memori dan

• oleh Software komunikasi u/ memverifikasi kebenarantransmisi data

2.1.6. Perhitungan Alamat• Prosessor 8086/8088 kapasitas memori 1 MB =

220 = 1048576 Byte0000 terendah

:FFFF tertinggi

• Alamat merujuk pada suatu lokasi memori 8 bit !!• Alamat dieskpresikan dalam 1 diantara 2 format

hexdesimal berikut:– Alamat segment:offset 16-bit kombinasi suatu

base location (segment) dgn offset u/merepresntasikan actual location– Segmet register: digit terendah (161) tertinggi (164)– Offset register: digit terendah (160) tertinggi (163)

– Alamat absolute 20-bit merujuk ke suatu lokasimemori yang eksak (alamat fisik)

Page 29: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 12

2.1. Struktur Register (cont’d)

• Catatan:– digunakan segment:offset u/ mengatasi dilema:

bhw CPU dapat beralamat 1048576 byte (20 bits)sedangkan register hanya 16 bits

– Dimengert: segment register memiliki “4 impliedzero bits to right

• Contoh:segment:offset

08F1:0100

Nilai segment 0 8 F 1(0)

Nilai offset 0 1 0 0

------------ +

0 9 0 1 0

• Catatan:– digunakan segment:offset u/ mengatasi dilema:

bhw CPU dapat beralamat 1048576 byte (20 bits)sedangkan register hanya 16 bits

– Dimengert: segment register memiliki “4 impliedzero bits to right

• Contoh:segment:offset

08F1:0100

Nilai segment 0 8 F 1(0)

Nilai offset 0 1 0 0

------------ +

0 9 0 1 0

4 implied Zero bits

0:

524288:

1048573:

1048575

0000 : 0000:

7000 : FFFF:

F000 : FFFD:

F000 : FFFF

00000:

7FFFF:

FFFFD:

FFFFF

Alamat fisik (D)segment:offsetAlamat fisik (H)

Page 30: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 13

2.2. Mode Pengalamatan

• Ada beberapa cara (mode) untuk mengaksesoperand; Operand dapat terdapat di register,dalam instruksi, dalam memori atau I/O

• 8088 mempunyai sekitar 24 addressing mode dikelompok menjadi 7:• Register Addressing• Immediate Addressing• Direct Addressing• Register Indirect Addressing• Base Relative Addressing• Direct Indexed Addressing• Base Indexed Addressing

2.2.1. Register dan Immediate Addressing• Register Add.: Operand disimpan/diambil dari register

MOV AX,CX ; copy 16 bit isi CX (count regs)ke AX (acc. regs)

• Immediate Add.: source operand dapat berbentukkonstanta 8/16 bit; Konstanta ini terdapat dalaminstruksi.MOV CX,500

MOV CL,-30 ; simpan –30 ke reg. AL

• Ada beberapa cara (mode) untuk mengaksesoperand; Operand dapat terdapat di register,dalam instruksi, dalam memori atau I/O

• 8088 mempunyai sekitar 24 addressing mode dikelompok menjadi 7:• Register Addressing• Immediate Addressing• Direct Addressing• Register Indirect Addressing• Base Relative Addressing• Direct Indexed Addressing• Base Indexed Addressing

2.2.1. Register dan Immediate Addressing• Register Add.: Operand disimpan/diambil dari register

MOV AX,CX ; copy 16 bit isi CX (count regs)ke AX (acc. regs)

• Immediate Add.: source operand dapat berbentukkonstanta 8/16 bit; Konstanta ini terdapat dalaminstruksi.MOV CX,500

MOV CL,-30 ; simpan –30 ke reg. AL

Page 31: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 14

2.2. Mode Pengalamatan(cont’d)

K EQU 1024 ; source operand dapat

; berbentuk simbol yg; didefine dgn EQU

• INGAT:– 8 bit signed number: 127(7H) s/d –128(80H)– 16 bit signed number: 32767(7FFFH) s/d –32768(8000H)– Max 8 bit unsigned #: 255 (0FFH)– Max 16 bit unsigned #: 65535 (0FFFFH)

2.2.2 Direct AddressingMOV AX, TABLE ; load isi lokasi memori

; Table ke AX

K EQU 1024 ; source operand dapat

; berbentuk simbol yg; didefine dgn EQU

• INGAT:– 8 bit signed number: 127(7H) s/d –128(80H)– 16 bit signed number: 32767(7FFFH) s/d –32768(8000H)– Max 8 bit unsigned #: 255 (0FFH)– Max 16 bit unsigned #: 65535 (0FFFFH)

2.2.2 Direct AddressingMOV AX, TABLE ; load isi lokasi memori

; Table ke AX0000

AA

BB

0001

0002

0003

0004

0005

Data segment

TABLE

TABLE+2

AABB AX

Page 32: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 15

2.2. Mode Pengalamatan(cont’d)

2.2.3. Register Indirect Addressing• Offset: effectives address (EA) jarak letak operand,

dalam byte terhitung dari awal segment• Address memory = offset + isi DS digeser dgn 0000

MOV AX,[BX] ; load isi memory yang

; ditunjuk BX ke AX

• Pertanyaan: bagaimana meletekkan EA ke BX?MOV BX,OFFSET TABLE

MOV BX,OFFSET TABLE

MOV AX,[BX]

2.2.3. Register Indirect Addressing• Offset: effectives address (EA) jarak letak operand,

dalam byte terhitung dari awal segment• Address memory = offset + isi DS digeser dgn 0000

MOV AX,[BX] ; load isi memory yang

; ditunjuk BX ke AX

• Pertanyaan: bagaimana meletekkan EA ke BX?MOV BX,OFFSET TABLE

MOV BX,OFFSET TABLE

MOV AX,[BX]= MOV AX,TABLE

0005

0004

0003

AA0002

BB0001

0000

Datasegment

TABLE

0001 BX

AABB AX

Page 33: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 16

2.2. Mode Pengalamatan(cont’d)

2.2.4. Base Relative Addressing• EA dihitung: Displacment + isi BX atau BP

– BX cocok dipakai jika data yang hendak diakses terdapat dibeberapa lokasi memori (terpisah)

MOV AX,[BX]+4 ;Load isi field record yang;terdapat di byte ke 5 dan 6,;dimana awal address record di;BX ke AX

2.2.4. Base Relative Addressing• EA dihitung: Displacment + isi BX atau BP

– BX cocok dipakai jika data yang hendak diakses terdapat dibeberapa lokasi memori (terpisah)

MOV AX,[BX]+4 ;Load isi field record yang;terdapat di byte ke 5 dan 6,;dimana awal address record di;BX ke AX

AA001F

BB001E

001D

001C

001B

001A

Datasegment

BX 001A +

Displacement(mulai byte 0)

AABB AX

Page 34: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 17

2.2. Mode Pengalamatan(cont’d)

2.2.5. Direct Indexed Addressing• EA = Displacement + Index Reg DI atau SI

– DI atau SI cocok untuk akses elemen dalam Tabel– Displacement ke awal TABLE– Index reg: ke elemen di dalam Tabel

MOV DI,4

MOV AX,TABLE[DI] ;Load elemen ke3 ke AX;TABLE adalah Tabel 1 Byte

2.2.5. Direct Indexed Addressing• EA = Displacement + Index Reg DI atau SI

– DI atau SI cocok untuk akses elemen dalam Tabel– Displacement ke awal TABLE– Index reg: ke elemen di dalam Tabel

MOV DI,4

MOV AX,TABLE[DI] ;Load elemen ke3 ke AX;TABLE adalah Tabel 1 Byte

AA0006

BB0005

0004

0003

0002

0001

0000

DI 0004 +

AABB AX

Catatan:Diandaikan kita punya tabeldg

TABLE

TABLE+2

TABLE+4

Page 35: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 18

2.2. Mode Pengalamatan(cont’d)

2.2.6. Base Indexed Addressing• Cocok untuk akses “two dimensional array”• EA = Base regs + Index regs + Displ.

• Contoh:MOV AX,[BX+2+DI] ;operand dapat ditulis

MOV AX,[DI+BX+2] ;dlm [],urutan sembarang

MOV AX,[BX+2][DI];displacemnent dpt digabung

MOV AX,[BX][DI+2];dgn salah satu register

2.2.6. Base Indexed Addressing• Cocok untuk akses “two dimensional array”• EA = Base regs + Index regs + Displ.

• Contoh:MOV AX,[BX+2+DI] ;operand dapat ditulis

MOV AX,[DI+BX+2] ;dlm [],urutan sembarang

MOV AX,[BX+2][DI];displacemnent dpt digabung

MOV AX,[BX][DI+2];dgn salah satu register

StartingAdresss ofarray

column row

Page 36: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 19

2.3. Set Instruksi

• Tipe-tipe instruksi:• Data Transfer (Register, Memory, I/O port)• Operasi Aritmatik (bil. Binary atau Bil. BCD)• Manipulasi Bit (op. SHIFT, ROTATE, Logical

dalam regs dan memory)• Control Transfer• String• Interrupt• Process Control

2.3.1 Data Transfer• Berfungsi memindahkan (mengkopi) data dan address

diantara regs dan lokasi memori atau I/O port• Terbagi menjadi:

– General Purpose : MOV, PUSH, POP, XCHG, XLAT– I/O : IN,OUT– Address Transfer : LEA, LDS, LES– Flag Transfer : LAHF, SAHF, PUSHF, POPF

• Tipe-tipe instruksi:• Data Transfer (Register, Memory, I/O port)• Operasi Aritmatik (bil. Binary atau Bil. BCD)• Manipulasi Bit (op. SHIFT, ROTATE, Logical

dalam regs dan memory)• Control Transfer• String• Interrupt• Process Control

2.3.1 Data Transfer• Berfungsi memindahkan (mengkopi) data dan address

diantara regs dan lokasi memori atau I/O port• Terbagi menjadi:

– General Purpose : MOV, PUSH, POP, XCHG, XLAT– I/O : IN,OUT– Address Transfer : LEA, LDS, LES– Flag Transfer : LAHF, SAHF, PUSHF, POPF

Page 37: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 20

2.3. Set Instruksi (cont’d)

General-Purpose Instructions1. MOV format: MOV destination,Source

• Contoh:MOV AX.TABLE ;dari mem reg

MOV TABLE,AX ;dari reg mem

MOV ES:[BX],AX ;reg segment reg (override)

MOV DS,AX ; 16 bit reg 16 seg. Reg

MOV BL,AL ; 8 bit reg 8 bit reg

MOV CL,-30 ;konstanta reg

MOV DEST,25H ;konstanta mem

General-Purpose Instructions1. MOV format: MOV destination,Source

• Contoh:MOV AX.TABLE ;dari mem reg

MOV TABLE,AX ;dari reg mem

MOV ES:[BX],AX ;reg segment reg (override)

MOV DS,AX ; 16 bit reg 16 seg. Reg

MOV BL,AL ; 8 bit reg 8 bit reg

MOV CL,-30 ;konstanta reg

MOV DEST,25H ;konstanta mem

IMMEDIATE

MEMORYREGISTER

AX,BX,CX,DXSI,DI,BP,SP

Segement registerCS,DS,ES,SS

Transfer Data: 1 Byte/1 WordAntara Reg MemoryReg RegImmediate reg/memorydata value

Page 38: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 21

2.3. Set Instruksi (cont’d)

• Perkecualian/tidak dapat dikerjakan:– Move data antar 2 lokasi memori secara langsung

tidak kangsung via general purpose reg.MOV AX,POUNDS

MOV WEIGHT,AX

– Load, immediate value ke segment reg. Via GP reg.MOV AX, DATA_SEG ;load nomor seg. dariMOV DS, AX ;data seg ke DS menunjukan

;letak data seg.– Move isi 1 seg.reg ke seg-reg yag lain secara

langsung tidak langsung via GP reg.MOV AX,ES ;Membuat DS menunjuk ke

;seg. yang di

MOV DS,AX ;tunjuk oleh ES

– Segement register:• CS tidak dapat dipakai sbg destination

2. PUSH dan POP• Stack

– dipakai u/ menyimpan address instruksiCall dan return

– Sbg penyimpan sementara dari operand: data-reg atau memori

• Perkecualian/tidak dapat dikerjakan:– Move data antar 2 lokasi memori secara langsung

tidak kangsung via general purpose reg.MOV AX,POUNDS

MOV WEIGHT,AX

– Load, immediate value ke segment reg. Via GP reg.MOV AX, DATA_SEG ;load nomor seg. dariMOV DS, AX ;data seg ke DS menunjukan

;letak data seg.– Move isi 1 seg.reg ke seg-reg yag lain secara

langsung tidak langsung via GP reg.MOV AX,ES ;Membuat DS menunjuk ke

;seg. yang di

MOV DS,AX ;tunjuk oleh ES

– Segement register:• CS tidak dapat dipakai sbg destination

2. PUSH dan POP• Stack

– dipakai u/ menyimpan address instruksiCall dan return

– Sbg penyimpan sementara dari operand: data-reg atau memori

Page 39: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 22

2.3. Set Instruksi (cont’d)

• FormatPUSH source;simpan 1 word reg. operand

;atau 1 word memori operand ;di topstack

POP destination ;biasnya PUSH dan POP ;dipakai bersama

• Contoh:PUSH SI ;kedalam stack dpt simpan

PUSH DS ;GP reg./seg.reg/CS

PUSH CS

PUSH COUNTER ;dapat pula lokasi memori

PUSH TABLE[BX][DI];

PUSH AX; transfer 1 word yang ditunjuk SP ke operandAX

POP AX; SP menunjuk address, byte yang semula kosongdipakai untuk menyimpan isi AX

• FormatPUSH source;simpan 1 word reg. operand

;atau 1 word memori operand ;di topstack

POP destination ;biasnya PUSH dan POP ;dipakai bersama

• Contoh:PUSH SI ;kedalam stack dpt simpan

PUSH DS ;GP reg./seg.reg/CS

PUSH CS

PUSH COUNTER ;dapat pula lokasi memori

PUSH TABLE[BX][DI];

PUSH AX; transfer 1 word yang ditunjuk SP ke operandAX

POP AX; SP menunjuk address, byte yang semula kosongdipakai untuk menyimpan isi AX

AfterPOP AX

AfterPUSH AX

BerforePUSH

AX

SS:01FESPSS:01FESS:01FESP

SS:01FC(AX)SS:01FCSP(AX)

SS:01FC

SS:01FASS:01FASS:01FA

SS:01F8SS:01F8SS:01F8

STACKSTACKSTACK

Page 40: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 23

2.3. Set Instruksi (cont’d)

• PUSH dan POP dipakai u/ copy 1 seg-reg ke seg-reglangsungPUSH ES ; copy ES ke DS lambat jika

POP DS ; dibandingkan dgn inst. MOV

• Stack biasa dipakai diawal subroutine

3. EXCHANGE (XCHG)• Instruksi u/ mempertukarkan isi source operand dgn

destination operand, dalam ukuran byte atau word• Dapat mempertukarkan isi 2 memori dan isi suatu reg

dan lokasi memori• Isi segemetn reg. tidak dapat dipertukarkan (dgn

instruksi XCHG)XCHG AX,BX ;pertukaran 2 word reg

XCHG AL,BH ;pertukaran 2 Byte reg

XCHG WORD_LOC,DX ;pertukaran dgn lok. Mem

XCHG DL,BYTE_LOC ;pertukaran dgn reg.

4. TRANSLATE (XLAT)• Instruksi u/ membaca/memeriksa nilai-2 (byte) yang

terdpt dalam suatu TABEL dan kemudian mengkopi (load)ke dalam register AL (ukuran max TABElL=256 byte)

• Sebelum eksekusi XLAT starting address daripadatabelnya harus disimpan(load) ke BX dan index dari byteyang dimaksud ke dalam AL

• PUSH dan POP dipakai u/ copy 1 seg-reg ke seg-reglangsungPUSH ES ; copy ES ke DS lambat jika

POP DS ; dibandingkan dgn inst. MOV

• Stack biasa dipakai diawal subroutine

3. EXCHANGE (XCHG)• Instruksi u/ mempertukarkan isi source operand dgn

destination operand, dalam ukuran byte atau word• Dapat mempertukarkan isi 2 memori dan isi suatu reg

dan lokasi memori• Isi segemetn reg. tidak dapat dipertukarkan (dgn

instruksi XCHG)XCHG AX,BX ;pertukaran 2 word reg

XCHG AL,BH ;pertukaran 2 Byte reg

XCHG WORD_LOC,DX ;pertukaran dgn lok. Mem

XCHG DL,BYTE_LOC ;pertukaran dgn reg.

4. TRANSLATE (XLAT)• Instruksi u/ membaca/memeriksa nilai-2 (byte) yang

terdpt dalam suatu TABEL dan kemudian mengkopi (load)ke dalam register AL (ukuran max TABElL=256 byte)

• Sebelum eksekusi XLAT starting address daripadatabelnya harus disimpan(load) ke BX dan index dari byteyang dimaksud ke dalam AL

Page 41: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 24

2.3. Set Instruksi (cont’d)

• Format: XLAT source_table• Urutan instruksi u/ memeriksa byte ke 10 dari tabel

S_TAB:MOV AL,10 ;load harga index AL

MOV BX,OFFSETS_TAB ;load starting add. S_TAB ;ke BX

XLAT S_TAB ;ambil harga dlm tabel ke ;AL

• XLAT cocok u/ konversi yang membutuhkan waktuperhitungan yang lama, mislakan konversi ASCII displaycode dari hexadesimal digit

INPUT/OUTPUT instructions• Dipakai u/ berkomunikasi dgn peripheral devices• Format: IN accumulator, port

OUT port, accumulator– Accumulator AL = byte trans.; AX= Word transf.– PORT bil desimal(0-255) yang menunjukkan walah satu

dari 256 device dalam sistem

• Reg DX– Dapat dipakai sbg PORT operand (64 K port)– Mudah merubah nomor prot dan dapt mengirim 1 data je

beberapa port yang berbeda

• Format: XLAT source_table• Urutan instruksi u/ memeriksa byte ke 10 dari tabel

S_TAB:MOV AL,10 ;load harga index AL

MOV BX,OFFSETS_TAB ;load starting add. S_TAB ;ke BX

XLAT S_TAB ;ambil harga dlm tabel ke ;AL

• XLAT cocok u/ konversi yang membutuhkan waktuperhitungan yang lama, mislakan konversi ASCII displaycode dari hexadesimal digit

INPUT/OUTPUT instructions• Dipakai u/ berkomunikasi dgn peripheral devices• Format: IN accumulator, port

OUT port, accumulator– Accumulator AL = byte trans.; AX= Word transf.– PORT bil desimal(0-255) yang menunjukkan walah satu

dari 256 device dalam sistem

• Reg DX– Dapat dipakai sbg PORT operand (64 K port)– Mudah merubah nomor prot dan dapt mengirim 1 data je

beberapa port yang berbeda

Page 42: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 25

2.3. Set Instruksi (cont’d)

• CONTOH:IN AL,200 ; input dari port 200 dgn

;ukuran 1 byte atau dari

IN AL,Port_val ;nama portnya.

OUT 30H,AX ;output 1 word ke port 30H

OUT DX, AX ;atau ke port yang si ;tunjuk DX

Address Transfer Instructions• Transfer address suatu variabel load address ke reg

mirip dgn instruksi move• LEA (Load Effective Address)

Mis: DI = 5LEA BX,TABLE[DI]; load offset address

dari TABLE+5 ke BX

• LDS (Load Pointe using DS)– Membaca 32 bit dari memori, kemudian load 16 bit

pertama ke reg tertentu dan 16 bit ke dua ke DSLDS reg16, mem32

• LES (load pointer using ES)– Idem LDS, tetapi tidak ke DS tetapi ke ES

• CONTOH:IN AL,200 ; input dari port 200 dgn

;ukuran 1 byte atau dari

IN AL,Port_val ;nama portnya.

OUT 30H,AX ;output 1 word ke port 30H

OUT DX, AX ;atau ke port yang si ;tunjuk DX

Address Transfer Instructions• Transfer address suatu variabel load address ke reg

mirip dgn instruksi move• LEA (Load Effective Address)

Mis: DI = 5LEA BX,TABLE[DI]; load offset address

dari TABLE+5 ke BX

• LDS (Load Pointe using DS)– Membaca 32 bit dari memori, kemudian load 16 bit

pertama ke reg tertentu dan 16 bit ke dua ke DSLDS reg16, mem32

• LES (load pointer using ES)– Idem LDS, tetapi tidak ke DS tetapi ke ES

Page 43: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 26

2.3. Set Instruksi (cont’d)

2.3.2. Instruksi Aritmatik• 8088 dapat melaksanakan operasi aritmatik

terhadap:– Bil. Binary (bertanda/tidak)– Bil. Desimal tak bertanda (packed/unpacked)

• Penyimpanan bil dalam memori:– Low data-lowa Address;– High data-high Address– Contoh:

Menyimpan 1234H dilokasi memori NUM34 H di NUM12 H di NUM+1

• ADD (adding), ADC (add with carry)– ADD AX,CX ; terbatas hanya s/d 16 bit– ADC BX,DX ; bila hanya >16bit bit ke 17 di CF

dest=dest+source+carry– ADD AX,MEM_Word– ADD AL,10 ; konstanta ke reg

ADD dan ADC memperngaruhi Flag register:CF, PF, AF, ZF, SF, OF

2.3.2. Instruksi Aritmatik• 8088 dapat melaksanakan operasi aritmatik

terhadap:– Bil. Binary (bertanda/tidak)– Bil. Desimal tak bertanda (packed/unpacked)

• Penyimpanan bil dalam memori:– Low data-lowa Address;– High data-high Address– Contoh:

Menyimpan 1234H dilokasi memori NUM34 H di NUM12 H di NUM+1

• ADD (adding), ADC (add with carry)– ADD AX,CX ; terbatas hanya s/d 16 bit– ADC BX,DX ; bila hanya >16bit bit ke 17 di CF

dest=dest+source+carry– ADD AX,MEM_Word– ADD AL,10 ; konstanta ke reg

ADD dan ADC memperngaruhi Flag register:CF, PF, AF, ZF, SF, OF

high low

Page 44: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 27

2.3. Set Instruksi (cont’d)

• SUB (subtract), SBB(subract with borrow)– SUB AX,BX ; dest=dest - source– SBB BX,DX ; dest=dest-soruce-carry

• Perintah lainnya:– DEC (decrement destination by one)– MUL, IMUL (integer mult.)– DIV (divide, unsigned), IDIB (integer divide signed)

• SUB (subtract), SBB(subract with borrow)– SUB AX,BX ; dest=dest - source– SBB BX,DX ; dest=dest-soruce-carry

• Perintah lainnya:– DEC (decrement destination by one)– MUL, IMUL (integer mult.)– DIV (divide, unsigned), IDIB (integer divide signed)

Page 45: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 1

Kuliah 3:3.1. Debugging dan TASM3.2. Interrupt

Kuliah 3:3.1. Debugging dan TASM3.2. Interrupt

Page 46: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 2

3.1.1. Debugging

• Proses Pembuatan ProgramTerdapat 5 langkah:

– Desain Algoritma:– Penetapan masalah– Pengusulan solusi yang terbaik– Pembuatan diagram skematik yang digunakan agar

usulan solusi lebih baik flowchart

– Pengkodean algoritma– Penulisan program dalam bahasa pemrograman

tertentu

– Penerjemaahan ke bahasa mesin– Pembuatan program obyek, atau dgn kata lain,

program ditulis dalam suatu deret/urutan 0 dan 1yang dapat diinterpretasi oleh prosessor

– Test programEksekusi program pada mesin komputer

– Mengeliminasi kesalahan yang terdeteksi– Koreksi kesalahan umumnya memerlukan

pengulangan seluruh langkah-2 dari langkah 1 atau 2

Untuk membuat program dlm bahasa rakitan tersediadua option:– Mengunakan Turbo Assembler (TASM, Borland)– Debugger

• Proses Pembuatan ProgramTerdapat 5 langkah:

– Desain Algoritma:– Penetapan masalah– Pengusulan solusi yang terbaik– Pembuatan diagram skematik yang digunakan agar

usulan solusi lebih baik flowchart

– Pengkodean algoritma– Penulisan program dalam bahasa pemrograman

tertentu

– Penerjemaahan ke bahasa mesin– Pembuatan program obyek, atau dgn kata lain,

program ditulis dalam suatu deret/urutan 0 dan 1yang dapat diinterpretasi oleh prosessor

– Test programEksekusi program pada mesin komputer

– Mengeliminasi kesalahan yang terdeteksi– Koreksi kesalahan umumnya memerlukan

pengulangan seluruh langkah-2 dari langkah 1 atau 2

Untuk membuat program dlm bahasa rakitan tersediadua option:– Mengunakan Turbo Assembler (TASM, Borland)– Debugger

Page 47: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 3

3.1.1. Debugging (cont’d)

• Debug:– Hanya dapat membuat program dgn extension

*.COM karena karakteristik sifat program ini – program tidak lebih besar 64 K dan– Program harus dimulai dgn displacment, offset, atau

0100H memory direction didalam segment tertentu(spesific)

– Kumpulan perintah debug:A: merakit intruksi simbolik kode mesinD: menampilkan isi suatu daerah memoriE: memasukan data ke memori, dimulai pada lokasitertentuG: run executable program ke memoriN: menamai programP: ekskusi sekumpulan instruksi yang terkaitQ: quitR: menampilkan isi satu atau lebih registersT: trace isi sebuah instruksiU: unassembled kode mesin ke kode simbolikW: menulis program ke disk

– Dengan debug visualisasi nilai registers internaldari CPU

• Memulai debug:C:/>debug[enter]

• Debug:– Hanya dapat membuat program dgn extension

*.COM karena karakteristik sifat program ini – program tidak lebih besar 64 K dan– Program harus dimulai dgn displacment, offset, atau

0100H memory direction didalam segment tertentu(spesific)

– Kumpulan perintah debug:A: merakit intruksi simbolik kode mesinD: menampilkan isi suatu daerah memoriE: memasukan data ke memori, dimulai pada lokasitertentuG: run executable program ke memoriN: menamai programP: ekskusi sekumpulan instruksi yang terkaitQ: quitR: menampilkan isi satu atau lebih registersT: trace isi sebuah instruksiU: unassembled kode mesin ke kode simbolikW: menulis program ke disk

– Dengan debug visualisasi nilai registers internaldari CPU

• Memulai debug:C:/>debug[enter]

Page 48: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 4

3.1.1. Debugging (cont’d)

-r[enter]AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000SI=0000 DI=0000 DS=0D62 ES=0D62 SS=0D62 CS=0D62IP=0100 NV EI PL NZ NA PO NC 0D62:0100 2ECS:0D62:0101 803ED3DF00 CMP BYTE PTR [DFD3],00CS:DFD3=03

Seluruh isi registers internal ditampilkanAtau dgn menggunakan parameter nama register,mis:-rbx BX 0000:

akan ditampikan isi register BX dan indikator debugberubah dari “-” “:” (ini berarti kita dapat mengisinilai baru dari register BX (masukan nilai + enter),atau kita tetap mempertahankan nilai lama (tekanlangsung enter tanpa mengetik nilai)

• Pembuatan program assembler dasar• Menginisialisai Debug, yaitu mengetik

debug[enter] pada prompt OS• Assemble suatu program dgn perintah “a” yaitu

a parameter[enter]• Parameter alamat awal proses perakitan• Jika tanpa parameter diinisialisasi pada posisi

(locality) yang dispesifikasikan oleh CS:IP (biasanya100h yaitu locality dimana sebuah program dgnextension *.CON diinisialisasi )

-r[enter]AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000SI=0000 DI=0000 DS=0D62 ES=0D62 SS=0D62 CS=0D62IP=0100 NV EI PL NZ NA PO NC 0D62:0100 2ECS:0D62:0101 803ED3DF00 CMP BYTE PTR [DFD3],00CS:DFD3=03

Seluruh isi registers internal ditampilkanAtau dgn menggunakan parameter nama register,mis:-rbx BX 0000:

akan ditampikan isi register BX dan indikator debugberubah dari “-” “:” (ini berarti kita dapat mengisinilai baru dari register BX (masukan nilai + enter),atau kita tetap mempertahankan nilai lama (tekanlangsung enter tanpa mengetik nilai)

• Pembuatan program assembler dasar• Menginisialisai Debug, yaitu mengetik

debug[enter] pada prompt OS• Assemble suatu program dgn perintah “a” yaitu

a parameter[enter]• Parameter alamat awal proses perakitan• Jika tanpa parameter diinisialisasi pada posisi

(locality) yang dispesifikasikan oleh CS:IP (biasanya100h yaitu locality dimana sebuah program dgnextension *.CON diinisialisasi )

Page 49: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 5

3.1.1. Debugging (cont’d)

• Rekomendasi: lebih baik alamat awal ditulis u/menghindari masalah-2 yang terjadi segerasetelah register CS:IP digunakan dgn demikian kita ketikan:

a 100[enter]mov ax,0002[enter]mov bx,0004[enter]add ax,bx[enter]nop[enter][enter]

• Keterangan:– move nilai 0002 ke AX,– move nilai 0004 ke BX,– tambahkan nilai bx ke ax,– Intruksi nop finish the program

• Kemudian:C:\>debug-a 1000D62:0100 mov ax,00020D62:0103 mov bx,00040D62:0106 add ax,bx0D62:0108 nop0D62:0109

-t (execute setiap instruksi dari program)AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000SI=0000 DI=0000 DS=0D62 ES=0D62 SS=0D62CS=0D62 IP=0103 NV EI PL NZ NA PO NC 0D62:0103 BB0400MOV BX,0004

• Rekomendasi: lebih baik alamat awal ditulis u/menghindari masalah-2 yang terjadi segerasetelah register CS:IP digunakan dgn demikian kita ketikan:

a 100[enter]mov ax,0002[enter]mov bx,0004[enter]add ax,bx[enter]nop[enter][enter]

• Keterangan:– move nilai 0002 ke AX,– move nilai 0004 ke BX,– tambahkan nilai bx ke ax,– Intruksi nop finish the program

• Kemudian:C:\>debug-a 1000D62:0100 mov ax,00020D62:0103 mov bx,00040D62:0106 add ax,bx0D62:0108 nop0D62:0109

-t (execute setiap instruksi dari program)AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000SI=0000 DI=0000 DS=0D62 ES=0D62 SS=0D62CS=0D62 IP=0103 NV EI PL NZ NA PO NC 0D62:0103 BB0400MOV BX,0004

Page 50: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 6

3.1.1. Debugging (cont’d)

-tAX=0002 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000SI=0000 DI=0000 DS=0D62 ES=0D62 SS=0D62CS=0D62 IP=0106 NV EI PL NZ NA PO NC0D62:0106 01D8 ADD AX,BX

-tAX=0006 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000SI=0000 DI=0000 DS=0D62 ES=0D62 SS=0D62 CS=0D62IP=0108 NV EI PL NZ NA PE NC 0D62:0108 90 NOP

• Menyimpan program• Cek panjang prorgram dgn perintah “h”

-h 10a 100 (alamat akhir 10a)020a 000a

– Menamai prorgram-n test.com

– Gunakan perintah “rcx” untuk mengubah nilairegistes CX dgn nilai yg diperoleh dari ukuran file 000a-rcxCX 0000:000a

– Terakhir, gunakan perintah “w” u/ menyimpan-wWriting 000A bytes

-tAX=0002 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000SI=0000 DI=0000 DS=0D62 ES=0D62 SS=0D62CS=0D62 IP=0106 NV EI PL NZ NA PO NC0D62:0106 01D8 ADD AX,BX

-tAX=0006 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000SI=0000 DI=0000 DS=0D62 ES=0D62 SS=0D62 CS=0D62IP=0108 NV EI PL NZ NA PE NC 0D62:0108 90 NOP

• Menyimpan program• Cek panjang prorgram dgn perintah “h”

-h 10a 100 (alamat akhir 10a)020a 000a

– Menamai prorgram-n test.com

– Gunakan perintah “rcx” untuk mengubah nilairegistes CX dgn nilai yg diperoleh dari ukuran file 000a-rcxCX 0000:000a

– Terakhir, gunakan perintah “w” u/ menyimpan-wWriting 000A bytes

Page 51: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 7

3.1.1. Debugging (cont’d)

• Meload program– Berikan nama file yang akan diload– Load dgn perintah “l”-n test.com

-l

-u 100 1090C3D:0100 B80200 MOV AX,0002

0C3D:0103 BB0400 MOV BX,0004

0C3D:0106 01D8 ADD AX,BX

0C3D:0108 CD20 INT 20

Perintah “u” digunakan u/memverifikasikan bhw program telah diloaded kememori. Ini berarti dgn perintah ini: kode diunassemble, kemudian meanmpilakn hasilunassembleParameter mengindikasi Debug dari mana dandisassamble ke mana.

Debug selalu meload program ke memori padaalamat 100h, kecuali digunakan paramater lain.

• Meload program– Berikan nama file yang akan diload– Load dgn perintah “l”-n test.com

-l

-u 100 1090C3D:0100 B80200 MOV AX,0002

0C3D:0103 BB0400 MOV BX,0004

0C3D:0106 01D8 ADD AX,BX

0C3D:0108 CD20 INT 20

Perintah “u” digunakan u/memverifikasikan bhw program telah diloaded kememori. Ini berarti dgn perintah ini: kode diunassemble, kemudian meanmpilakn hasilunassembleParameter mengindikasi Debug dari mana dandisassamble ke mana.

Debug selalu meload program ke memori padaalamat 100h, kecuali digunakan paramater lain.

Page 52: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 8

3.1.2. TASM

• Membangun Program Assembler– Software yang diperlukan

– Editor pembuatan source program– Compiler menerjemahkan source program

ke program obyek ( TASM)– Linker menggenerasi executable program

dari program obyek ( TLINK)

• Pemrograman dgn TASM– Directives berikut penting untuk dimasukan

• .Model SMALL mendefinisikan model memoriyg digunakan dlm prog.

• .CODE mendefinisikan instruksi prog.• .STACK reserves suatu ruang memori bagi

instruksi-2 prog. ke stack• END finishes prog.

Langkah-langkahGunakan prog. Editor u/ membuat source prog.Contoh:

.MODEL SMALL ;memory model

.STACK ;memory space for program;instructions in the stack

.CODE ;the following lines are;program instructions

• Membangun Program Assembler– Software yang diperlukan

– Editor pembuatan source program– Compiler menerjemahkan source program

ke program obyek ( TASM)– Linker menggenerasi executable program

dari program obyek ( TLINK)

• Pemrograman dgn TASM– Directives berikut penting untuk dimasukan

• .Model SMALL mendefinisikan model memoriyg digunakan dlm prog.

• .CODE mendefinisikan instruksi prog.• .STACK reserves suatu ruang memori bagi

instruksi-2 prog. ke stack• END finishes prog.

Langkah-langkahGunakan prog. Editor u/ membuat source prog.Contoh:

.MODEL SMALL ;memory model

.STACK ;memory space for program;instructions in the stack

.CODE ;the following lines are;program instructions

Page 53: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 9

3.1.2. TASM (cont’d)

mov ah,1h ;moves the value 1h to

;register ah

mov cx,07h ;moves the value 07h to;register cx

int 10h ;10h interruption

mov ah,4ch ;moves the value 4 ch to

;register ah

int 21h ;21h interruption

END ;finishes the program code

Save program, misal contoh1.asm (disavedalam ASCII format !!)Gunakan TASM u/ membuat prog. Obyek

C:\>tasm contoh1.asm

Gunakan TLINK u/ membangun excutable prog.C:\>tlink contoh1.obj

Eksekusi executable prog.C:\>contoh1[enter]

Proses assembly manajemen segmen danperbandingan dgn tabel simbol (dalam hal token-token dari instruksi)

mov ah,1h ;moves the value 1h to

;register ah

mov cx,07h ;moves the value 07h to;register cx

int 10h ;10h interruption

mov ah,4ch ;moves the value 4 ch to

;register ah

int 21h ;21h interruption

END ;finishes the program code

Save program, misal contoh1.asm (disavedalam ASCII format !!)Gunakan TASM u/ membuat prog. Obyek

C:\>tasm contoh1.asm

Gunakan TLINK u/ membangun excutable prog.C:\>tlink contoh1.obj

Eksekusi executable prog.C:\>contoh1[enter]

Proses assembly manajemen segmen danperbandingan dgn tabel simbol (dalam hal token-token dari instruksi)

Page 54: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 10

3.1.2. TASM (cont’d)

– Contoh lain: (contoh2.asm).model small

.stack

.code

mov ah,2h ;moves the value 2h to register ah

mov dl,2ah ;moves de value 2ah to register

;dl;(Its the asterisk value in ;ASCII;format)

int 21h ;21h interruption

mov ah,4ch ;4ch function, goes to operating

;system

int 21h ;21h interruption

end ;finishes the program code

Dengan proses yang sama seperti contohsebelumnya, program akan menghasilkan karakterasterik “*” pada layar monitor

– Contoh lain: (contoh2.asm).model small

.stack

.code

mov ah,2h ;moves the value 2h to register ah

mov dl,2ah ;moves de value 2ah to register

;dl;(Its the asterisk value in ;ASCII;format)

int 21h ;21h interruption

mov ah,4ch ;4ch function, goes to operating

;system

int 21h ;21h interruption

end ;finishes the program code

Dengan proses yang sama seperti contohsebelumnya, program akan menghasilkan karakterasterik “*” pada layar monitor

Page 55: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 11

3.2 Interrupts

• Jenis-Jenis Interrupts• Internal HW interruptions

Ditimbulkan/digenerasi oleh peristiwa tertentuyang terjadi pada waktu/selama eksekusiprogramDiatur oleh HW dan tidak mungkin diubahContoh: tipe interrupt u/ counter clock internal;HW call interrupt ini u/ memaintance “time todate”

• External HW interupstionsDitimbulkan/digenerasi oleh devais peripheral,mis keyboard, printers, dsb.Biasa juga ditimbulkan/digenerasi oleh Co-prosessorTidak mungkin mendeaktivekanTidak dikirim langsung ke CPU, melainkan ke ICyang memiliki fungsi u/ menghandle secaraeksklusive interrupts ini. (IC PIC8259A, ygdikontrol oleh CPU dgn menggunakan urutankomunikasi PATH Control

• Software interruptions• Diaktifkan langsung oleh assembler melalui

sejumlah interuosi yg diharapkan dgn instruksiINT

• Jenis-Jenis Interrupts• Internal HW interruptions

Ditimbulkan/digenerasi oleh peristiwa tertentuyang terjadi pada waktu/selama eksekusiprogramDiatur oleh HW dan tidak mungkin diubahContoh: tipe interrupt u/ counter clock internal;HW call interrupt ini u/ memaintance “time todate”

• External HW interupstionsDitimbulkan/digenerasi oleh devais peripheral,mis keyboard, printers, dsb.Biasa juga ditimbulkan/digenerasi oleh Co-prosessorTidak mungkin mendeaktivekanTidak dikirim langsung ke CPU, melainkan ke ICyang memiliki fungsi u/ menghandle secaraeksklusive interrupts ini. (IC PIC8259A, ygdikontrol oleh CPU dgn menggunakan urutankomunikasi PATH Control

• Software interruptions• Diaktifkan langsung oleh assembler melalui

sejumlah interuosi yg diharapkan dgn instruksiINT

Page 56: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Bahasa Rakitan ABM 12

3.2 Interrupts (cont’d)

• Terdapat dua jenis:• DOS interruptions• BIOS interupstions

Perbedaannya:DOS int. lebih mudah digunakan, namun lebihlambat, karena int. jenis ini menggunakan BIOSBIOS int. lebih cepat, namun banyakkerugiannay karena BIOS bagian HW dan HW-specific

• Pemilihan interupts tergantung padakarakteristik yang akan kita berikan padaprogram: SPEED BIOS int; PORTABILITY DOS int.

• Interrupts yang sering digunakan• Int 21H (DOS interruption) Multiple class to

DIS functions• Int 10H (BIOS) Video I/O.• Int 16H (BIOS) Keyboard I/O• Int 17H (BIOS) Printer I/O

• Terdapat dua jenis:• DOS interruptions• BIOS interupstions

Perbedaannya:DOS int. lebih mudah digunakan, namun lebihlambat, karena int. jenis ini menggunakan BIOSBIOS int. lebih cepat, namun banyakkerugiannay karena BIOS bagian HW dan HW-specific

• Pemilihan interupts tergantung padakarakteristik yang akan kita berikan padaprogram: SPEED BIOS int; PORTABILITY DOS int.

• Interrupts yang sering digunakan• Int 21H (DOS interruption) Multiple class to

DIS functions• Int 10H (BIOS) Video I/O.• Int 16H (BIOS) Keyboard I/O• Int 17H (BIOS) Printer I/O

Page 57: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Interrupt 1/5

INTERRUPT Pengertian Interrupt Interupsi adalah suatu permintaan khusus pada mikroprocessor

untuk melakukan sesuatu, jika terjadi interupsi maka komputer akan menghentikan dahulu apa yang sedang dikerjakan dan melakukan apa yang diminta oleh yang menginterupsi.

Interrupt merupakan sub rutin yang sudah tersedia dalam memori komputer

Pada IBM PC dan kompatibelnya disediakan 256 buah interupsi yang diberi nomor 0 s/d 255.

Nomor interupsi 0 s/d 1Fh disediakan oleh ROM BIOS yaitu suatu IC di dalam komputer yang mengatur operasi dasar komputer.

Jadi jika terjadi interupsi dengan nomor 0 s/d 1Fh maka secara default komputer akan beralih ke ROM BIOS dan melaksanakan program yang terdapat disana.

Program yg melayani suatu interupsi dinamakan Interrupt Handler Cara penggunaan

int [no int] Jenis-Jenis Interrupts • Internal HW interruptions

Ditimbulkan/digenerasi oleh peristiwa tertentu yang terjadi pada waktu/selama eksekusi program

Diatur oleh HW dan tidak mungkin diubah Contoh: tipe interrupt u/ counter clock internal; HW call interrupt ini u/ memaintance “time to date”

• External HW interupstions

Ditimbulkan/digenerasi oleh devais peripheral, mis keyboard, printers, dsb.

Biasa juga ditimbulkan/digenerasi oleh Co-prosessor Tidak mungkin mendeaktivekan Tidak dikirim langsung ke CPU, melainkan ke IC yang memiliki fungsi u/ menghandle secara eksklusive interrupts ini. (IC PIC8259A, yg dikontrol oleh CPU dgn menggunakan urutan komunikasi PATH Control

• Software interruptions

• Diaktifkan langsung oleh assembler melalui sejumlah interuosi yg diharapkan dgn instruksi INT

• Terdapat dua jenis: • DOS interruptions • BIOS interupstions

Page 58: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Interrupt 2/5

Perbedaannya: DOS int. lebih mudah digunakan, namun lebih lambat, karena int. jenis ini menggunakan BIOS, BIOS int. lebih cepat, namun banyak kerugiannya karena BIOS bagian HW dan HW-specific

Pemilihan interupts tergantung pada karakteristik yang akan kita berikan pada program: SPEED BIOS int; PORTABILITY DOS int.

Ada 2 macam Software Intterrupt :

1. Vektor Interrupt ROM BIOS Interrupt 00h - 1Fh (0-31) adalah interrupt BIOS dan standar di semua komputer baik yang menggunakan sistem operasi DOS atau bukan. Lokasi Interrupt Vector table-nya ada di alamat absolut 0000h-007Fh Interrupt BIOS dibawah ini telah dipastikan kegunaannya oleh sistem untuk keperluan khusus tidak boleh diubah oleh program seperti lainnya 1. DEVIDE BY ZERO Jika terjadi pembagian dengan nol maka

proses akan segera dihentikan 2. SINGLE STEP Untuk melaksanakan/mengeksekusi instruksi

satu per satu 3. NMI Pelayanan terhadap NMI (Non Maskable Interrupt) yaitu

interupsi yang tak dapat dicegah 4. BREAK POINT Jika suatu program menyebabkan overflow

flag menjadi 1, interrupt ini akan melayani pencegahannya dan memberi tanda error

2. Interrupt DOS

Interrupt 20h-FFh (32 - 255) adalah interrupt DOS, dan hanya ada pada komputer yang menggunakan sistem operasi DOS dan interrupt handlernya di-load ke memori oleh DOS pada saat DOS digunakan. Lokasi Interrupt Vector table-nya ada di alamat absolut 07Fh-3FFh

1. Vektor Interrupt ROM BIOS

definisi : interrupt yang disediakan oleh BIOS ( int 0 sampai int 1Fh)

NO Service Fungsi INT 5 - tombol print screen INT 9 - Saat tombol keyboard ditekan, KB mengirim

sandi lacak ke CPU bukan ke karakter ASCII INT 10 0 Mengubah mode video pada register AL

0-6 layar grafik, 7 layar monochrom register input : AH=00, AL=nomor mode video Contoh :

Mov AL,5 Mov AH,0 Int 10

Page 59: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Interrupt 3/5

NO Service Fungsi 1 Mengubah ukuran cursor

Register input : AH=01h, CH=awal garis bentuk cursor, CL=akhir garis bentuk cursor. Contoh :

Mov CH,0 Mov CL,7 ; cursor jadi satu blok penuh Mov AH,1 Int 10

2 Mengubah posisi kursor Register input : AH=02h, BH=nomor halaman tampilan, DH nomor baris (dimulai 00), DL=nomor kolom (dimulai 00) Contoh :

Mov BH,0 Mov DH,7 ; baris (0..24) Mov DL,8 ; kolom (0..79) Mov AH,2 Int 10

3 Cari posisi cursor dan ukurannya Register input : AH=03h, BH=nomor halaman tampilan Register output : CH=awal garis bentuk cursor, CL=akhir garis bentuk cursor , DH nomor baris (dimulai 00), DL=nomor kolom (dimulai 00) Contoh :

Mov BH,0 Mov AH,3 Int 10

6 Scroll up window Register input : AH=06h, AL=jumlah baris untuk digulung, BH=atribut untuk baris kosong, CH,CL=koordinat kiri atas window, DH,DL=koordinat kanan bawah Contoh :

Mov AL,3 ; jumlah baris Mov CL,3 Mov CH,1 Mov BH,0 Mov DL,8 Mov DH,3 Mov BH,0 Mov AH,06h Int 10

7 Scroll down window Register input sama dengan service 6

Page 60: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Interrupt 4/5

NO Service Fungsi 8 Melihat nilai karakter ASCII yang ada di layar.

Cara : • Atur posisi cursor dengan fungsi 3 • Atur BH dengan nomor halaman 0 • Isi AH dengan 08h • Jalankan int 10 • AL =Nilai ASCII, AH=atribut

INT 11 - Equipment check di BIOS pada alamat 410h(40:100) Register output : AX Posisi bit : 0=1 jika ada drive 1=tidak dipakai 2,3=info RAM 4-5=mode service 01 25x40, 10 25x80,11 monochrom 6-7=jumlah drive 8= tidak dipakai 9,A,B=jumlah port serial C=1 jika ada game port D= tidak dipakai E,F=jumlah port parallel

INT 16 00 Menunggu masukan keyboard Register input : AH=00h Register output : jika AL=0 maka AH=kode extended Jk AL <>0, mk AL=kode ASCII, AH-kode scan

01 Mengecek isi keyboard buffer Register input : AH=01h Register output : ZF=0 jika ada penekanan tombol. jika AL=0 maka AH=kode extended, Jika AL <>0, maka AL=kode ASCII, AH-kode scan

INT 19 - Melakukan Warm Boot 2. Interrupt DOS

definisi : Interrupt yang disediakan oleh DOS (int di atas 1Fh)

NO Service Fungsi INT 20 - Menghentikan proses komputer terhadap

suatu program COM INT 21 01 Membaca karakter dari keyboard dan

menampilkan di layar Register input : AH=01h Register output : AL=kode ASCII

02 Mencetak karakter ke layar Register input : AH=02

Page 61: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Interrupt 5/5

NO Service Fungsi 05 Output ke printer

Register input : AH=05 Register output : DL

09 Mencetak string ke layar Register input : AH=09

22h - Terminate Code 23h - Ctrl-Break Code 24h - Critical Error Handler 25h - Absolute Disk Read 26h - Absolute Disk Write 27h - Terminate But Stay Resident

Page 62: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Mode Pengalamatan 1/3

MODE PENGALAMATAN Pada arsitektur 8086/88 memori = 1 MB artinya terdapat

sejumlah 1 M = 220 = 1024 sel memori 8 bit dengan alamat = 0 s/d (220 – 1) = 00000 H s/d FFFFF H

Dalam arsitektur 8086/88 hanya terdapat register-register 16 bit yang hanya mampu mengalamati memori dari 0 s/d (216-1)

Oleh karena itu digunakan metode pengalamatan dengan dua register yaitu segment register dan offset register sehingga akan didapatkan pengalamatan 220

Metode pengalamatan dengan dua register ini disebut dengan pengalamatan relatif (relative address)

Contoh : Segment Offset

A123 : 099Ah Komposisi Bit : 1010 0001 0010 0011 0000 0000 1001 1001 1010 1010 0001 1011 1100 1010 = A1BCA h Alamat Mutlak (Physical Address) • Ada beberapa cara (mode) untuk mengakses operand;

Operand dapat terdapat di register, dalam instruksi, dalam memori atau I/O

• 8088 mempunyai sekitar 24 addressing mode dikelompok menjadi 7: • Register Addressing • Immediate Addressing • Direct Addressing • Register Indirect Addressing • Base Relative Addressing • Direct Indexed Addressing • Base Indexed Addressing

Page 63: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Mode Pengalamatan 2/3

ORGANISASI MEMORI Pada arsitektur 8086/88 terdapat peta memori sbb :

Alamat Fisik Keterangan 00000 – 0007F BIOS Interrupt Vektor 00080 – 003FF DOS Interrupt Vektor 00400 – 004FF BIOS Data Area 00500 – 005FF DOS & BASIC Data Area 00600 – 9CFFF RAM Working Space A0000 – A3FFF Cadangan A4000 – AFFFF Monochrome Adapter B0000 – B1000 Video Buffer B1001 – B7FFF Color/Graphics Adapter B8000 – BBFFF BC000 – BFFFF C0000 – C7FFF Ekspansi Memory C8000 – C3FFF Harddisk CC000 – F3FFF Cadangan F4000 – F5FFF User ROM (8 K) F6000 – FDFFF ROM BASIC (32 K) FE000 - FFFFF ROM BIOS (8 K)

1. Register dan Immediate Addressing • Register Add.: Operand disimpan/diambil dari register

MOV AX,CX ; copy 16 bit isi CX (count regs) ke AX (acc. regs)

• Immediate Add.: source operand dapat berbentuk konstanta 8/16 bit; Konstanta ini terdapat dalam instruksi. MOV CX,500 MOV CL,-30 ; simpan –30 ke reg. AL K EQU 1024 ; source operand dapat berbentuk simbol yg

didefine dgn EQU • INGAT:

– 8 bit signed number: 127(7H) s/d –128(80H) – 16 bit signed number: 32767(7FFFH) s/d –32768(8000H) – Max 8 bit unsigned #: 255 (0FFH) – Max 16 bit unsigned #: 65535 (0FFFFH)

2. Direct Addressing

MOV AX, TABLE ; load isi lokasi memori Table ke AX 3. Register Indirect Addressing • Offset: effectives address (EA) jarak letak operand, dalam

byte terhitung dari awal segment • Address memory = offset + isi DS digeser dgn 0000

MOV AX,[BX] ; load isi memory yang ditunjuk BX ke AX

Page 64: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Mode Pengalamatan 3/3

• Pertanyaan: bagaimana meletakkan EA ke BX? MOV BX,OFFSET TABLE MOV BX,OFFSET TABLE MOV AX,[BX] 4. Base Relative Addressing • EA dihitung: Displacement + isi BX atau BP

– BX cocok dipakai jika data yang hendak diakses terdapat di beberapa lokasi memori (terpisah)

MOV AX,[BX]+4 ;Load isi field record yang terdapat di byte

ke 5 dan 6, ;dimana awal address record di BX ke AX

5. Direct Indexed Addressing • EA = Displacement + Index Reg DI atau SI

– DI atau SI cocok untuk akses elemen dalam Tabel – Displacement ke awal TABLE – Index reg: ke elemen di dalam Tabel MOV DI,4 MOV AX,TABLE[DI] ;Load elemen ke3 ke AX TABLE

adalah Tabel 1 Byte 6. Base Indexed Addressing • Cocok untuk akses “two dimensional array” • EA = Base regs + Index regs + Displ. • Contoh:

MOV AX,[BX+2+DI] ;operand dapat ditulis MOV AX,[DI+BX+2] ;dlm [ ],urutan sembarang MOV AX,[BX+2][DI] ;displacement dpt digabung MOV AX,[BX][DI+2] ;dgn salah satu register

Page 65: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

OPERASI ARITMATIKA 1. Operasi Penjumlahan 1.1. ADD

Untuk menambah dalam bahas Assembler digunakan perintah ADD, ADC serta INC Sintaks : ADD Tujuan,Asal Contoh : MOV AH,15h MOV AL,4 ADD AH,AL Perintah ADD akan menambahkan nilai pada tujuan dan asal. Hasil yang didapat akan disimpan di tujuan. Tujuan dan asal harus mempunyai daya tampung yang sama misal register AH(8 bit) dan AL (8 bit), AX (16 Bit) dan BX (16 Bit) Jika tujuan dan tempat hasil penjumlahan disimpan tidak mencukupi, maka akan menjadikan carry flag menjadi satu, misal : 1234h 0001 0010 0011 0100 F221h 1111 0010 0010 0001 ------- + ----------------------------- + 10455h 1 0000 0100 0101 0101 MOV AX,1234h MOV BX,0F22h ADD AX,BX

Page 66: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

1.2. ADC Sintaks : ADC Tujuan,Asal Tujuan tempat menampung hasil pertambahan tujuan dan asal ditambah lagi dengan carry flag (Tujuan=Tujuan+Asal+Carry) Satu register hanya mampu menampung 16 bit, maka untuk pertambahan yang menghasilkan lebih dari 16Bit bisa digunakan perintah ADC. Misal untuk menambahkan bilangan 12345678h + 9ABCDEF0h MOV AX,1234h MOV BX,9ABCh MOV CX,5678h MOV DX,0DEF0h ADD CX,DX ADC AX,BX ;Hasil penjumlahan akan disimpan di register AX:CX 1.3. INC INC (Increment) digunakan khusus untuk pertambahan dengan 1. Perintah INC hanya menggunakan 1 Byte memory, sedang perintah ADD dan ADC menggunakan 3 Byte. Sintaks : INC Tujuan Tujuan disini dapat berupa suatu register maupun memory. Contoh INC AL, akan menambah nilai di register AL dengan 1 Program Penambahan dan Debug

Page 67: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

;Program Penambahan dengan Berbagai Perintah; .MODEL SMALL .CODE ORG 100h Proses : MOV AH,15h MOV AL,4 ADD AH,AL MOV AX,1234h MOV BX,0F221h ADD AX,BX MOV AX,1234h MOV BX,9ABCh MOV CX,5678h MOV DX,0DEF0h ADD CX,DX ADC AX,BX INC AL INT 20 END Proses 2. Operasi Pengurangan 2.1. SUB Sintaks : SUB Tujuan,Asal Contoh : MOV AH,15h MOV AL,4 ADD AH,AL

Page 68: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Perintah ADD akan mengurangkan nilai pada tujuan dengan asal. Hasil yang didapat akan disimpan di tujuan. Untuk menolkan suatu register dapat di kurangkan dengan dirinya sendiri seperti SUB AX,AX. Contoh: MOV AX,15h MOV BX,12h SUB AX,BX SUB AX,AX 2.2. SBB Sintaks : SBB Tujuan,Asal SBB (Subtract With Carry) digunakan untuk operasi pengurangan dengan bilangan yang besar (lebih dari 16 bit). Perintah SBB akan mengurangkan nilai Tujuan dengan Asal kemudian hasil yang didapat dikurangi lagi dengan Carry Flag (Tujuan = Tujuan-Asal-CF) ;Program mengurangkan angka 122EFFF-0FEFFFF; 2.3. DEC DEC (Decrement) digunakan khusus untuk pengurangan dengan 1. Perintah DEC hanya menggunakan 1 Byte memory, sedang perintah ADD dan ADC menggunakan 3 Byte. Sintaks : INC Tujuan Tujuan disini dapat berupa suatu register maupun memory. Contoh INC AL, akan menambah nilai di register AL dengan 1 Program Penambahan dan Debug

Page 69: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

;Program Penambahan dengan Berbagai Perintah; .MODEL SMALL .CODE ORG 100h Proses : MOV AH,15h MOV AL,4 ADD AH,AL MOV AX,1234h MOV BX,0F221h ADD AX,BX MOV AX,1234h MOV BX,9ABCh MOV CX,5678h MOV DX,0DEF0h ADD CX,DX ADC AX,BX INC AL INT 20 END Proses 3. Operasi Perkalian Sintaks : MUL Sumber Sumber dapat berupa suatu register 8 bit (BL,BH,...), register 16 bit (BX,DX,..) atau suatu variabel Bila sumber 8 bit seperti MUL BH maka komputer akan mengambil nilai yang terdapat pada BH dan nilai pada AL untuk dikalikan, hasil akan selalu di simpan pada register AX.

Page 70: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Jika sumber 16 bit seperti MUL BX maka komputer akan mengambil nilai yang terdapat pada BX dan nilai pada AX untuk dikalikan, hasil akan disimpan di register DX dan AX (DX:AX). ;Program mengalikan bilangan 16 bit hasil pada DX:AX; .MODEL SMALL .CODE ORG 100h TData : JMP Proses A DW 01EFh B DW 02EFh Hsllo DW ? HslHi DW ? Proses : MOV AX,A MUL B MOV HslLo,AX MOV HslHi,DX INT 20h END TData 4. Pembagian

Sintaks : DIV Sumber Bila sumber 8 bit seperti MUL BH maka komputer akan mengambil nilai yang terdapat pada register AX dan membaginya dengan nilai BH, hasil akan selalu disimpan pada register AL dan sisa dari pembagian akan disimpan di register AH. Jika sumber 16 bit seperti DIV BX maka komputer akan mengambil nilai yang terdapat pada DX:AX dan membaginya dengan nilai BX, hasil akan disimpan di register AX dan sisa pembagian di register DX.

Page 71: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

;Program mengalikan bilangan 16 bit hasil pada DX:AX; .MODEL SMALL .CODE ORG 100h TData : JMP Proses A DW 01EFh B ? Hsllo DW ? HslHi DW ? Proses : SUB DX,DX MOV AX,A DIV B MOV Hsl,AX MOV Sisa ,DX INT 20h END TData

Page 72: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Set Instruksi 1/3

SET INSTRUKSI

Tipe-tipe Instruksi

1. Data Transfer (Register, memory, I/O Port)

2. Operasi Aritmatik

3. Manipulasi Bit (SHIFT, ROTATE, Logical dlm Register & Memory)

4. Control Transfer

5. String

6. Interrupt

7. Process Control

1. DATA TRANSFER

Berfungsi memindahkan data dan address diantara register dan lokasi

memori atau I/O Port

Terbagi menjadi :

General Purpose : MOV, PUSH, POP, XCHG, XLAT

I/O : IN, OUT

Address Transfer : LEA, LDS, LES

Flag Register : LAHF, SAHF, PUSHF, POPF

General Purpose

1.1 MOV (MOVE)

Perintah untuk mengisi, meindahkan, memperbaharui isi suatu

register, variabel ataupun suatu lokasi memory

MOV [operand1], [operand2]

Contoh : MOV AX,TABLE

MOV TABLE,AX

MOV ES:[BX],AX

MOV DS,AX

MOV BL,AL

MOV CL,-30

MOV DEST,25h

Page 73: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Set Instruksi 2/3

1.2 XCHG (EXCHANGE)

Untuk mempertukarkan isi source operand dengan destination

operand dalam ukuran byte atau word

Dapat mempertukarkan isi 2 memori dan isi suatu register dan lokasi

memori

Isi segmen register tdk dapat dipertukarkan (dengan instruksi XCHG)

XCHG AX,BX ;pertukaran 2 word register

XCHG AL,BH ;pertukaran 2 byte register

XCHG WORD_LOC,DX ;pertukaran dengan lokasi memory

XCHG DL,BYTE_LOC ;pertukaran dengan register

1.3 XLAT (TRANSLATE)

Untuk membaca/memeriksa nilai-nilai (byte) yang terdapat dalam

suatu TABEL dan kemudian megkopi (load) ke dalam register AL

(ukuran max TABEL=256 byte)

XLAT source_table

Sebelum eksekusi XLAT starting address daripada tabelnya harus

disimpan (load) ke BX dan index dari byte yg dimaksud ke dalam AL

XLAT cocok untuk konversi yang membutuhkan waktu perhitungan

yang lama misal konversi ASCII display code dari hexadesimal digit.

Contoh : Urutan instruksi utk memeriksa byte ke-10 dari tabel S_TAB :

MOV AL,10 ;load harga index AL

MOV BX,OFFSETS_TAB ;load starting add S_TAB ke BX

XLAT S_TAB ;ambil harga dalam tabel ke AL

Address Transfer Transfer address suatu variabel load address ke register mirip

dengan instruksi move

2.1 LEA (Load Effective Address)

Misal DI=5

LEA BX,TABLE[DI] ;load offset address dari TABLE+5 ke BX

Page 74: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Set Instruksi 3/3

2.2 LDS (Load Pointer using DS)

Membaca 32 bit dari memori kemudian load 16 bit pertama ke

register tertentu dan 16 bit ke dua ke DS

LDS register16,memory32

2.3 LES(Load Pointer using ES)

Page 75: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Stack 1/3

STACK

Stack artinya adalah "tumpukan". Stack adalah bagian memori

yang digunakan untuk menyimpan nilai dari suatu register pada

alamat offset terakhir suatu segmen secara sementara. Stack

biasa dipakai diawal subroutine

Operasi pada assembler yang menggunakan stack :

1. PUSH (Register 16 Bit) 3. PUSF

2. POP (Register 16 Bit) 4. POPF

Cara Kerja Stack

;Program dengan operasi yang mirip dengan stack;

.MODEL SMALL

.CODE

ORG 100h

TData : JMP Proses

Kal DB 'LANG LING LUNG $'

Ganti DB 13,10,'$'

Stacks DW ?

Proses :

LEA DX,Kal

MOV Stacks, DX

MOV AH,09

INT 21h

LEA DX,Ganti

INT 21h

MOV DX,Stacks

INT 21h

Exit : INT 20h

END TData

Page 76: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Stack 2/3

;Program dengan stack yang sebenarnya;

.MODEL SMALL

.CODE

ORG 100h

TData : JMP Proses

Kal DB 'LANG LING LUNG $'

Ganti DB 13,10,'$'

Proses :

LEA DX,Kal

PUSH,DX

MOV AH,09

INT 21h

LEA DX,Ganti

INT 21h

POP DX

INT 21h

Exit : INT 20h

END TData

Dgn perintah PUSH, nilai register DX akan disimpan pada stack.

Contoh program dalam bahasa Pascal yang menggunakan

pengulangan dalam pengulangan dengan memanfaatkan stack.

For i:= 10 DownTo 1 Do

For j:= 5 DownTo 1 Do

For k:= 3 DownTo 1 Do

Begin

End

MOV CX,10 i: PUSH CX MOV CX,5 j: PUSH CX MOV CX,3

Page 77: BAHASA RAKITANrobby_kurniawan.staff.gunadarma.ac.id/Downloads/files/...– Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): – Nama operator – Tempat menyimpan

Stack 3/3

k: LOOP k POP CX LOOP j POP CX LOOP i PUSH dan POP

Untuk memasukkan nilai suatu register pada stack, sintaksnya :

PUSH Reg16Bit

Contoh :

MOV AX,12

MOV BX,33

PUSH AX

PUSH BX

Untuk mengambil data yang telah disimpan pada stack,

sintaksnya :

POP Reg16Bit

Contoh :

POP BX

POP AX

Perintah POP akan mengambil nilai pada stack yang paling atas

dan dimasukkan pada Reg16Bit. Operasi stack dinamakan LIFO

Jika terbalik dalam mengambil nilai pada stack dengan POP AX

kemudian POP BX maka nilai register AX dan BX akan terbalik

PUSH & POP dipakai untuk copy 1 segmen register ke segmen

register langsung

PUSH ES ; copy ES ke DS lambat juka dibandingkan

POPK DS ; dengan instruksi MOV

PUSHF dan POPF PUSHF digunakan untuk menyimpan nilai flag register F ke

dalam Stack

POPF digunakan untuk mengambil isi stack kemudian

disimpan di dalam flag register F