Anda di halaman 1dari 19

LAPORAN PRAKTIKUM 6

“PROSEDUR DAN MAKRO”

DISUSUN
OLEH

NAMA : Akmal Sutansyah

KELAS : TI - 1B

NIM : 2021573010002

JURUSAN : Teknologi Informasi dan Komputer

PRODI : Teknik Informatika


DOSEN PEMBIMBING : Azhar, S. T., M.T

KEMENTRIAN RISET,TEKNOLOGI DAN PENDIDIKAN TINGGI

POLITEKNIK NEGERI LHOKSEUMAWE TAHUN

AJARAN 2022-2023
LEMBARAN PENGESAHAN

No. Praktikum : 06/PBA/TI 1B/2021

Nama Praktikum : PRAKTIKUM BAHASA ASSEMBLY

Judul Pratikum : PROSEDUR DAN MAKRO

Tanggal Pratikum : 27 MEI 2022

Tanggal Penyerahan Laporan : 30 JUNI 2022

Nama Praktika : Akmal Sutansyah

NIM/Kelas : 2021573010002 / TI 1.B


Nilai :
Keterangan :

MENGETAHUI,
DOSEN PMBIMBING MAHASISWA

Azhar, S. T., M.T AKMAL


SUTANSYAH
NIP .196408301990031005 NIM.
2021573010002
DAFTAR ISI

LEMBAR PENGESAHAN...........................................................................................................................i
DAFTAR ISI.............................................................................................................................................ii
DAFTAR GAMBAR.................................................................................................................................iii
PRAKTIKUM IV.......................................................................................................................................4
1.1 Tujuan Praktikum...................................................................................................................4
1.2 Dasar Teori.............................................................................................................................4
1.3 Percobaan..............................................................................................................................6
1.3.1 Prosedur sederhana...........................................................................................................6
1.3.2 Prosedur dengan POP dan PUSH....................................................................................8
1.3.3 Macro sederhana.........................................................................................................10
1.3.4 Macro dengan label.....................................................................................................12
1.3.5 Pustaka Makro.............................................................................................................14
KESIMPULAN.......................................................................................................................................16
DAFTAR GAMBAR
Gambar 1 Hasil output procedure sederhana.......................................................................................6
Gambar 2 Hasil output dari Prosedur dengan POP dan PUSH...............................................................9
Gambar 3 Hasil output dari macro sederhana.....................................................................................10
Gambar 4 Hasil output dari mcaro dengan label.................................................................................13
Gambar 5 Hasil output pustaka macro................................................................................................15
PRAKTIKUM IV
PROSEDUR DAN MAKRO

1.1 Tujuan Praktikum

 Mahasiswa mampu melakukan pemrograman assembly menggunakan Turbo


Assembler.
 Mahasiswa memahami dan mengerti tentang prosedur dan makro serta
penggunaannya dalam bahasa mesin.

1.2 Dasar Teori

Prosedur merupakan suatu bentuk pemrograman terstruktur yang umum


dijumpai dalam pemrograman bahasa level tinggi. Bahasa mesin juga memiliki suatu
bentuk prosedur yang mana masih dalam bentuk yang sederhana. Meskipun demikian,
prosedur dalam bahasa mesin sudah memiliki fungsi dan kegunaan yang serupa dengan
prosedur pada bahasa level tinggi. Bentuk prosedur dalam bahasa mesin sebagai
berikut :

NamaP PROC NEAR/FAR


Isi program
RET
NamaP ENDP

NamaP merupakan nama dari prosedurnya. Nama dari sebuah prosedurnya


sebaiknya mewakili apa yang dilaksanakan oleh prosedur tersebut. PROC merupakan
penanda bahwa akan dibuat sebuah prosedur. NEAR atau FAR merupakan indikasi
apakah prosedur ini boleh dipanggil oleh program yang masih berada dalam satu
segmen saja atau boleh berbeda segmen. Setelah prosedur dilaksanakan maka program
harus kembali ke program utama yaitu dengan menggunakan RET. Untuk mengakhiri
sebuah deklarasi prosedur maka dipergunakan ENDP.
Untuk memanggil sebuah prosedur maka dipergunakan sintak sebagai berikut :

