Anda di halaman 1dari 20

TUGAS ARSITEKTUR DAN ORGANISASI

KOMPUTER
(BAHASA ASSEMBLY)

Oleh
Husain Ahmad Sulaiman
Nim
19081002

PROGRAM STUDI D IV TEKNIK ELEKTROMEDIK


UNVERSITAS BALI INTERNASIONAL
DENPASAR
2019
BAB I

PENDAHULUAN

1. Latar belakang

Bahasa assembly atau Rakitan diprakarsasi oleh IBM pada tahun 1956 –

1963. Bahasa assembly termasuk bahasa tingkat rendah. Pada tahun 1957, sebuah

tim yang dipimpin John W. Backus berhasil mengembangkan sebuah bahasa baru

yang lebih mengarah pada keperluan untuk menganalisa persoalan numeric.

Extensi yang dihasilkan dari bahasa assembly adalah file dengan extensi Com dan

Exe. Secara umum kedua file tersebut memiliki perbedaan antara program yang

berektensi Com dam Exe, yang merupakan ukuran luas daerah yang menyebabkan

kelainan program dalam assembler.

Untuk file yang diakhiri dengan exstension Com, berarti file itu paling

banyak hanya akan memakan luas 64 kilobyte yang disebut 1 segment, sedangkan

untuk file berekstensi EXE tidak dibatasi berapa segment yang dipakai. Dapat 1

segment, 2 segment, 3 segment atau lebih dari 3 segment. Oleh karna COM hanya

memiliki 1 segment. Bahasa assembly adalah bahasa pemograman mendasar yang

sangat dekat dengan mesin. Konsep perangkat keras dan perangkat lunak dapat

dijelaskan secara konseptual dengan memahami bahasa assembly. Disini akan

dijelaskan bagaimana perangkat keras computer dan system operasi bekerja sama

dan bagaimana program aplikasi berkomunikasi dengan system operasi. Untuk

memahami keseluruhan computer dan system informasinya, seseorang perlu

memahami perangkat lunak pada berbagai level. Level pertama adalah program
aplikasi. Dalam level ini program berinteraksi dengan DOS. Pada level bahasa

tingkat tinggi, perintah / pernyataan yang andal diuraikan ke dalam instruksi-

instruksi mesin. Pada level yang lebih rendah (lebih dekat dengan mesin),

seseorang akan berinteraksi pada instruksi-instruksi yang dikenali oleh CPU,

sebagaimana program berkomunikasi dengan DOS.

2. RUMUSAN MASALAH

Adapun rumusan masalah dari pembahasan yang akan kami bahas antara
lain:

 Apa itu Bahasa Assembly?


 Contoh Bahasa Assembly
 Kelebihan dan kekurangan Bahasa Assembly

3. Tujuan

Tujuan dari penulisan makalah yaitu untuk menambah pengetahuan dan

mengetahui tentang apa itu Bahasa Assembly beserta contohnya.


BAB II

PEMBAHASAN

1. Pengertian Bahasa Assembely

Bahasa pemrograman Assembly adalah bahasa pemrograman tingkat


rendah yang digunakan dalam pemrograman komputer, mikroposesor, pengendali
mikro, dan perangkat lainnya yang dapat diprogram. Bahasa rakitan
pengimplementasikan interprestasi atas kode mesin dalam bentuk simbol-simbol
yang secara relative lebih dapat dipahami oleh manusia. Berbeda halnya dengan
bahasa-bahasa tingkat tinggi yang berlaku umum, bahasa rakitan biasanya
mendukung secara spesifik untuk suatu apapun beberapa jenis arsitektur computer
tertentu. Dengan demikian portabilitas bahasa rakitan tidak dapat menandingi
bahasa-bahasa lainnya yang yang merupakan bahasa pemrograman tingkat tinggi.
Namun demikian, 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
utilitas yang disebut sebagai perakit (bahasa Inggris : assembler) yang digunakan
untuk menerjemahkan kode dalam bahasa rakitan tersebut kedalam kode mesin
untuk perangkat keras tertentu. Sebuah perintah dalam bahasa rakitan biasanya
diterjemahkan menjadi instruksi. Bahasa Assembly adalah bahasa yang
memudahkan pemahaman bagian computer yang paling rendah, mendekati mesin.
Bahasa Assembly sebaiknya dipelajari secara kontektual sehinga interaksi
perangkat keras dan perangkat lunak computer mungkin lebih mudah dipahami.
Bahasa Assembly adalah bahasa pemrograman dengan korespondensi
satu-satu antara perintah-perintah / pernyataan dan bahasa mesin computer.
Bahasa assembly tidak satu jenis sebagaimana CPU computer yang bermacam-
macam. Setiap bahasa assembly secara langsung dipengaruhi oleh set intruksi
mesin computer dan arsitektur perangkat keras. Misalnya, bahasa assembly IBM-
PC adalah bahasa assembly yang mengacu pada instruksi-instruksi yang dikenali
oleh keluarga mikroprosesor intel 8086-80486.

