Bahasa Mesin dan Assembly

Slides:



Advertisements
Presentasi serupa
JWASM Input Keyboard.
Advertisements

Oleh: Anis Nurlaili W, MT
ASSEMBLER PERTEMUAN KE-1
Pemograman berorientasi prosedur merupakan bahasa pemrograman yang melibatkan fungsi-fungsi atau prosedur-prosedur sebagai sub program untuk membentuk.
BAB III BAHASA DAN PENGEMBANGAN PROGRAM MIKROPROSESOR
BAB IV MODE PENGALAMATAN
Arsitektur Komputer “Mode Pengalamatan”
Arsitektur Komputer “Instruksi Set Arsitektur”
Chapter 20 Pembentukan Kode.
Fitur Assembler Berorientasi Mesin (SIC/XE Assembler) Format Instruksi, Addressing Mode, dan Relokasi Program.
REGISTER Oleh : Oman Somantri, S.Kom
DEBUG.
Microprocessor oleh Denda Dewatama.
DASAR-DASAR PEMROGRAMAN
Dasar pemrograman Mikroprosesor 8086
ARSITEKTUR SET INSTRUKSI
Turbo Assembler TASM.
Perkembangan Bahasa.
Organisasi dan Arsitektur Komputer
Sistem Mikroprosesor SMK NEGERI 29 JAKARTA.
Central Processing Unit
ARSITEKTUR SET INSTRUKSI
SET INSTRUKSI.
LOKASI DAN OPERASI MEMORI
Prosesor RISC dan CISC.
EE-2623 Mikroprosesor & Antarmuka
By Adnan Purwanto, S.Kom.  Langkah-langkah yang kita lakukan dalam memberikan instruksi kepada komputer untuk memecahkan masalah  Manusia harus menggunakan.
Pertemuan 4 (Set Instruksi ARM)
Reduced Instruction Set Computers
Arsitektur Mikroprosessor 8086
Bahasa Assembly Mulyono.
Instruksi dalam CPU.
Struktur Sistem Komputer
Pengenalan Assembler.
ARSITEKTUR SET INSTRUKSI
Set Instruksi:.
Dasar pemrograman Mikroprosesor 8086
BAB IV Teknik Pemrograman
ANALISA DAN DESAIN ALGORITMA
Struktur dan Fungsi CPU (II)
Pertemuan 3 (Bahasa Assembly)
Pertemuan III SET Instruksi.
MODE PENGALAMATAN DAN SET INSTRUKSI
PENGANTAR LOGIKA & TEKNIKPEMROGRAMAN
ARSITEKTUR SET INSTRUKSI
Mode Pengalamatan &Jenis-Jenis Instruksi
ORGANISASI & ARSITEKTUR KOMPUTER 2 SET INSTRUKSI IBP WIDJA, MT
Sistem Bilangan & REGISTER
ARSITEKTUR KOMPUTER.
MATERI 1 Review dan Pengantar C (Struktur Bahasa C, Variabel, Konstanta, Tipe Data, Operator)
Pengenalan Assembler.
Set Instruksi:.
Reduced Instruction Set Computers
Pertemuan 6 Instruksi Bahasa Rakitan 8088
Pertemuan 1.
ASSEMBLER #1 MK. PEMROGRAMAN SISTEM
ASSEMBLER #2 MK. PEMROGRAMAN SISTEM
01.3 Hari-1 Sesi-3 Desain Algoritma.
Slide 6 Mikroprosesor Sub. Assembly Language___
TEK 2524 Organisasi Komputer
ARSITEKTUR SET INSTRUKSI
PENGANTAR LOGIKA & TEKNIK PEMROGRAMAN
Ilustrasi kinerja CPU.
Pertemuan IV Struktur dan Fungsi CPU (III)
MATERI 1 Review dan Pengantar C (Struktur Bahasa C, Variabel, Konstanta, Tipe Data, Operator)
ARSITEKTUR SET INSTRUKSI
Copyright © Wondershare Software -m.erdda habiby.SST Central Processing Unit.
ARSITEKTUR SET INSTRUKSI
Karakteristik Set Instruksi 14 JP. Karakteristik Set Instruksi Pengertian Set Instruksi Set instruksi adalah kumpulan dari instruksi yang dapat dijalankan.
PEMROGRAMAN MIKROPROSESOR DAN MIKROKONTROLER ICHSAN R, S.PD | ARSITEKTUR MIKROPROSESOR.
Transcript presentasi:

