Anda di halaman 1dari 16

LAPORAN PRAKTIKUM

PENGANTAR ARSITEKTUR DAN ORGANISASI KOMPUTER

“PROGRAM CETAK KARAKTER BERWARNA

DALAM BAHASA ASSEMBLY”

Kelas : INF B/P2

Nama : AYU PUTRI SAKINAH

NIM : J3C116025

PROGRAM KEAHLIAN MANAJEMEN INFORMATIKA

PROGRAM DIPLOMA

INSTITUT PERTANIAN BOGOR

2017
DAFTAR ISI

BAB I.........................................................................................................................................3
PENDAHULUAN......................................................................................................................3
1.1. LATAR BELAKANG.................................................................................................3
1.2. TUJUAN PRAKTIKUM.............................................................................................3
BAB II........................................................................................................................................5
PEMBAHASAN........................................................................................................................5
2.1. TEORI PENUNJANG.................................................................................................5
2.2. PERTANYAAN..........................................................................................................8
2.3. LISTING PROGRAM.................................................................................................8
2.4. ANALISA PROGRAM.............................................................................................10
BAB III.....................................................................................................................................15
KESIMPULAN....................................................................................................................15

ii
BAB I
PENDAHULUAN

1.1. LATAR BELAKANG

Bahasa rakitan atau lebih umum dikenal sebagai Assembly adalah bahasa pemrograman
tingkat rendah yang digunakan dalam pemrograman komputer, mikroprosesor, pengendali
mikro, dan perangkat lainnya yang dapat diprogram. Bahasa rakitan mengimplementasikan
representasi atas kode mesin dalam bentuk simbol-simbol yang secara relatif lebih dapat
dipahami oleh manusia. Berbeda halnya dengan bahasa-bahasa tingkat tinggi yang berlaku
umum, bahasa rakitan biasanya mendukung secara spesifik untuk suatu ataupun beberapa
jenis arsitektur komputer tertentu. Dengan demikian, portabilitas bahasa rakitan tidak dapat
menandingi bahasa-bahasa lainnya yang merupakan bahasa pemrograman tingkat tinggi.
Namun, bahasa rakitan memungkinkan programmer memanfaatkan secara penuh kemampuan
suatu perangkat keras tertentu yang biasanya tidak dapat ataupun terbatas bila dibuat dengan
menggunakan bahasa pemrograman tingkat tinggi.
Pada bahasa rakitan, programmer umumnya menggunakan sebuah program utilitas
yang disebut sebagai perakit (bahasa Inggris: assembler) yang digunakan untuk
menerjemahkan kode dalam bahasa rakitan tersebut ke dalam kode mesin untuk perangkat
keras tertentu. Sebuah perintah dalam bahasa rakitan biasanya akan diterjemahkan menjadi
sebuah instruksi mnemonic dalam kode mesin, berbeda halnya dengan kompiler pada bahasa
pemrograman tingkat tinggi yang menerjemahkan sebuah perintah menjadi sejumlah instruksi
dalam kode mesin.
Beberapa perangkat lunak bahasa rakitan terkenal biasanya menyediakan tambahan
fitur untuk memfasilitasi proses pengembangan program, mengontrol proses perakitan, dan
alat bantu pengawakutuan (debugging).

1.2. TUJUAN PRAKTIKUM

1. Untuk mengetahui, memahami, dan mempraktikkan bahasa assembly agar


menghasilkan tulisan berulang-ulang dengan karakter yang sama maupun perulangan
bertingkat. Dapat membuat program untuk menampilkan huruf menggunakan fungsi
perulangan (looping).

2. Untuk mengetahui, memahami, dan mempraktikkan bahasa assembly agar


menghasilkan tulisan satu karakter maupun rangkaian kata. Selain itu dapat mencetak
huruf ”Z” sampai huruf ”A”, dan rangkaian kata nama diri sendiri, misal: ”AYU
PUTRI SAKINAH”.

3
3. Memahami fungsi dari interrupt dengan masing-masing service yang berbeda,
khususnya pada interrupt 21h dengan service 02h sebagai intruksi untuk mencetak
satu buah karakter pada layar; interrupt 10h dengan service 09h sebagai intruksi yang
berfungsi untuk mencetak karakter dan atribut pada posisi kursor.

4. Mengenal dan memahami perbedaan-perbedaan register masukan dan keluaran untuk


setiap interrupt dan service yang dipakai.