Apa itu assembler?


Assembler adalah program yang mengonversi kode program sumber ke
dalam bahasa mesin. Terdapat dua assembler yang dikenali baik untuk IBM-PC,
yaitu MASM (Microsoft assembler) dan TASM (Turbo assembler).
Bahasa assembly disebut bahasa level-bawah karena dalam struktur dan
fungsi dekat dengan bahasa mesin. Sebaliknya, bahasa tingkat tinggi seperti
Pascal, Basic, Fortan, dan Cobol mempunyai perintah-perintah yang andal yang
diterjemahkan ke dalam berbagai instruksi mesin oleh compiler.

1) Aplikasi Bahasa Assembly

Biasanya kita membuat subrutin dalam bahasa assembly dan


memanggilnya dari program bahasa tingkat tinggi. Keuntungan dapat diperoleh
karena katanya bahasa tinggi, dengan menggunakan bahasa tingkat rendah dalam
membuat aplikasi. Subrutin bahasa assembly menangani operasi-operasi yang
tidak tersedia dalam bahasa tingkat tinggi. Misalnya kita menulis program aplikasi
bisnis dalam Cobol untuk IBM-PC. Kita memerlukan aplikasi untuk mengecek
ruang bebas disk, membuat subdirektorionie, menulis proteksi file, dan membuat
window yang overlap-semuanya dalam satu program.
Missal komfilator Cobol tidak dapat melakukan semuanya, kita dapat
membuat subrutin bahasa assembly untuk menangani tugas-tugas tersebut.

2) Bahasa Mesin

Sebelum lebih jauh secara rinci membahas assembly, mari kita lihat dalam
suatu persfektif. Computer kenyatannya tidak mengerti bahasa assembly. Dia
hanya mengikuti bahasa mesin. Bahasa mesin adalah bahasa yang dibangun oleh
sejumlah angka yang dapat diinterpretasikan oleh CPU computer. CPU biasanya
mempunyai program kecil yang ditambahkan kedalam chip, disebut microcode.
Penerjemah microcode mengubah langsung intruksi-intruksi mesin ke dalam
sinyal perangkat keras.
Bahasa mesin memungkinkan untuk melaksanakan tugas-tugas umum oleh
CPU, seperti pemindahan bilangan atau perhitungan aritmatik. Berikut contoh
instruksi bahasa mesin yang memindah angka 5 ke dalam register AL.
1011000000000101
Deretan angka diatas ditulis dalam biner, system penomoran yang dibagun
hanya oleh angka 1 dan 0. Delapan bit pertama adalah kode operaso (opcode)
yang menunjukkan sebagai intruksi yang memindahkan angka-delapan bit ke
register AL. Delapan bit kedua adalah operand. Instruksi secara keseluruhan
memindahkan angka 5 kedalam register AL. Register adalah memori kecepatan
tinggi pada CPU. Register diidentifikasikan oleh nama dua huruf, seperti AH,AL,
atau AX.
Kumpulan instruksi (instruction set) CPU adalah sekumpulan instruksi
mesin yang dapat dieksekusi CPU. Untuk keluarga CPU intel, set instruksi adalah
down-ward-compatible, artinya bahwa instruksi yang bekerja pada processor level
yang lebih rendah akan bekerja juga pada prosesor yang lebih tinggi. Contohnya :
instruksi MOV bekerja pada 8088 dan oleh karna itu harus bekerja pula pada
80286. Akan tetapi, terdapat instruksi yang lebih maju dalam 80286 yang tidak
dapat bekerja pada 8088.
 Low Level Language (assembly) : bahasa pemrograman yang
