Anda di halaman 1dari 27

BAHASA KOMPUTER

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.

Bahasa Assembly

Merupakan bahasa pemrograman dengan korespondensi satu-kesatu 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.
3

Contoh Program

C:
#include <stdio.h>
int main () {
printf(A);
return 0;
}

Assembly (dengan DEBUG):


mov
mov
int
int

ah, 02
dl, 41
21
20

Bahasa mesin: ???


Bagaimana perbandingan ukuran program dan kemudahan?
4

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.

Mengapa Belajar Bahasa Assembly


?

sony@ilkom.fmipa.ipb.ac.id

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
sony@ilkom.fmipa.ipb.ac.id

Tugas CPU

Tugas dasar dari CPU adalah :


1. Menemukan dan mengambil instruksi
berikutnya.
2. Mengeksekusi instruksi tersebut :

Mengambil data dari memori/register


Menyimpan data ke dalam memori/register
Melakukan perhitungan dan perbandingan
Mengubah nilai Instruction Pointer (mis.
branching)
sony@ilkom.fmipa.ipb.ac.id

Arsitektur Mikroprosesor (CPU)


Arsitektur umum Mikroprosesor
Data Bus

Data Register
Address Registers

Output Lines

Control
Unit

Address Bus

Arithmetic
Logic
Unit

Flags
Register

Output Lines
sony@ilkom.fmipa.ipb.ac.id

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.

sony@ilkom.fmipa.ipb.ac.id

10

Register
1. Data (General Purpose) Registers
Terdiri atas 4 buah register : AX,BX,CX,DX
Bisa diakses baik 32 bit (pada prosessor
80386-Pentium 4), 16 bit (pada prosessor
8088-80286) ataupun 8 bit
Digunakan untuk perhitungan aritmetika
dan data movement

sony@ilkom.fmipa.ipb.ac.id

11

Register (Lanj.)
1. Data (General Purpose) Registers
Register
(16 Bit)
AX

BX

8 Bit
Terendah
AL

BL

8 Bit
Teratas

Keterangan

AH

(Accumulator), sering digunakan untuk


operasi aritmatika dan data movement.
Operasi-operasi lain terkadang lebih
efisien jika menggunakan register ini.

BH

(Base), digunakan juga dalam operasi


aritmatika dan data movement.
Mampu menyimpan alamat memori
yang menunjuk ke suatu variabel
(kemampuan pengalamatan). Registerregister lain yang memiliki kemampuan
pengalamatan adalah Index Registers
(SI, DI dan BP).

sony@ilkom.fmipa.ipb.ac.id

12

Register (Lanj.)
1. Data (General Purpose) Registers
Register
(16 Bit)

CX

DX

8 Bit
Terendah

CL

DL

8 Bit
Teratas

Keterangan

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.

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.

sony@ilkom.fmipa.ipb.ac.id

13

Register (Lanj.)
2. 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)
sony@ilkom.fmipa.ipb.ac.id

14

Register (Lanj.)
2. 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
sony@ilkom.fmipa.ipb.ac.id

15

Register (Lanj.)
3. 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).
sony@ilkom.fmipa.ipb.ac.id

16

Register (Lanj.)
3. 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.

sony@ilkom.fmipa.ipb.ac.id

17

Register (Lanj.)
4. Special Registers
Merupakan register-register yang tidak
masuk ke kelompok-kelompok register
sebelumnya.
Ada 2 Special Registers : IP (Instruction
Register) dan SP(Stack Pointer).

sony@ilkom.fmipa.ipb.ac.id

18

Register (Lanj.)
4. 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.

sony@ilkom.fmipa.ipb.ac.id

19

Register (Lanj.)
5. Flags Register
Digunakan untuk menunjukkan status dari CPU dan
mengendalikan operasi pada CPU.
Panjang Rgister Flag adalah 16 bit pada prosesor
8088-80286 (FLAG) dan 32 bit pada prosesor
80386-Pentium 4 (EFLAG).
15

14

13

12

11

10

x x x x O D I T S Z x A x P x C
sony@ilkom.fmipa.ipb.ac.id

20

Register (Lanj.)
5. Flags Register
Bit

Arti

Keterangan

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.

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

sony@ilkom.fmipa.ipb.ac.id

21

Register (Lanj.)
5. Flags Register
Bit

Arti

Interrupt

Trap

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

sony@ilkom.fmipa.ipb.ac.id

22

Register (Lanj.)
5. Flags Register
Bit

Arti

Keterangan

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.

Zero

Menunjukkan bahwa hasil operasi aritmatika


bernilai nol.
Z=1 maka hasil operasi bernilai nol. Z=0 berarti
hasil operasi tidak bernilai nol.

Auxiliary Carry

Menyimpan nilai carry (half carry) pada


penjumlahan atau nilai borrow pada pengurangan
antara posisi bit ke-3 dan ke-4 dari hasil.

sony@ilkom.fmipa.ipb.ac.id

23

Register (Lanj.)
5. Flags Register
Bit

Arti

Keterangan

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

Carry

Menyimpan nilai carry pada penjumlahan dan nilai


borrow pada pengurangan.
Biasanya juga digunakan untuk mengindikasikan
error condition yang terjadi pada program atau
prosedur

Undifined
Undifined

sony@ilkom.fmipa.ipb.ac.id

24

Register (Intel 8086-80286)


General Purpose
8 Bit

AH
8 Bit

8 Bit

AX

AL
8 Bit

BX
BH
8 Bit

CH
8 Bit

BL
8 Bit

CX

CL
8 Bit

DX
DH

DL

Index
BP
SP
SI
DI

Status and Control


Flags
IP
16 Bit

16 Bit
Segment
CS
SS
DS
ES
16 Bit
sony@ilkom.fmipa.ipb.ac.id

25

Register (Intel 80386-Pentium 4)


General Purpose

Segment

EAX (32 Bit)


AH

CS
SS

AL

AX (16 Bit)
EBX (32 Bit)
BH

BL

CX (16 Bit)
EDX (32 Bit)
DH

DL

DX (16 Bit)

EIP

FS

EFLAGS

IP
FLAGS
32 Bit

16 Bit

ECX (32 Bit)


CL

ES
GS

BX (16 Bit)

CH

Status and Control

DS

Index
ESP

SP

EBP

BP

EDI

DI

ESI

SI

Ada pada 8088-80286


Ada pada 80386-Pentium 4

32 Bit
sony@ilkom.fmipa.ipb.ac.id

26

Arsitektur Komputer
Bandingkan register-register 8086 dan
80386
AH, AL, AX, EAX
dst

sony@ilkom.fmipa.ipb.ac.id

27

Anda mungkin juga menyukai