Bahasa Mesin dan Assembly Oleh : Oman Somantri, S.Kom Email : oman_mantri@yahoo.com POLITEKNIK HB D3 TEKNIK KOMPUTER TEGAL @2012

Bahasa Mesin Instruksi yang difetch dari memori untuk kemudian diseksekusi oleh mikroprosesor berformat biner (kombinasi angka 0 dan 1), yang disebut bahasa mesin. Sebagai contoh, Perintah untuk memindahkan data dalam register BX ke register CX adalah 10001011 11001011 ($8B CB), sedangkan bahasa mesin untuk menjumlahkan data dalam register AL dengan angka 7 adalah 00000100 00000111 ($04 07), dan perintah membaca dari port 5 diberikan dengan 11100100 00000101 ($E4 05).

Bahasa mesin tidak mudah untuk dimengerti dan dihapalkan oleh seorang programer, apalagi jumlah instruksi yang tersedia berkisar ribuan perintah. Disamping itu, akan mudah sekali terjadi kesalahan ketika menuliskan angka-angka biner yang tersusun atas angka 0 dan 1 yang banyak sekali. Oleh karena itu biasanya kita tidak memprogram komputer langsung dalam bahasa mesin, namun dalam bahasa assembly. Dalam bahasa assembly, setiap instruksi diberi kata (mnemonic) yang sesuai dengan maksud perintah itu, sehingga dapat membantu pemrogram dalam mengingat instruksi kepada mikroprosesor tersebut. Kata yang dipakai biasanya berupa singkatan atau beberapa huruf awal dari kata dalam bahasa Inggris untuk perintah tersebut.

Secara umum instruksi mikroprosesor dikelompokkan menjadi :

Dasar Pemrograman Assembly Istilah dalam pemrograman Assembly Mode Pengalamatan Immediate, Register, Langsung, Tak Langsung, Indeks Pembagian Instruksi Transfer, Aritmatik dan Logic, Percabangan, Pemanggilan, Input-Output

Istilah dalam pemrograman Assembly Memory, I/O, port, alamat, data, register, instruksi, mnemonic, opcode, operand, komentar Kode mesin, bahasa assembly Assembler, Compiler Style penulisan Program  Assembly, Kode mesin, Listing program

Register Berada dalam CPU (Mikroprosesor) Digunakan untuk menyimpan data selama proses/program/sub program berjalan Bersifat sementara Umumnya selama dalam sub program Cepat Memerlukan kode instruksi yang pendek Memiliki/menggunakan nama tertentu

Ilustrasi Beberapa Perintah LD A,B  78 (M1, 4T) LD A,20H  3E 20 (M1-M2, 7T) LD A,(8000H)  3A 00 80 (M1-M2-M3-M4, 13T) LD A,(HL)  7E (M1-M2, 7T)

Memory Berada di luar CPU, harus ada CPU hanya dapat memproses dari memory Digunakan untuk menyimpan program dan data Bersifat permanen atau sementara Jumlah atau ukurannya besar/banyak, jauh lebih banyak dari register Lebih lambat dari CPU atau register Memerlukan kode instruksi yang lebih panjang Memiliki/menggunakan data/alamat memory

I/O Berada di luar CPU Harus ada kalau ingin berhubungan antara sistem mikro dengan dunia luar Tidak bersifat menyimpan data, hanya melewatkan data Khusus untuk port output, terkadang dilengkapi dengan fungsi latch Kapasitas terbatas (lebih kecil dari memory) Lebih lambat dari CPU, register, memory Menggunakan alamat port

Alamat Register dinyatakan dengan nama, sedangkan memory dan port dinyatakan dengan alamat Alamat menyatakan Posisi dari data yang disimpan pada memory Saluran dari port dimana data akan disalurkan Untuk 8086 Alamat memory berkisar 00000H s/d FFFFFH Alamat port berkisar 00H s/d FFH

Data Menyatakan sesuatu yang disimpan/diproses/disalurkan, baik berupa suatu nilai atau kode program Dapat disimpan di register atau memory Terkadang port output juga bisa menyimpan Dalam 8086, data yang diproses dalam bentuk satuan 8 bit (1 byte) dengan nilai 0 s/d 255 Ada proses/penyimpanan yang melibatkan data 16 bit