CALL NamaProsedur

Macro merupakan bentuk lain dari pemrograman terstruktur pada bahasa mesin. Macro
memiliki bentuk sebaga berikut :

NamaM MACRO P1,


P2, ... Isi
macro
ENDM

NamaM merupakan nama dari macro yang akan dibuat. MACRO merupakan
key word yang menandakan bahwa kita akan membuat sebuah macro. P1, P2
merupakan parameterparameter yang bisa dimasukkan ke dalam sebuah macro.
Parameter ini bersifat opsional. Macro merupakan sebuah cara untuk menyingkat
penulisan program dengan parameter-parameter yang bisa secara bebas dimasukkan.
Jadi macro dapat dikatakan sebagai template penulisan program bahasa mesin. Oleh
karena itu penggunaan macro yang berulang-ulang akan semakin memperbesar ukuran
file yang akan dihasilkan.
Karena macro merupakan sebuah template penulisan bahasa mesin, maka dapat
dipergunakan label sebagaimana layaknya program bahasa mesin biasa. Namun karena
sifat label yang hanya boleh dipergunakan satu kali saja, maka harus dipergunakan key
word LOCAL untuk membedakan satu label dengan yang lain. Seperti layaknya sebuah
header file, maka macro juga dapat dibuat dalam sebuah file terpisah untuk selanjutnya
diikutkan dalam program utamanya. Untuk melakukannya, maka dipergunakan sintak :
INCLUDE NamaFile
Prosedur dan macro memiliki karakteristik masing-masing sehingga harus
dibedakan kapan harus menggunakan prosedur dan kapan harus menggunakan macro
dalam suatu program bahasa mesin agar efisiensi programnya tetap terjaga.

1.3 Percobaan

1.3.1 Prosedur sederhana

 Program Assembly
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; PROGRAM : proc1.ASM ;
; FUNGSI : MENCETAK KARATER ;
; DENGAN PROCEDURE ;
; ;
;===============================;
.Model Small
.Code
ORG 100h
Proses :
CALL Cetak_Kar ; Panggil
Cetak_Kar INT 20h

Cetak_Kar Proc Near


MOV AH,02h
MOV DL,'S'
INT 21h ; Cetak karakter
RET ; Kembali kepada si pemanggil
Cetak_Kar EndP ; END Procedures

End Proses

 Hasil output

Gambar 1 Hasil output procedure sederhana


Analisa :
Di program yang telah di tulis terdapat perintah CALL yang berfungsi untuk
memanggil dan nama dari procedure yang telah dibuat adalah Cetak_kar. Near
adalah procedure yang digunakan jika procedure tersebut dipanggil oleh program
yang lain, seperti program COM. Lalu nilai servis 02h akan menyimpan karakter
yang hendak di cetak dalam program ini adalah “s” kedalam register DL, dan INT
21h akan mencetak karakter tersebut. RET adalah perintah yang berfungsi untuk
mengontrol program untuk return setelah hasil program di eksekusi. Lalu Endp
adalah akhir dari deklarasi procedure dari cetak_kar.
1.3.2 Prosedur dengan POP dan PUSH

 Program Assembly
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; PROGRAM : PROC2.ASM ;
; FUNGSI : MENCETAK KARATER ;
; DENGAN PROCEDURE ;
;;
;===============================;
.Model Small
.Code
ORG 100h
TData : JMP Proses
Kar db ?
Klm db 'BATMAN SI MANUSIA KELELAWAR ' ; 28 Karakter

Proses :
MOV CX,28 ; Banyaknya pengulangan
XOR BX,BX ; Addressing Mode

Ulang :
MOV DL,Klm[BX]
MOV Kar,DL
CALL Cetak_Kar ; Panggil Cetak_Kar
INC BX
LOOP Ulang
INT 20h

Cetak_Kar Proc Near