4
BAB II
PEMBAHASAN

2.1. TEORI PENUNJANG

Interupsi adalah suatu permintaan khusus kepada mikroprosesor untuk melakukan


sesuatu. Bila terjadi interupsi, maka komputer akan menghentikan dahulu apa yang sedang
dikerjakannya dan melakukan apa yang diminta oleh yang menginterupsi.

Pada umumnya, interrupt ini diartikan sebagai perintah-perintah yang diperintahkan


oleh user untuk selanjutnya dikirimkan ke microprocessor melalui register-register dan
diproses sehingga menghasilkan balikan nilai yang sesuai dengan perintah-perintah yang
dimasukkan oleh user.

Interrupt terbagi atas 2 macam:

− Interrupt 00h – 1Fh(0 - 31) merupakan interrupt BIOS dan standar di semua komputer
baik yang menggunakan sistem operasi DOS maupun bukan yang menggunakan sistem
operasi DOS. Lokasi Interrupt Vector Table-nya ada di alamat absolute 0000h-007Fh.
− Interrupt 20h – FFh (32 - 255) merupakan interrupt DOS. Interrupt ini hanya ada pada
komputer yang menggunakan sistem operasi DOS dan interrupt handler-nya dip roses ke
memori oleh DOS pada saat DOS digunakan. Lokasi Interrupt Vector Table-nya ada di
alamat absolute 07h-3FFh.

Register merupakan sebagian memori yang ada di dalam mikroprosesor itu sendiri,
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.

Register yang digunakan oleh microprocessor dibagi menjadi 5 bagian sesuai dengan
tugasnya, keliama bagian tersebut adalah:

− Segmen Register yang terdiri atas CS (Code Segment), DS (Data Segment), ES (Extra
Segment), dan SS (Stack Segment).
− Pointer dan Index Register yang terdiri dari SP (Stack Pointer), BP (Base Pointer), SI
(Source Index), dan DI (Destination Index).
− General Purpose Register yang terdiri atas AX, BX, CX dan DX yang masing-
masingnya terdiri atas 16 bit. Pada setiap bagian register ini, terdapat bagian yaitu H
yang menandai High dan L yang menandai Low. High ini menandai 8 bit pada posisi
akhir register dan Low menandai 8 bit pada posisi awal register. Pada register-register
ini biasanya digunakan dalam berbagai keperluan, tetapi dapat digunakan pula dalam
kondisi-kondisi khusus seperti:

5
 Register AX, biasanya digunakan dalam operasi aritmatika terutama dalam operasi
pembagian dan pengurangan.
 Register BX, pada umumnya digunakan untuk menunjukkan suatu alamat offset
dari suatu segmen.
 Register CX, biasanya digunakan pada operasi looping (perulangan) dimana pada
register ini menunjukkan banyaknya looping yang akan terjadi pada sebuah
program.
 Register DX, digunakan secara khusus untuk menampung sisa hasil pembagian 16
bit.

− Index Pointer Register merupakan register IP yang berpasangan dengan CS (CS:IP)


berufngsi untuk menunjukkan alamat pada memori tempat dari intruksi (perintah)
selanjutnya yang akan diseksekusi.
− Flags Register merupakan register yang menunjukkan kondisi dari sebuah keadaan.
Kondisi keadaan ini mengembalikan nilai “ya” atau “tidak”, atau 0. Pengecekan suatu
kondisi dengan nilai balikan “ya” atau “tidak” disebut dengan fungsi Boolean. Setiap
keadaan pada flags register ini hanya terpakai 1 bit saja, maka untuk satu flags register
ini masing-maisng dapat menyimpankeadaan (16 bit). Flags Register ini terdiri atas OF
(OverFlow Flag), SF (Sign Flag), ZF (Zero Flag), CF (Carry Flag), PF (Parity Flag),
DF (Direction Flag), IF (Interrupt Enable Flag), TF (Trap Flag), AF (Auxiliary Flag),
NT (Nested Task) dan IOPL (I/O Protection Level).

. MODEL SMALL

Tanda directive ini digunakan untuk memberitahukan kepada assembler bentuk


memory yang digunakan oleh program kita. Supaya lebih jelas model-model yang bisa
digunakan adalah :

 TINY
Jika program anda hanya menggunakan 1 segment seperti program COM. Model
ini disediakan khusus untuk program COM.
 SMALL