menggunakan register sebagai penyimpan data. Contoh : pemograman
untuk menghitung 5+2 :
MOV AL,5
ADD AL,2
AL adalah register
Format instruksi assembly

1. Baris pertama adalah instruksi mesin 2 alamat seperti INTEL, artinya


Pindahkan/isikan (MOV) ke dalam register AL bilangan 5 heksadesimal.
2. baris kedua instruksi mesin 1 alamat seperti MOTOROLA, artinya
Pindahkan/isikan kedalam Register A bilangan 5 heksadesimal.

3) Elemen Bahasa Assembly

Dalam pemrograman bahasa assembly lebih ditekankan pada system


operasi Microsoft Intel yang seiring dengan perkembangan mikroprosesor
8088/8086. Perkembangan bahasa assembly tergantung pada linker yang
mengubah file *.obj menjadi *.exe atau *.com. Bahasa assembly dikategorikan
sebagai bahasa tingkat rendah. Hal ini untuk menggambarkan spesifikasi sebagai
bahasa yang berorientasi pada machine dependet. Untuk membandingkan bahasa
mesin dan bahasa assembly menurut karakteristik dibagi 2 bagian :
 Mnemonic Operation Code
 Simbolic Operand specification

4) Skema Assembly

Proses penerjemahan secara sederhana dapat dikelompokkan dalam 2


fase, yaitu :
 Fase analisa

a. Memisahkan label, mnemonic operation code dan operand field yang


ada.
b. Memasukkan symbol yang ditemukan pada label field dan alamat
yang dituju machine word ke dalam symbol table.
c. Melakukan validasi mnemoric operation code dengan melihat pada
mnemonic table.
d. Menentukan alamat yang dibutuhkan oleh statement berdasarkan
pada mnemonic operation code dan operand field pada statement.
 Fase analisis dapat dikelompokan menjadi beberapa tahap, yaitu :

a. Lexical analisys adalah menjalankan mikro level examination dari


teks masukan untuk mengenal lexial unit yang ada didalamnya dan
menentukan category syntax.
b. Syntax analisys proses ini dilakukan terhadap descriptor dari lexical
analisys untuk menentukan struktur syntax dari statement masukan.
Proses tersebut dikenal dengan PARSING, output dari parsing
adalah representasi dari struktur syntax suatu statement.
c. Semantic analisys proses ini dapat di klasifikasikan kedalam proses
declarative statemet dan proses eksekusi.

 Fase syntesis

a. Menghasilkan machine operation code yang berkorespondensi


dengan mnemonic operation code yang telah dicari pada mnemonic
table.
b. Menghasilkan alamat operand dari symbol table.
c. Melakukan sytensis instruksi machine.
Pada fase ini dilakukan pemillihan machine operation code yang sesuai
dengan mnemonic load dan menempatkan pada machine instruction opocode
field. Evaluasi korespondensi pengalamtan dilakukan untuk operand expression
‘ Result + 4.

5) Proses Assembly

Unit dalam sources progam digunakan untuk menterjemah semua bagian


program. Ketika fase analisys statement program pertama kali dilakukan, maka
proses LC akan dikerjakan dan symbol yang didefinisikan dalam program
dimasukkan ke symbol table. Untuk mengurangi pengulangan, maka hasil analisis
sources statement yang disebut intermediate code. Selain membentuk intermediate
code, suatu proses assembler juga membangun struktur database yang digunakan
oleh subsequent pass.
6) Bagian – Bagian Dari Program Assembler

Berikut ini adalah bagian – bagian dari program assembler yaitu :