Kode Mesin Program yang umumnya ditulis dalam bentuk kode Hexa Merupakan kode yang dimengerti oleh mesin (CPU) Terdiri dari alamat dan kode instruksi (data-data berupa program yang tersimpan di memory) Contoh : 0100 3E 20 0102 DD 21 8000 Alamat Kode Mesin

Opcode Suatu kata atau tulisan atau simbol untuk menggantikan satu instruksi kode mesin Digunakan dalam pemrograman assembly Contoh : LD  Load (isi, transfer, simpan, ambil) ADD  Jumlahkan SUB  Kurangkan

Operand Sesuatu yang dioperasikan Dapat berupa register, data atau alamat memory atau I/O Contoh : A, B  register dengan register B, 20H  register dengan data 8 bit A, (2000H)  register dengan alamat 16 bit

Catatan Operand Ada empat jenis cara menuliskan operand Data langsung (8 bit atau 16 bit atau label) 80H, 2000H, CW, DataMotor Register (8 bit atau 16 bit) A, B, C, BC, DE, HL, IX Alamat langsung (alamat 8 bit, 16 bit atau label) (80H), (8000H), (2000H), (Buffer) Alamat dari register (alamat tidak langsung) (C), (HL), (IX)

Arah Operand LD A,B ; A  B, atau A = B ADD A,B ; A  A + B, A = A + B Salin data dari B ke A ADD A,B ; A  A + B, A = A + B Jumlahkan A dengan B dan simpan di A

Mana yang Salah ? LD A,C LD A,HL LD A,(DE) LD BC,0 LD DE,8000H LD HL,(8000H) LD A,(8000H)

Mnemonic Menyatakan satu perintah tunggal, termasuk format data atau sesuatu yang dioperasikan oleh data tersebut Terdiri dari opcode dan operand (data, register, memory atau port) Contoh : LD r, n ADD A, r LD r, r’

Singkatan pada Operand r  register 8 bit n  data 8 bit nn  data 16 bit d  displacement (pergeseran 8 bit)

Instruksi Menyatakan satu perintah/program tunggal Terdiri dari Opcode dan Operand Contoh : LD A,30H  Masukkan 30H ke A LD B,A  Masukkan/salin A ke B IN A,(81H)  Baca port 81H ke A

Label Suatu tulisan yang digunakan untuk menunjukkan posisi dari suatu instruksi Digunakan untuk menggantikan alamat pada penulisan bahasa assembly Terkadang label dapat digunakan sebagai data Nilai sesungguhnya dari label tidak dapat diketahui sebelum semua program selesai dan diterjemahkan ke dalam kode mesin Ditandai dengan titik dua setelah nama label

Contoh Label Start: LD B,20H LD HL,Tabel JP (HL) … Tabel: LD A,10H ADD A,B JP Start

Komentar Suatu tulisan selain instruksi yang digunakan untuk menjelaskan program Seharusnya selalu ada, mengingat pemrograman assembly lebih sulit untuk dibaca Sebagai dokumentasi Harus diawali dengan titik koma (;) Contoh : LD A,32 ; Siapkan data SPASI ke Reg. A CALL LCD ; Tampilkan ke LCD

Bahasa Assembly Bahasa Assembly adalah bahasa yang dirakit/dibuat untuk menggantikan kode mesin yang sulit untuk dibaca/dihafalkan/dimengerti/ditulis Terdiri dari Label, Opcode, Operand dan komentar Contoh : Mulai: LD SP,0 ; Posisi awal STACK LD B,0 ; Tunggu sesaat DJNZ $ ; dengan cara loop 256 x

Assembler Assembler adalah Suatu program yang digunakan untuk menterjemahkan, atau lebih tepat mengubah dari bahasa assembly ke dalam kode mesin Jika suatu komputer dengan prosesor tertentu digunakan untuk menterjemahkan kode dari prosesor lain, maka assembler tersebut dinamakan “Cross Assembler”

Prinsip Kerja Assembler Secara umum, proses assembly dibagi dua tahap Pass 1 Mencatat simbol-simbol, pengenal (identifier), label dan lainnya Mengurutkan kode mesin untuk mengetahui alokasi alamat atau label-label yang ada Pass 2 Penterjemahan instruksi demi instruksi program assembly berdasarkan mnemonic dan identifier yang digunakan