Jika data dan code yang digunakan oleh program kurang dari ukuran 1 segment
atau 64 KB.
 MEDIUM
Jika data yang digunakan oleh program kurang dari 64 KB tetapi code yang
digunakan bisa lebih dari 64 KB.
 COMPACT
Jika data yang digunakan bisa lebih besar dari 64 KB tetapi codenya kurang dari
64 KB.
 LARGE
Jika data dan code yang dipakai oleh program bisa lebih dari 64 KB.
 HUGE
jika data, code maupun array yang digunakan bisa lebih dari 64 KB.

6
.CODE

Tanda directive ini digunakan untuk memberitahukan kepada assembler bahwa kita
akan mulai menggunakan Code Segment-nya disini. Code segment ini digunakan untuk
menyimpan program yang nantinya akan dijalankan.

.ORG 100h

Pada program COM perintah ini akan selalu digunakan. Perintah ini digunakan
untuk memberitahukan assembler supaya program pada saat dijalankan(diload ke memory)
ditaruh mulai pada offset ke 100h(256) byte. Dapat dikatakan juga bahwa kita menyediakan
100h byte kosong pada saat program dijalankan. 100h byte kosong ini nantinya akan
ditempati oleh PSP(Program Segment Prefix) dari program tersebut. PSP ini digunakan
oleh DOS untuk mengontrol jalannya program tersebut.

.PERINTAH MOV

Perintah MOV digunakan untuk mengcopy nilai atau angka menuju suatu
register,variabel atau memory.

Perintah MOV akan mengcopykan nilai pada sumber untuk dimasukan ke Tujuan, nilai
sumber tidaklah berubah. Inilah sebabnya MOV(E) akan kita terjemahkan disini dengan
mengcopy, dan bukannya memindahkan.

PERINTAH INT

Didalam pemrograman assambler, kita akan banyak sekali menggunakan interupsi


untuk membantu kita dalam mengerjakan suatu pekerjaan. Untuk menghasilkan suatu
interupsi digunakan perintah INT dengan syntax:

INT NoInt

Dengan NoInt adalah nomor interupsi yang ingin dihasilkan. Sebagai contohnya bila kita
ingin menghasilkan interupsi 21h, bisa dituliskan dengan: INT 21h, maka interupsi 21h
akan segera terjadi.

Interupsi 20h

Berfungsi untuk mengakhiri program dan menyerahkan kendali sepenuhnya kepada Dos.
Pada program COM cara ini bukanlah satu-satunya tetapi cara inilah yang paling efektif
untuk digunakan. Bila anda lupa untuk mengakhiri sebuah program maka program anda
tidak akan tahu kapan harus selesai, hal ini akan menyebabkan komputer menjadi hang.

7
2.2. PERTANYAAN

1. Buatlah program mencetak huruf Z-A dengan warna layar putih dan warna karakter
merah!
2. Buatlah program mencetak nama Anda dengan warna apa saja.

2.3. LISTING PROGRAM

1. Menampilkan huruf “Z sampai A” dengan warna tulisan merah dan background putih

PROGRAM :

OUTPUT :

8
2. MEMBUAT PROGRAM UNTUK MENCETAK NAMA SENDIRI DAN DIBERI
WARNA SESUAI SELERA

PROGRAM :

OUTPUT :

9
2.4. ANALISA PROGRAM

1.

.MODEL SMALL
karena data dan code yang digunakan oleh program kurang dari ukuran 1 segment
atau 64 KB.

.CODE
Tanda directive ini digunakan untuk memberitahukan kepada assembler bahwa kita
akan mulai menggunakan Code Segment-nya disini. Code segment ini digunakan
untuk menyimpan program yang nantinya akan dijalankan.

.ORG 100h
Pada program COM perintah ini akan selalu digunakan. Perintah ini digunakan
untuk memberitahukan assembler supaya program pada saat dijalankan(diload ke
memory) ditaruh mulai pada offset ke 100h(256) byte. Dapat dikatakan juga bahwa
kita menyediakan 100h byte kosong pada saat program dijalankan. 100h byte
kosong ini nantinya akan ditempati oleh PSP(Program Segment Prefix) dari
program tersebut. PSP ini digunakan oleh DOS untuk mengontrol jalannya
program tersebut.

Memulai proses :
MOV AH,09h
;Nilai servis untuk mencetak karakter.

10
MOV BH,00h
;Penomoran Halaman layar.

MOV BL,0FCH
; Warna atau atribut dari karakter.