a. Label, merupakan suatu symbol yang didefinisikan sendiri oleh
pembuat program untuk menandai lokasi memori pada area
program. Simbol dan label adalah dua hal yang berbeda. Symbol
tidak menggunakan titik dua, sedangkan label harus diakhiri
dengan titik dua.

Contoh :
PAR EQU 500 ; “PAR” menunjukan suatu symbol
; dari nilai 500
MULAI :
MOV A, #0FFh ; pada label; “Mulai” nilai 0FFh
; dipindahkan ke Akumulator

Dalam satu baris hanya ada satu label, pada umumnya Assembler
membatasi jumlah karakter yang bisa digunakan hingga 31
karakter.
b. Mnemonik, instruksi atau pengarah Assembler dimasukan dalam
“mnemonic field” yang mengikuti “ label mnemonic”. Mnemonic
instruksi misalnya ADD, MOV, INC dll. Sedangkan pengarah
Assembler misalnya ORG, EQU, DB dll.
c. Operand, ditulis setelah mnemonic, bisa berupa alamat atau data
yang digunakan instruksi yang bersangkutan.
Contoh :
MOV A, #20h ; A dan #20h adalah operand
LAGI:
JNB LAGI ; LAGI adalah operand
d. Komentar, harus diawali dengan titik koma. Sub rutin dari bagian
besar program yang menjelaskan fungsi sub rutin atau bagian besar
program tersebut.
e. End, petunjuk END merupakan kode perintah terakhir yang men-
unjukkan batas akhir dari proses Assembly.
Instruksi yang sering digunakan dalam pembuatan program yaitu :
1. Instruksi Aritmatik
Instruksi ini selalu melibatkan akumulator dan ada juga
beberapa instruksi yang melibatkan register lain.
Berikut ini contoh instruksi – instruksi aritmatika yaitu :
Table instruksi – instruksi Aritmatik
Instruksi Keterangan Contoh
ADD A,Rn Menambah isi register Rn dengan isi akumulator ADD A,R1
lalu disimpan di akumulator
ADD A, direct Menambah isi direct dengan akumulator, ADD A,30H
hasilnya disimpan di akumulator
ADD A, #data Menambahkan immediate data ke akumulator ADD A, #20H
ADD A, @Rn Menambahkan isi dari alamat yang ditunjuk Rn ADD A, @R1
dengan akumulator
ADDC A, #data Menambahkan immediate data ke akumulator ADDC A, #20H
dengan carry
SUBB A, Rn Kurangkan isi register Rn dari akumulator SUBB A, R1
INC A Tambah isi akumulator dengan 1 INC A
DEC A Kurangkan isi akumulator dengan 1 DEC A
MUL AB Kalikan isi A dengan isi B, low –byte disimpan MUL AB
pada akumulator, dan high byte pada B
DIV AB Bagi isi A dengan isi B. akumulator menerima DIV AB
hasil integer pembagian dan B menerima integer
sisanya

2. Instruksi Logika
Instruksi logika ini dipakai untuk melakukan operasi logika,
yaitu operasi AND [ instruksi ANL ], operasi OR [ instruksi
ORL], operasi exclucive-OR [ instruksi XRL ], operasi Clear [
instruksi CLR ], instruksi komplemen [ instruksi CPL ], operasi
penggeseran kanan atau kiri [ instruksi RR, RRC, RL dan RLC ]
serta operasi penukaran data [ instruksi SWAP ]. Data yang
dipakai dalam operasi ini biasanya berupa data yang berada
dalam akumulator atau data yang berada dalam memori data.
3. Instruksi Pemindahan Data
Instruksi – instruksi pemindahan data adalah :
Table Instruksi – instruksi perpindahan data
Instruksi Keterangan Contoh
MOV A, Rn Memindahkan isi register Rn ke akumulator MOV A, R0
MOV A,direct Memindahkan isi direct byte ke akumulator MOV A, 30h
MOV A, #data Mengisi akumulator dengan nilai data MOV A,#20h
MOV A, @Rn Mengisi akumulator dengan isi dari alamat MOV A, @R0
yang ditunjuk oleh Rn

Mode – Mode Pengalamatan