Compiler Suatu program yang digunakan untuk menterjemahkan, menyusun, menggabungkan dari bahasa tingkat tinggi/menengah ke dalam kode mesin Jika suatu komputer dengan prosesor tertentu digunakan untuk menterjemahkan kode dari prosesor lain, maka assembler tersebut dinamakan “Cross Compiler”

Style penulisan Program Kode mesin 0000 3E 30 ; Masukkan 30H ke Reg. A 0002 06 00 ; Masukkan 0H ke Reg. B 0E 20 ; Masukkan 20H ke Reg. C Assembly Start: LD A,30H ; Masukkan 30H ke Reg. A LD B,0 ; Masukkan 0H ke Reg. B LD C,32 ; Masukkan 20H ke Reg. C Listing program

Contoh Format Listing Program Alamat Data/Kode Label Opc Operand Komentar 0000 Start: 0000 3E 30 LD A,30H ; Mulai 0002 06 00 LD B,0 0004 0E 20 LD C,32 0006 D3 80 OUT (80H),A 0008 DB 81 IN A,(81H) 000A 31 0000 LD SP,0000H 000D … …

Assembler Directive Perintah-perintah tambahan yang disertakan dalam program assembly, tetapi bukan bagian dari perintah assembly Digunakan untuk memberitahukan assembler mengenai apa yang harus dilakukan Sangat membantu dalam pembuatan program assembly

Contoh Assembler Directive ORG  Origin Penentuan alamat program EQU  Equal Membuat suatu identifier, atau konstanta DEFB  Define Byte Meletakkan data Byte ke dalam program DEFM  Define Memory Meletakkan beberapa data Byte dalam program DEFS  Define Storage Memesan tempat kosong dalam memory

Contoh Program Simpan EQU 9000H ; Simpan = 9000H Data EQU 20H ; Data = 20H ORG 0H ; Alamat 0000H Start: LD A,Data LD (Simpan),A ; [9000H]  20H LD A,(Nilai) ; A  [Nilai] LD (Buffer),A ; [Buffer]  A HALT ; Nilai: DEFB 30H ; [Nilai]  30H ORG 8000H ; Alamat 8000H Buffer: DEFS (2) ; [Buffer]  2 Byte

Contoh Kasus Isi register A dengan 20H dan register B dengan 30H Tukar isi kedua register Tugas Buat ilustrasi proses transfer data Buat program assembly-nya Buat kode mesinnya Susun dalam bentuk listing program yang dimulai dari alamat 0000H

Referensi Kode Mesin LD

Instruksi yang digunakan LD A,n  3E nn LD B,n  06 nn LD C,n  0E nn LD A,C  79 LD C,A  LD B,C LD C,B LD A,B LD D,A LD C,D

Ilustrasi Proses, Assembly dan Kode Mesin 20H 30H LD A,20H  3E 20H LD B,30H  06 30H LD C,A  4F LD A,B  78 LD B,C  41 HALT  76 20H A 30H B 20H C 30H A 20H B

Listing Program Pertukaran A-B ORG 0000H ; … 0000 START: ; … 0000 3E 20 LD A,20H ; … 0002 06 30 LD B,30H ; … 0004 4F LD C,A ; … 0005 78 LD A,B ; … 0006 41 LD B,C ; … 0007 76 HALT ; …

Latihan Buat listing program (program assembly beserta kode mesinnya) untuk menukarkan isi dari register A dan B dan menyimpan hasil penjumlahan keduanya ke register C Gunakan nilai awal A = 10H dan B = 20H dengan alamat awal program di 0100H Gunakan beberapa instruksi yang ada Hasil akhir seharusnya A = 20H, B = 10H dan C = 30H Untuk memudahkan, buat algoritma atau ilustrasi penyimpanan register

Ilustrasi Proses Data 10H 10H 20H 20H 10H A 10H A 20H B 20H B 20H C + + 30H A 30H A 00H D 00H A 00H C 20H A 00H C

Contoh Program Assembly ORG 0100H Mulai: LD C,B LD B,A ADD A,C LD D,A LD A,C LD C,D HALT ORG 0100H Mulai: LD D,B LD B,A ADD A,D LD C,A LD A,D HALT

SEKIAN TERIMA KASIH