Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehJane Fitriia Telah diubah "10 tahun yang lalu
1
Praktikum Organisasi Komputer (Bahasa Assembly)
Departemen Ilmu Komputer FMIPA IPB 2010
2
Abstraksi Komputer Terdapat beberapa tingkatan mendeskripsikan komputer. Mulai dari level user terus menurun hingga level transistor. Semakin menurun tingkatan, struktur internal (fisik) komputer semakin jelas. Sebaliknya, semakin naik tingkatan, struktur internal (fisik) komputer semakin abstrak.
3
Bahasa Assembly Merupakan bahasa pemrograman dengan korespondensi satu-ke-satu antara statemen-statemennya (instruksi-instruksinya) dengan bahasa mesin yang dipahami oleh CPU. Bahasa Assembly sering disebut low-level language (bahasa tingkat rendah) karena kedekatannya dengan bahasa mesin. Walaupun dekat dengan bahasa mesin, statemen dalam bahasa Assembly masih bisa dipahami oleh manusia dan lebih mudah diingat. Setiap bahasa Assembly dipengaruhi oleh instruction set pada CPU dan arsitektur hardware. Sifat korespondensi satu-ke-satu antara bahasa Assembly dengan bahasa mesin milik CPU menjadikan program yang ditulis dalam bahasa assembly dapat berjalan lebih cepat dan efektif dibandingkan dengan ditulis dengan bahasa tingkat tinggi. Assembler : Program untuk menkonversi source-code program ke dalam bahasa mesin.
4
Contoh Program C: Assembly (dengan DEBUG): Bahasa mesin: ???
#include <stdio.h> int main () { printf(“A”); return 0; } Assembly (dengan DEBUG): mov ah, 02 mov dl, 41 int 21 int 20 Bahasa mesin: ??? Bagaimana perbandingan ukuran program dan kemudahan?
5
System Bus Model Komputer terdiri atas: CPU (ALU, Register dan Control), memori, dan unit input/output. Komunikasi antarkomponen dilakukan melalui ‘jalur’ yang digunakan bersama. Jalur ini dikenal sebagai system bus, yang terdiri atas tiga bagian: data bus, address bus, dan control bus.
6
Mengapa Belajar Bahasa Assembly ?
Mempelajari arsitektur komputer dan sistem operasi Memahami bagaimana komputer membuat kode mesin Menangani hal-hal yang sulit ditangani dengan menggunakan bahasa pemrograman tingkat tinggi Keluar dari batasan-batasan yang ditetapkan dalam bahasa pemrograman tingkat tinggi
7
Aplikasi Bahasa Assembly
Biasanya bahasa Assembly ditulis sebagai modul, kemudian dipanggil dari bahasa pemrograman tingkat tinggi (Pascal, C, C++, dll). Sebagai contoh, kita membangun aplikasi dalam bahasa Pascal atau C++ kemudian kita ingin mengetahui disk free space, membuat subdirektori, atau berhubungan dengan alat-alat I/O secara langsung. Utilities Game trainer
8
Tugas CPU Tugas dasar dari CPU adalah :
Menemukan dan mengambil instruksi berikutnya. Mengeksekusi instruksi tersebut : Mengambil data dari memori/register Menyimpan data ke dalam memori/register Melakukan perhitungan dan perbandingan Mengubah nilai Instruction Pointer (mis. branching)
9
Arsitektur Mikroprosesor (CPU)
Arsitektur umum Mikroprosesor Data Register Address Registers Control Unit Arithmetic Logic Unit Flags Register Data Bus Address Bus Output Lines
10
Arsitektur Mikroprosesor (CPU) (lanj.)
Arithmetic and Logic Unit (ALU) Menangani perhitungan Aritmatika, logika, dan operasi pergeseran (shifting). Control Unit (CU) Mengambil data dan instruksi-instruksi (fetch). Melakukan proses dekode alamat. Register Tempat penyimpanan berkecepatan tinggi pada CPU yang langsung terhubung ke CU dan ALU. Merupakan “Special work areas” pada CPU yang dirancang untuk dapat bekerja dengan kecepatan tinggi. Instruksi yang hanya melibatkan register akan berjalan lebih cepat dibandingkan dengan instruksi yang melibatkan memori ataupun tempat penyimpanan lain. Hampir semua instruksi pada prosesor Intel membutuhkan paling sedikit satu register. Data Bus dan Address Bus ‘Kawat-kawat paralel’ (parallel wires) yang digunakan untuk transmisi data antarbagian pada CPU.
11
Register Data (General Purpose) Registers
Terdiri atas 4 buah register : AX,BX,CX,DX Bisa diakses baik 32 bit (pada prosessor Pentium 4), 16 bit (pada prosessor ) ataupun 8 bit Digunakan untuk perhitungan aritmetika dan data movement
12
Register (Lanj.) Data (General Purpose) Registers Register (16 Bit)
8 Bit Terendah 8 Bit Teratas Keterangan AX AL AH (Accumulator), sering digunakan untuk operasi aritmatika dan data movement. Operasi-operasi lain terkadang lebih efisien jika menggunakan register ini. BX BL BH (Base), digunakan juga dalam operasi aritmatika dan data movement. Mampu menyimpan alamat memori yang menunjuk ke suatu variabel (kemampuan pengalamatan). Register-register lain yang memiliki kemampuan pengalamatan adalah Index Registers (SI, DI dan BP).
13
Register (Lanj.) Data (General Purpose) Registers Register (16 Bit)
8 Bit Terendah 8 Bit Teratas Keterangan CX CL CH (Counter), digunakan sebagai counter dalam instruksi perulangan (looping). Setiap terjadi perulangan secara otomatis register CX nilainya akan dikurangi satu dan perulangan akan berhenti ketika nilai register CX nol. DX DL DH (Data), digunakan untuk menyimpan alamat port I/O (8 bit atau 16 bit) Selain itu, memiliki peran khusus dalam operasi perkalian dan pembagian. Sebagai contoh, dalam perkalian DX akan menyimpan 16 bit nilai teratas dari hasil perkalian.
14
Register (Lanj.) Segment Registers
Digunakan untuk menyimpan base locations (lokasi awal) untuk instruksi-instruksi program, data, dan stack. Seluruh referensi ke memori pada IBM-PC melibatkan sebuah segment register sebagai base location. Mengenai segment dan offset akan dibahas pada bahasan pengalamatan memori. Terdapat 4 jenis Segment Registers pada IBM-PC dan kompatibelnya (keluarga Intel) : CS (Code Segment), DS (Data Segment), SS (Stack Segment), ES (Extra Segment)
15
Register (Lanj.) Segment Registers Register (16 Bit) Keterangan CS
(Code Segment), menyimpan base location dari seluruh instruksi (kode) dari sebuah program Mendefiniskan alamat awal (starting address) dari bagian memori yang menyimpan kode program (instruksi) DS (Data Segment), merupakan default base location untuk variabel-variabel. CPU menghitung lokasi memori menggunakan nilai dari register DS SS (Stack Segment), berisi base location untuk stack. Stack entry point ditentukan oleh register SS dan SP (Stack Pointer Special Registers). Register BP (Base Pointer Index Registers) juga dapat digunakan bersama register SS. ES (Extra Segment), base location tambahan untuk variabel-variabel memori. Digunakan oleh beberapa instruksi terkait dengan string untuk menyimpan data tujuan
16
Register (Lanj.) Index Registers Berisi offset dari variabel-variabel.
Offset adalah ‘jarak’ suatu variabel atau instruksi dari base segmentnya. Register Index akan mempercepat pemrosesan string, array, dan struktur data lainnya yang terdiri atas banyak elemen. Terdapat 3 jenis Register Index, yaitu : SI (Source Index), DI (Data Index), dan BP (Base Pointer).
17
Register (Lanj.) Index Registers Register (16 Bit) Keterangan SI
(Source Index), menyimpan alamat-alamat source dari data string dalam instruksi-instruksi string. Biasanya berisi offset dari register DS. DI (Destination Index), menyimpan alamat-alamat destination dari data string dalam instruksi-instruksi string. Biasanya berisi offset dari register ES, tetapi bisa juga digunakan untuk mengalamati variabel. BP (Base Pointer), Menunjuk ke sebuah lokasi memori (berlaku untuk seluruh jenis mikroprosesor) untuk melakukan proses transfer data pada memori.
18
Register (Lanj.) Special Registers
Merupakan register-register yang tidak masuk ke kelompok-kelompok register sebelumnya. Ada 2 Special Registers : IP (Instruction Register) dan SP(Stack Pointer).
19
Register (Lanj.) Special Registers Register (16 Bit) Keterangan IP
(Instruction Pointer), berisi offset dari instruksi berikutnya yang akan dieksekusi. Register CS dan IP akan membentuk alamat memori lengkap dari instruksi berikutnya yang akan dieksekusi. SP (Stack Pointer), berisi offset/jarak dari awal stack segment sampai ke puncak stack. Register SS dan SP akan membentuk alamat memori lengkap dari puncak stack.
20
Register (Lanj.) Flags Register x O D I T S Z A P C
Digunakan untuk menunjukkan status dari CPU dan mengendalikan operasi pada CPU. Panjang Rgister Flag adalah 16 bit pada prosesor (FLAG) dan 32 bit pada prosesor Pentium 4 (EFLAG). 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 x O D I T S Z A P C
21
Register (Lanj.) Flags Register Bit Arti Keterangan O Overflow
Akan diset ketika hasil operasi aritmatika bilangan bertanda terlalu besar sehingga tidak cukup untuk disimpan di area tujuan. Bernilai 1 jika terjadi overflow dan 0 jika tidak terjadi overflow. D Direction Untuk memilih mode increment atau decrement untuk register DI dan/atau SI dalam instruksi string. Jika D=0 maka register Di dan SI akan secara otomatis dinaikkan (incremented). Flag D diset dengan perintah STD (set direction) dan direset dengan perintah CLD (clear direction).
22
Register (Lanj.) Flags Register Bit Arti Keterangan I Interrupt
Mengendalikan operasi dari pin input INTR (interrupt request). I=1 maka INTR dihidupkan. I=0 maka INTR dimatikan. Dikendalikan dengan peritah STI (set I flag) dan CLI (clear I flag). T Trap Memungkinkan trapping melalui fitur on-chip debugging. T=1 maka mikroprosesor akan menginterupsi alur program pada kondisi yang diindikasikan oleh debug registersdan control registers. T=0 fitur untuk trapping (debugging) dimatikan.
23
Register (Lanj.) Flags Register Bit Arti Keterangan S Sign
Menyimpan tanda bilangan hasil instruksi aritmatika atau logika. S=1 maka bagian MSD dari bit diset menjadi 1 yang berarti negatif. S=0 MSD di-clear menjadi 0 yang berarti positif. Z Zero Menunjukkan bahwa hasil operasi aritmatika bernilai nol. Z=1 maka hasil operasi bernilai nol. Z=0 berarti hasil operasi tidak bernilai nol. A Auxiliary Carry Menyimpan nilai carry (half carry) pada penjumlahan atau nilai borrow pada pengurangan antara posisi bit ke-3 dan ke-4 dari hasil.
24
Register (Lanj.) Flags Register Bit Arti Keterangan P Parity
Bernilai 0 untuk paritas ganjil (odd parity) dan bernilai 1 untuk paritas genap (even parity). Parity merupakan jumlah bit ‘1’ di dalam sebuah bilangan yang dinyatakan genap atau ganjil. Digunakan untuk verifikasi inegritas memori dan software komunikasi C Carry Menyimpan nilai carry pada penjumlahan dan nilai borrow pada pengurangan. Biasanya juga digunakan untuk mengindikasikan error condition yang terjadi pada program atau prosedur x Undifined -
25
Register (Intel 8086-80286) General Purpose BP SP SI DI Index 16 Bit
Flags IP Status and Control 16 Bit AH AL 8 Bit AX BH BL BX CH CL CX DH DL DX CS SS DS ES Segment 16 Bit
26
Register (Intel 80386-Pentium 4)
CS SS DS ES FS GS Segment ESP EBP SP BP DI SI EDI ESI 32 Bit Index IP EIP EFLAGS FLAGS Status and Control AH AL AX (16 Bit) EAX (32 Bit) BH BL BX (16 Bit) EBX (32 Bit) CH CL CX (16 Bit) ECX (32 Bit) DH DL DX (16 Bit) EDX (32 Bit) General Purpose 16 Bit Ada pada Ada pada Pentium 4
27
Arsitektur Komputer Bandingkan register-register 8086 dan 80386
AH, AL, AX, EAX dst
28
Pengalamatan Memori Sebuah alamat memori menunjukkan lokasi memori sepanjang 8 bit. Alamat memori dinyatakan dengan bilangan mulai dari 0 sampai ke lokasi memori tertinggi. Alamat memori bisa dinyatakan dalam 2 format heksadesimal: 32-bit segment-offset address. Merupakan kombinasi base location (segment) dengan offset untuk membentuk lokasi sebenarnya. Contoh : 08F1:0100. 20-bit absolute address. Menyatakan alamat memori sebenarnya. Contoh : Dengan alamat 20-bit dapat mengalamati bytes memory, tetapi address registers hanya memiliki panjang 16 bit solusi:kombinasi segment dan offset.
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.