Bahasa Assembly
-
Upload
mike-fiansz-fiansz -
Category
Documents
-
view
425 -
download
59
description
Transcript of Bahasa Assembly
Bahasa Pemrograman Assembly
Oleh:
Yasir Hasan, S.Kom
PendahuluanBahasa Assembly (Low Level Language). tahun 1950.
1. Mikrokontroler adalah sistem yang dapat membaca intruksi-intruksi signal analog dalam memori yang dipresentasikan dari kombinasi biner (binary numeric) 0 dan 1
2. Mikroprosessor adalah sistem yang mampu mengolah data aritmatika, logika dan kontrol dari komputer general purpose. Mikroprosessor terdiri dari rangkaian terpadu tunggal yang memiliki ribuan gerbang digital.
• Proses eksekusi Aritmatika yaitu penjumlahan, pengurangan, perkalian dan pembagian sistem bilangan
• Proses eksekusi Logika yaitu AND, OR, XOR dan NOT.• Unit Control yaitu pengerbangan logika yang diperlukan
untuk aliran instruksi dan data
Mikroprocessor
Arsitektur Mesin Von Neumann
Hal-hal yang perlu dilakukan CPU adalah:1. Membaca, mengkodekan dan mengeksekusi instruksi program 2. Mengirim data dari dan ke memori, serta dari dan ke bagian input/output.3. Merespon interupsi dari luar, menyediakan clock dan sinyal kontrol kepada
sistem
1. Bus Jalur transfer data yang mengghubungkan antar setiap Divice2. Register Bagian dari memori CPU untuk menyimpan intruksi-intruksi CPU3. Address Lines Penghubung komunikasi CPU dengan chip memory4. Control Lines Jalur akses (interrupt) alamat ke register di CPU
Program disimpan dalam unit memori utama yang berhadapan dengan piranti I/O melalui CPU. CPU membaca dari atau menulis ke memori dengan mengirimkan alamat word ke unit memori melalui bus address kemudian menerima atau mengirimkan data melalui bus data. Data dipertukarkan antara CPU dan Unit I/O juga dengan menggunakan bus data. Operasi disinkronisasikan oleh dua bus control dengan sinyal kendali yang dikirimkan oleh CPU dan sinyal acknowledgment serta sinyal interupsi yang diterima oleh CPU
Arsitektur Mesin Von Neumann
Arithmatic and Logic Unit (ALU), adalah salah satu bagian/komponen dalam sistem di dalam sistem komputer berfungsi melakukan perasi/perhitungan aritmatika dan logika (seperti penjumlahan, pengu-rangan dan beberapa logika lain), ALU bekerja bersama-sama memori. Dimana hasil dari perhitungan di dalam ALU di simpan ke dalam memori
Type Processor Intel
Nama Processor Data Width
4040 4 bit
8008 8 bit
8080 16
8086, 80186 – 8088, 80188 18 bit - 20 bit
80286 16 bit
80486 – Pentium 4 32 bit
Pentium D – Dual Core 64 bit
Core 2 Duo 64 bit
Generasi Pentium
Pembagian Memori
BLOCK FUNGSI BLOCK FUNGSI
0 RAM 8 RAM
1 RAM 9 RAM
2 RAM A EXTENDED VIDEO MEMORI
3 RAM B EXTENDED VIDEO MEMORI
4 RAM C EXTENDED ROM
5 RAM D FUNGSI LAIN
6 RAM E FUNGSI LAIN
7 RAM F BIOS & BASIC
Pengalamatan Memory dengan segment : offset
Menentukan segmentLebar data processor = 2 pangkat lebar data processormis : processor 16 bit 216 64 KB 65536 Bytejika memory 1 MB = 1024 KBmaka besar memory dibagi oleh hasil data processor1024 : 64 = 16 segment 64 adalah besaran 1 segment diambil dari lebar data processorMenentukan offset dalam 1 segment terdapat dari 216 offset (65536)
0000h – FFFFhnomor offset diukur dari awal suatu segment
Letak segment dalam memory
Pembacaan segment : offsetSegmen 0000h berawal dari lokasi memori 0 hingga 65535 ( 64 KB ). Segmen 0001h berawal dari lokasi memori 16 (0010h) hingga 65551 (65535 + 16). Segmen 0002h berawal dari lokasi 32 hingga 65567. Demikian seterusnya. Sistem penempatan segmen semacam ini akan menyebabkan terjadinya overlapping (tumpang-tindih) di mana lokasi offset 0010h bagi segmen 0000h akan merupakan offset 0000h bagi segmen 0001h. Demikian pula offset 0011h bagi segmen 0000h akan merupakan offset 0001h bagi segmen 0001h. Ada banyak nilai segmen:offset yang dapat digunakan untuk menyatakan suatu alamat memori tertentu disebabkan adanya overlapping ini
Konversi Alamat
Alamat yang menggunakan sistem segmen : offset
disebut sebagai alamat relatif karena sifat offset yang relatif terhadap segmen. Sedangkan alamat memori yang sebenarnya disebut alamat absolut.
Geser nilai segment 4 bit kiri atau kalikan nilai segment dengan 24 lalu jumlahkan dengan nilai offset,
Alamat relatif : 1357h:2468h 1356h:2478h
13570 13560
2468 2478
------- -------
Alamat absolut : 159D8h 159D8h
Memory
• Register merupakan sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya mikroprosesor selalu menggunakan register-register sebagai perantaranya, jadi register dapat diibaratkan sebagai kaki dan tangannya mikroprosesor
Jenis-jenis register
• Segment Register
• Pointer & Index Register
• General Purpose Register
• Indexs Pointer Register
• Flag Register
1. Segment Register (16 bit)digunakan untuk menunjukkan alamat dari suatu segmen
Register CS (Code Segment)Digunakan untuk menunjukkan tempat dari segmen yang sedang aktifRegister SS (Stack Segment) Menunjukkan letak dari segmen yang digunakan oleh stack. Kedua register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya. Register DS (Data Segment) Digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada program residen. Register ES (Extra Segment)Register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya digunakan untuk menunjukkan suatu alamat di memory, misalkan alamat memory video. Pada prosesor 80386 terdapat tambahan register segment 16 bit, yaitu FS<Extra Segment> dan GS<Extra Segment>.
2. Pointer dan Index Register. (16 bit)
Digunakan sebagai penunjuk atau pointer terhadap suatu lokasi di memory.
Register SP(Stack Pointer)
Berpasangan dengan register segment SS(SS:SP) digunakan untuk mununjukkan alamat dari stack
Register BP(Base Pointer)
Berpasangan dengan register SS(SS:BP) mencatat suatu alamat di memory tempat data.
Register SI(Source Index) dan Register DI(Destination Index)
Digunakan pada operasi string dengan mengakses secara langsung pada alamat di memory yang ditunjukkan oleh kedua register ini.
Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu ESP,EBP,ESI dan EDI.
3. General Purpose Register (16 bit).
Register- register dipisah menjadi 2 bagian dimana masing-masing bagian terdiri atas 8 bit, seperti pada gambar 4.1. Akhiran H menunjukkan High sedangkan akhiran L menunjukkan Low
Register AX, secara khusus digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan.
Register BX, biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen.
Register CX, digunakan secara khusus pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi.
Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit.
Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu EAX,EBX,ECX dan EDX.
Skema General Purpose Register
General Purpose Register
32 bit (0-31)
16 bit (0-15)
8 bit High (8-15) 8 bit Low (0-7)
ACCUMULATOR ← EAX →← AX →
← AH → ← AL →
BASE ← EBX → ← BX →
← BH → ← BL →
COUNT ← ECX → ← CX →
← CH → ← CL →
DATA ← EDX → ← DX →
← DH → ← DL →
4. Index Pointer Register (16 bit)
Register IP (instruction Pointer) berpasangan dengan CS(CS:IP) menunjukkan alamat dimemory tempat dari intruksi (perintah) selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit. Pada prosesor 80386 digunakan register EIP yang merupakan register 32 bit
5. Flags Register. Flags(Bendera) register ini menunjukkan kondisi dari suatu keadaan< ya atau tidak >. Karena setiap keadaan dapat digunakan 1 bit saja, maka sesuai dengan jumlah bitnya, Flags register ini mampu memcatat sampai 16 keadaan. Flag yang terdapat pada mikroprosesor 8088 keatas adalah : OF <OverFlow Flag>. Jika terjadi OverFlow pada operasi aritmatika, bit ini akan bernilai 1. SF <Sign Flag>. Jika digunakan bilangan bertanda bit ini akan bernilai 1 ZF <Zero Flag>. Jika hasil operasi menghasilkan nol, bit ini akan bernilai 1. CF <Carry Flag>. Jika terjadi borrow pada operasi pengurangan atau carry pada penjumlahan, bit ini akan bernilai 1. PF <Parity Flag>. Digunakan untuk menunjukkan paritas bilangan. Bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap. DF <Direction Flag>. Digunakan pada operasi string untuk menunjukkan arah proses. IF <Interrupt Enable Flag>. CPU akan mengabaikan interupsi yang terjadi jika bit ini 0. TF <Trap Flag>. Digunakan terutama untuk Debugging, dengan operasi step by step. AF <Auxiliary Flag>. Digunakan oleh operasi BCD, seperti pada perintah AAA. NT <Nested Task>. Digunakan pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun. IOPL <I/O Protection level>. Flag ini terdiri atas 2 bit dan digunakan pada prosesor 80286 dan 80386 untuk mode proteksi
Pada prosesor 80286 dan 80386 keatas terdapat beberapa tambahan pada flags register, yaitu : PE <Protection Enable>. Digunakan untuk mengaktifkan mode proteksi. flag ini akan bernilai 1 pada mode proteksi dan 0 pada mode real. MP <Monitor Coprosesor>. Digunakan bersama flag TS untuk menangani terjadinya intruksi WAIT. EM <Emulate Coprosesor>. Flag ini digunakan untuk mensimulasikan coprosesor 80287 atau 80387. TS <Task Switched>. Flag ini tersedia pada 80286 keatas. ET <Extension Type>. Flag ini digunakan untuk menentukan jenis coprosesor 80287 atau 80387. RF <Resume Flag>. Register ini hanya terdapat pada prosesor 80386 keatas. VF <Virtual 8086 Mode>. Bila flag ini bernilai 1 pada saat mode proteksi, mikroprosesor akan memungkinkan dijalankannya aplikasi mode real pada mode proteksi. Register ini hanya terdapat pada 80386 keatas
Interrupt• Interrupt adalah permintaan kepada microprocessor untuk
melakukan suatu perintah. Ketika terjadi permintaan interupsi, microprocessor akan menghentikan proses yang sedang berlangsung dan segera mengeksekusi interrupt handler , yaitu suatu program yang melayani interupsi
• Interrupt handler tercatat dalam memori dalam bentuk array yang besar elemennya masing-masing terdiri dari 4 byte yaitu 2 byte pertama untuk kode offset dan 2 byte selanjutnya untuk kode segment. ‘
• Array ini disebut vektor interupsi disusun berdasarkan nomor interupsi yaitu dari hexa. Selain itu, dikenal juga istilah service dan subservice, maksudnya adalah bahwa setiap interrupt itu dibagi menjadi beberapa bagian yang mempunyai tugas masing-masing
• 4 byte array terdiri dari 256 elemen masing-masing
• Total pemakaian memory
256 x 4 =1024 1 KB dalam memory absolut 0000h – 3FFh
• Array 1 KB disebut Interupt Vector Table (Tabel Vektor Interupsi)
Interrupt terbagi atas dua
• Interrupt BIOS
• Interrupt DOS
Interrupt BIOS
• Interupt 00h - 1Fh (0 - 31), standar di semua komputer baik yang menggunakan sistem operasi DOS atau bukan. Lokasi Interupt Vector Tablenya ada di alamat absolut 0000h-007Fh
No Interrupt
Fungsi
00h Devide By Zero dibagi dengan 0
01h Single Step langkah tunggal
02h Non MaskableInt(NMI) penyela non maskable
03h Break Point perangkap breakpoint
04h Arithmatic Overflow deteksi Overflow
05h Print Screen mencetak isi layar
06h Reserved kosong
07h Reserved kosong
08h Clock Tick(Timer) pengatur waktu
09h Keyboard
0Ah Reserved kosong
0Bh COM 1 (serial 1) Komunikasi
0Ch COM 2 (serial 2) Komunikasi
0Dh Printer Alternate printer tidak terpilih
0Eh Diskette disket
0Fh LPT 1 (Parallel 1) generator printer
10h Video Service video (layar)
11h Equipment Check pengambilan peralatan komputer
12h Memory Size mengambil besarnya memory induk
No Interrupt
Fungsi
13h Disk Service mengatur operasi disk
14h Communication (RS-232) port komunikasi
15h Cassette Service kaset
16h Keyboard Service keyboard I/O
17h Printer Service printer I/O
18h ROM Basic menjalankan resident basic pada ROM
19h Bootstrap Loader boot komputer
1Ah BIOS time & date waktu dan jam BIOS
1Bh Control Break keyboard untuk tombol ctrl break
1Ch Timer Tick penghitung waktu 1Ah
1Dh Video Initialization video parameters
1Eh Disk Parameters disket parameter
1Fh Graphics Char karakter-karakter yang dapat ditampilkan
Interrupt BIOS
Interrupt DOS
• Interupt 20h - FFh (32 - 255), interrupt ini hanya ada pada komputer yang menggunakan sistem operasi DOS dan Interupt Handlernya diload ke memori oleh DOS pada saat DOS digunakan
Interrupt DOSNo Interrupt Fungsi
20h Terminate Program penghentian program
21h DOS Function Services permintaan fungsi DOS
22h Terminate Code alamat berhenti
23h Ctrl-Break Code alamat ctrl-break
24h Critical Error Handler penangganan masalah krisis
25h Absolute Disk Read pembacaan disk secara absolute
26h Absolute Disk Write menulis disk secara absolute
27h Terminate and Stay Resident program menjadi residen
28h-2Eh Dipakai sendiri oleh DOS
2Fh Multiplex Interrupt
30h-2Eh Dikosongkan untuk DOS
40h-7Eh Reserve kosong
80h-85h Dikosongkan untuk BASIC
86h-F0h Digunakan BASIC Interpreter
F1h-FFh Reserve kosong