1) Mode Pengalamatan Langsung
Dalam pengalamatan langsung nilai yang akan disimpan dalam suatu
memori diperoleh secara langsung dengan mengambil dari lokasi memori
yang lain.
Contoh :
MOV A,30H ; isi akumulator dengan bilangan 30 heksadesimal.
2) Mode Pengalamatan Tak Langsung
Dalam pengalaman tak langsung, instruksi menentukan suatu register
digunakan untuk menyimpan alamat operan
Contoh :
ADD A,R ; tambahkan isi RAM yang lokasinya ditunjukan oleh
register R1 ke akumulator.
DEC @R1 ; kurangi satu isi RAM yang alamatnya ditunjukan oleh
register R1.
3) Mode Pengalamatan Segera
Cara ini menggunakan konstanta.
Contoh :
MOV A,#20H ; isi akumulator dengan bilangan 20 heksadesimal
Data konstanta merupakan data yang menyatu dengan instruksi, contoh
instruksi diatas mempunyai arti bahwa data konstantanya, yaitu 20H, [
sebagai data konstanta harus diawali dengan ‘#’ dan tanda H untuk
menyatakan format bilangan heksadesimal ] disalin ke akumulator (A).
4) Mode Pengalamatan Data
Pengalamatan data terjadi pada sebuah perintah ketika nilai operasi
merupakan alamat data yang akan diisi atau yang akan dipindahkan.
Contoh :
MOV P1,A ; isi P1 dari nilai akumulator
5) Mode Pengalamatan Bit
Pengalamatan bit adalah penunjukkan menggunakan symbol titik (.) yang
menunjuk alamat lokasi bit, baik dalam RAM internal atau perangkat
keras.
Contoh :
SETB P1,7 ; set bit port 1.7 high [ pot 1.7 diberi nilai logika 1 ].

2. Contoh Bahasa Assembly :


 Berikut adalah contoh sederhana bahasa pemrograman Assembly
.MODEL SMALL

.CODE

ORG 100H

AWAL:

MOV CL,30H

JMP PROSES

KAL0 DB 'Ketikkan satu kalimat:$'

KAL1 DB 13,10,'Kalimat yang diinput adalah:$'

KAL2 DB 13,10,'Cetak dari belakang:$',13,10

KAL3 DB 13,10,'panjang string adalah:$'

KALX DB 13,10,'$'
KAL4 DB 13,10,'Jumlah Huruf Vokal:$'

KAL5 DB 13,10,'Jumlah Huruf Konsonan:$'

KATA DB 20,?,20 DUP (?)

VOKAL: INC CL

JMP PLUS

PROSES:

;============= CETAK STRING ================

MOV AH,09H

MOV DX,OFFSET KAL0

INT 21H

;============= INPUT STRING ================

MOV AH,0AH

LEA DX,KATA

INT 21H

;============= CETAK STRING ================

MOV AH,09H

MOV DX,OFFSET KAL1

INT 21H

;============ CETAK VARIABEL STRING DG MODEL COMPARASI ==========

MOV BX,OFFSET KATA+2

CETAK:

MOV DL,[BX]

CMP DL,0DH
JE BELAKANG

MOV AH,02H

INT 21H

CMP DL,'a'

JE VOKAL

CMP DL,'i'

JE VOKAL

CMP DL,'u'

JE VOKAL

CMP DL,'e'

JE VOKAL

CMP DL,'o'

JE VOKAL

CMP DL,'A'

JE VOKAL

CMP DL,'I'

JE VOKAL

CMP DL,'U'

JE VOKAL

CMP DL,'E'

E VOKAL

CMP DL,'O'

JE VOKAL

PLUS:INC BX

JMP CETAK
;============= CETAK KATA DARI BELAKANG ==================

BELAKANG:MOV AH,09H

MOV DX,OFFSET KAL2

INT 21H

MOV AH,09H

MOV DX,OFFSET KALX

INT 21H

CETAK1:

MOV DL,[BX]

CMP DL,KATA+1

JE VOKAL1

MOV AH,02H

INT 21H

DEC BX