MOV CX,1Ah
; Banyaknya karakter yang ingin dicetak.

INT 10h
; Laksanakan !!!

MOV AH,02
;Merupakan nilai servis untuk mencetak karakter, atau dengan kata lain mengisi
register AH dengan data 02.

Mov DL,’z’
;Karakter ASCII yang akan dicetak.

ULANG: merupakan label semacam lokasi dimana alamat yang akan diulang
dituju.
INT 21H

11
Merupakan perintah untuk mencetak karakter pada register DL.
DEC DL
Merupakan perintah untuk melakukan increment, dimana nilai pada register DL
akan naik satu per satu. Misalnya huruf Z, setelah itu naik satu yaitu huruf Y,
kemudian X, dan seterusnya.

LOOP ULANG merupakan perintah untuk mengulangi mencetak huruf yang di


increment.
INT 20h
; Selesai ! kembali ke DOS.

END Proses
; kode program telah selesai.

2.

.MODEL SMALL
karena data dan code yang digunakan oleh program kurang dari ukuran 1 segment
atau 64 KB.

.CODE
Tanda directive ini digunakan untuk memberitahukan kepada assembler bahwa kita
akan mulai menggunakan Code Segment-nya disini. Code segment ini digunakan
untuk menyimpan program yang nantinya akan dijalankan.

.ORG 100h
Pada program COM perintah ini akan selalu digunakan. Perintah ini digunakan
untuk memberitahukan assembler supaya program pada saat dijalankan(diload ke

12
memory) ditaruh mulai pada offset ke 100h(256) byte. Dapat dikatakan juga bahwa
kita menyediakan 100h byte kosong pada saat program dijalankan. 100h byte
kosong ini nantinya akan ditempati oleh PSP(Program Segment Prefix) dari
program tersebut. PSP ini digunakan oleh DOS untuk mengontrol jalannya
program tersebut.

Data : JMP Proses

;melompat ke Proses

Kal0 DB ‘AYU PUTRI SAKINAH’

; cetak string dengan isi ‘AYU PUTRI SAKINAH’

MOV AH,09h
;Nilai servis untuk mencetak karakter.

MOV DX,OFFSET KAL0


;Mengambil alamat offset.

MOV CX,11h
; Banyaknya karakter yang ingin dicetak.

MOV BH,00h
; Nomor Halaman layar.

13
MOV BL,10011111
; Warna atau atribut dari karakter.

INT 10h
; Laksanakan !!!

INT 21H
;Merupakan perintah untuk mencetak karakter pada register DL.

INT 20h
; Selesai ! kembali ke DOS.

END Proses
; kode program telah selesai.

14
BAB III
KESIMPULAN

Dalam pembuatan program kali ini kita dapat mengetahui lebih lanjut macam-macam
interrupt dan registernya. Kita dapat mengetahui apa saja yang dapat digunakan untuk
membuat suatu abjad berurut dengan menggunakan proses perulangan dan mencetak nama
sendiri dengan memvariasi warna dari nama itu.Kita juga dapat mengetahui, memahami, dan
mempraktikkan bahasa assembly agar menghasilkan tulisan berulang-ulang dengan karakter
yang sama maupun perulangan bertingkat. Dapat membuat program untuk menampilkan
huruf menggunakan fungsi perulangan (looping). Selain itu dapat mencetak huruf ”Z”
sampai huruf ”A”, dan rangkaian kata nama diri sendiri, misal: ”AYU PUTRI SAKINAH”.
Telah mengenal dan memahami fungsi dari interrupt dengan masing-masing service yang
berbeda, khususnya pada interrupt 21h dengan service 02h sebagai intruksi untuk mencetak
satu buah karakter pada layar; interrupt 10h dengan service 09h sebagai intruksi yang
berfungsi untuk mencetak karakter dan atribut pada posisi kursor.Dan juga mengenal dan
memahami perbedaan-perbedaan register masukan dan keluaran untuk setiap interrupt dan
service yang dipakai.

15
DAFTAR PUSTAKA

http://deniariss.blogspot.co.id/2013/03/program-dalam-bahasa.html

https://heymiqdude.blogspot.co.id/2016/07/tutorial-assembly-4-membuat-program.html

https://ardiyanto88.wordpress.com/2013/10/25/perintah-dasar-bahasa-assembly-
menggunakan-emulator-8086/

16

Anda mungkin juga menyukai