Download ppt - Bahasa Assembly

Transcript
Page 1: Bahasa Assembly

Bahasa Pemrograman Assembly

Oleh:

Yasir Hasan, S.Kom

Page 2: Bahasa Assembly

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

Page 3: Bahasa Assembly

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

Page 4: Bahasa Assembly

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

Page 5: Bahasa Assembly

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

Page 6: Bahasa Assembly

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

Page 7: Bahasa Assembly

Generasi Pentium

Page 8: Bahasa Assembly

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

Page 9: Bahasa Assembly

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

Page 10: Bahasa Assembly

Letak segment dalam memory

Page 11: Bahasa Assembly

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

Page 12: Bahasa Assembly

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

Page 13: Bahasa Assembly

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

Page 14: Bahasa Assembly

Jenis-jenis register

• Segment Register

• Pointer & Index Register

• General Purpose Register

• Indexs Pointer Register

• Flag Register

Page 15: Bahasa Assembly

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>.

Page 16: Bahasa Assembly

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.

Page 17: Bahasa Assembly

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.

Page 18: Bahasa Assembly

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 →

Page 19: Bahasa Assembly

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

Page 20: Bahasa Assembly

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

Page 21: Bahasa Assembly

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

Page 22: Bahasa Assembly

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

Page 23: Bahasa Assembly

• 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)

Page 24: Bahasa Assembly

Interrupt terbagi atas dua

• Interrupt BIOS

• Interrupt DOS

Page 25: Bahasa Assembly

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

Page 26: Bahasa Assembly

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

Page 27: Bahasa Assembly

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

Page 28: Bahasa Assembly

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

Page 29: Bahasa Assembly

Recommended