PUSH AX ; Simpan semua register
PUSH DX ; Yang digunakan
MOV AH,02h
MOV DL,Kar
INT 21h ; Cetak karakter
POP DX ; Kembalikan semua register
POP AX ; Yang disimpan
RET ; Kembali kepada si pemanggil
Cetak_Kar EndP ; END Procedures
End Tdata

 Hasil Output
Gambar 2 Hasil output dari Prosedur dengan POP dan PUSH

Analisa :
Servis 02h dan INT 21h akan mencetak karakter yang telah di set, pada dasarnya
program ini hampir sama dengan program procedure yang pertama hanya saja
dibagian push pop dan pengulangan karakter yang dicetak berbeda. Register CX
akan berfungsi untuk pengulangan karena nilai CX disini adalah 28 maka karakter
akan dicetak sebanyak 28 kali. Terdapat adressing mode dibagian klm yang akan
disimpan kedalam register BX, lalu MOV DL akan berfungsi untuk mencopy ke
register DL baru kemudian isi dari register DL akan dicopy oleh kar. CALL akan
berfungsi untuk memanggil procedure, RET berfungsi untuk kembali keprogram
utama atau mereturn ke program utama. Outputnya adalah “Batman Si Manusia
Kelelawar” yang semua karakternya berjumlah 28 termasuk juga spasi. Pada saat 28
karakter ini dicetak, karakter karakter tersebut dicetak satu persatu dengan
perulangan lalu fungsi push akan menyimpan kedalam register. Selanjutnya fungsi
pop akan mengembalikan hasil yang disimpan di register dan INT 21h dan servis
02h akan mencetaknya. Hasil output tidak akan berubah saat penghapusan push
dan pop. Lalu INT 20h akan mengakhiri program dan kembali ke DOS.
1.3.3 Macro sederhana

 Program Assembly
Cetak_Kar Macro Kar
MOV CX,3
MOV AH,02
MOV DL,Kar
Ulang :
INT 21h ; Cetak Karakter
LOOP Ulang
EndM ; End Macro
;-----------------------------------;
; Program : MAC1.ASM ;
; Fungsi : Menggunakan Macro ;
; Untuk mencetak ;
; huruf 'SSS' ;
;-----------------------------------;
.Model Small
.Code
ORG 100h
Proses:
Cetak_Kar 'S' ; Cetak Huruf S
INT 20h
End Proses

 Hasil Output
Gambar 3 Hasil output dari macro sederhana
Analisa :
.Model Small, .Code, ORG 100h adalah library di bahasa assembly, di program ini
INT 21h dan servis karakter 02h akan disimpan pada register AH yang akan
berfungsi untuk mencetak karakter. Karakter yang akan dicetak adalah karakter S.
register CX akan berfungsi sebagai counter penghitung banyaknya perulangan yang
akan dilakukan dalam program ini akan dilakukan 3 kali perulangan. Karena makro
dapat langsung dipanggil maka pendefinisian atau pemanggilan CALL tidak
diperlukan lagi. Dengan adanya perulangan maka karakter “S” akan dicetak
sebanyak 3 kali karena isi dari register CX adalah 3. EndM akan berfungsi untuk
menghentikan program makro. Baru kemudian INT 20h akan menghentikan
program secara keseluruhan dan kembali ke DOS.
1.3.4 Macro dengan label

 Program Assembly

Cetak_Kar Macro Kar


Local Ulang ; Label 'Ulang' jadikan Local
MOV CX,3
MOV AH,02
MOV DL,Kar
Ulang:
INT 21h ; Cetak Karakter
LOOP Ulang
EndM ; End Macro
;-----------------------------------;
; Program : MAC2.ASM ;
; Fungsi : Menggunakan Macro ;
; Untuk mencetak ;
; huruf 'PPPCCC' ;
;-----------------------------------;
.Model Small
.Code
ORG 100h
Proses:
Cetak_Kar 'P' ; Cetak Huruf P
Cetak_Kar 'C' ; Cetak Huruf C
INT 20h
End Proses

 Hasil Output
Gambar 4 Hasil output dari mcaro dengan label