JMP CETAK1

;============ CETAK JUMLAH VOKAL ================

VOKAL1:

MOV AH,09H

MOV DX,OFFSET KAL4

INT 21H

MOV DL,CL

;ADD DL,30H

MOV AH,02H

INT 21H
;============ CETAK JUMLAH KONSONAN ===============

KONSONAN:

MOV AH,09H

MOV DX,OFFSET KAL5

INT 21H

MOV BX,OFFSET KATA+1

MOV DL,[BX]

ADD DL,30H

SUB DL,CL

ADD DL,30H

MOV AH,02H

INT 21H

;============= CETAK PANJANG STRING ================

AKHIR:

MOV AH,09H

MOV DX,OFFSET KAL3

INT 21H

MOV BX,OFFSET KATA+1

MOV DL,[BX]

ADD DL,30H

MOV AH,02H

INT 21H

SELESAI:

INT 20H
END AWAL

 Berikut adalah list coding bahasa assembly untuk pembuatan password

org 100h jmp mulai exit: mulai :

mov dx,offset msg

mov ah,9

int 21h

mov ah,1

int 21h

mov bl,al

mov ah,1

int 21h

mov cl,al

mov ah,1

int 21h

mov dl,al

mov ah,1

int 21h

cmp bl,6ch

je sukses

jmp salah:

cmp cl,6fh

je sukses

jmp salah

cmp dl,76h

je sukses

jmp salah
cmp al,65h

je sukses

jmp salah

salah:

mov dx,offset msg5

mov ah,9

int 21h

mov dx,offset msg6

mov ah,9

int 21h

jmp exit

sukses:

mov dx,offset msg2

mov ah,9

int 21h

mov dx,offset msg3

mov ah,9

int 21h

mov dx,offset msg4

mov ah,9

int 21h

ret

msg db 0dh,0ah, " Silahkan masukkan password:",0dh,0ah,"$"

msg2 db 0dh,0ah, "========>>>>Keyword Success<<<<======== $"

msg3 db 0dh,0ah, "========>>>>Password Sukses<<<<======== $"

msg4 db 0dh,0ah, "===========>>>>Complete<<<<============ $"

msg5 db 0dh,0ah, "==============Password Salah============= $"

msg6 db 0dh,0ah, "==============Silahkan coba lagi============= $"


BAB III
PENUTUP

1. Kesimpulan
Jadi Bahasa Assembly adalah bahasa yang memudahkan pemahaman
bagian computer yang paling rendah, mendekati mesin. Bahasa assembly
sebaiknya dipelajari secara kontektual sehingga interaksi perangkat keras dan
perangkat lunak computer mungkin mudah dipahami.
Bahasa assembly adalah bahasa pemrograman dengan korespondensi satu-
satu antara perintah-perintah / pertanyaan dan bahasa mesin computer.
Assembler adalah program yang mengonversi kode program sumber ke
dalam bahasa mesin system bilangan ( number system ) adalah suatu cara untuk
mewakili besaran dari suatu item fisik. System bilangan terdiri dari bilangan
biner, bilangan decimal, bilangan octal dan heksadesimal.
. Kelebihan dan kekurangan Bahasa Assembly
Kelebihan :
a. Ketika di-compile lebih kecil ukuran
b. Lebih efisien/hemat memori
c. Lebih cepat dieksekusi
Kekurangan :
a. dalam melakukan suatu pekerjaan, baris program relatif lebih panjang
dibanding bahasa tingkat tinggi.
b. Relatif lebih sulit untuk dipahami terutama jika jumlah baris sudah
terlalu banyak
c. Lebih sulit dalam melakukan pekerjaan rumit, misalnya operasi
matematis
BAB IV
DAFTAR PUSTAKA

https://hafidhnurhidayatblog.wordpress.com/2016/01/08/bahasa-
pemrograman-assembly-rakitan/
https://oferiachacha.blogspot.com/2012/03/contoh-program-bahasa-
assembly.html?m=1
http://www.electricalslayer.com/2012/01/contoh-program-password-
dengan.html

Anda mungkin juga menyukai