Analisa :
Interupt 21h dan servis 02h akan berfungsi untuk mencetak karakter. Di program
mencetak karakter dengan label ini akan mencetak karakter “P” dan “C”. Register
CX akan berfungsi sebagai counter atau banyaknya perulangan yang akan dilakukan
dalam program ini register CX berisi nilai 3 maka banyaknya perulangan yang akan
dilakukan adalah 3 kali yang menjadikan outputnya adalah “PPPCCC”. Karena
pemanggilan label pada makro hanya dapat dilakukan sebanyak satu kali maka
nama label akan diganti dari nama “Ulang” menjadi “LOCAL” untuk mencegah
terjadinya error. EndM akan berfungsi untuk menghentikan program makro. Baru
kemudian INT 20h akan menghentikan program secara keseluruhan dan kembali ke
DOS.
1.3.5 Pustaka Makro

 Program Assembly 1

;/========================\;
; Program : macku.MCR ;
;\========================/;
Cetak_Kar MACRO Kar ; Macro untuk
mencetak
MOV AH,02 ; Karakter
MOV DL,Kar
INT 21h
ENDM
Cetak_Klm MACRO Klm ; Macro untuk
mencetak
LEA DX,Klm ; kalimat
MOV AH,09
INT 21h
ENDM

 Program Assembly 2
;/====================================\;
; Program : mac3.ASM ;
; Fungsi : Contoh menggunakan ;
; pustaka macro ;
;\====================================/;
INCLUDE macku.mcr ; Gunakan file macku.mcr
.Model Small
.Code
ORG 100h
TData :
JMP Proses
Kal0 db 'PENGGUNAAN PUSTAKA Macro $'
Proses:
Cetak_Klm Kal0 ;Cetak Kalimat Kal0
Cetak_Kar 'Y' ; Cetak Huruf 'Y'
INT 20h
End TData
 Hasil Output

Gambar 5 Hasil output pustaka macro


Analisa :
Pada program pustaka makro diperlukan file berekstensi .mcr terlebih dahulu baru
kemudian dibuat file .asm nya yang akan digunakan untuk menjalankan pustaka
makro yang telah dibuat. Pada program ini tag name dari macro untuk cetak
karakter pada program putaka makro adalah Cetak_Kar Macro Kar. Dan tag name
macro untuk cetak kalimat di program pustaka macro adalah Cetak_Klm Macro
Klm. Endm akan berfungsi untuk menghentikan macro program pustaka macro
yang ber ekstensi file .mcr. jika pustaka macro telah selesai dibuat baru dibuat
file .asm untuk menjalankan program pustaka macro yang sudah dibuat. Perintah
INCLUDE akan berfungsi untuk memanggil pustaka macro. Di dalam label Tdata
terdapat variabel Ka10 yang digunakan untuk menyimpan kalimat “PENGGUNAAN
PUSTAKA Macro” dan JMP Proses akan berfungsi untuk lompat ke label proses. Di
dalam label proses terdapat dua perintah yaitu Cetak_Klm, yang dimana kalimat
yang akan dicetak berada pada variabel Ka10, dan Cetak_Kar, yang berisi karakter
“Y”. INT 20h akan berfungsi untuk menghentikan program pustaka macro dan
kembali ke DOS. END Tdata akan berfungsi untuk memastikan yang bahwa tidak
ada lagi perulangan lompat ke proses dan mengakhiri program dengan dibantu INT
20h yang berfungsi sebagai interupsinya.

KESIMPULAN

 Bahasa mesin juga memiliki suatu bentuk prosedur yang mana masih dalam
bentuk yang sederhana. Meskipun demikian, prosedur dalam bahasa mesin
sudah memiliki fungsi dan kegunaan yang serupa dengan prosedur pada
bahasa level tinggi.

 Dilihat dari penggunaan dan fungsi dari prosedur dan makro maka dapat
dipastikan bahwa prosedur dan makro sangat perlu untuk bisa di kuasai.

 Jika prosedur dalam proses maka diperlukan perintah CALL untuk


memanggilnya.

Anda mungkin juga menyukai