MIKROPROSESOR
“PROGRAM PENGURANGAN PADA BAHASA PEMROGRAMAN
ASSEMBLY”
NAMA PRAKTIKAN :
I. Tujuan Praktikum
1. Mengirimkan data antara mikroprosesor itu sendiri dan dengan sistem I/O atau
memori.
Register Segment
Register DS ( Data Segment ), bagian memori 64K-byte yang berisi data yang
menjadi referensi untuk hampir semua instruksi dan sebagian besar mode addressing.
Register DS ini digunakan untuk menyimpan alamat segment dari letak data. Data
hampir selalu bergerak masuk atau keluar dari memori melalui segment data.
Directtives Assembler
Sebuah directive adalah command yang disisipkan pada kode sumber (source
code). Directives dapat menentukan: Variabel, Macro, Prosedur, Segmen Memori.
Directives bersifat tidak sensitif. Tulisan “.data”, “.DATA”, dan “.Data” dianggap
sama. Beberapa penjelasan lainnya: .MODEL SMALL : memilih ukuran model
memori. Pilihan model memori lainnya; Tiny (kombinasi kode dan data kurang dari
64K), Small (Kode ≤ 64K dan data ≤ 64K), Medium (Kode ≤ 64K dan berapapun
ukuran multiple kode segmen), Compact (Data ≤ 64K dan berapapun ukuran multiple
data segmen), Large (Kode > 64K dan Data > 64K multiple kode dan data segmen),
dan Huge. .STACK ; ukuran dari stack segment .DATA ; memulai data segment.
.CODE ; memulai kode segment
Beberapa instruksi yang menunjang program dengan loop:
INC (Increment) = untuk menambah waktu 1 suatu data, bisa datanya di register
maupun di memory.
MOV AL 4
INC AL ; AL = 5
RET ; perintah mengakhiri
CF(Carry Flag) tidak berubah
DEC (Decrement) = untuk mengurangi dengan 1 data
MOV AL 255
DEC AL ; AL = 254
RET
CF(Carry Flag) ; perintah mengakhiri
Compare = mengurangi tapi hasil tidak disimpan dimana mana
MOV AL,5
MOV BL,5
COMPARE AL,BL ; AL:BL =AL-BL = 5 – 5 = 0 = zero flag 1
SUB (Subtract) = mengurangi lalu hasil pengurangnnya disimpan
MOV AL, 5
SUB AL, 1 ; AL = 4
JA (Jump if Above) = untuk berkaitan dengan bilangan tidak bertanda. Syaratnya
apabila operand 1 lebih besar daripada operand dua, maka akan lompat ke loop 1.
(Above and Below) = JA, JB
BIL (Signed, Unsigned)
AL = 9A
BL = 52H AL- BL = 48
CMP AL,BL
JA LUP1 AL > BL, maka lompat
JG (Jump if Greater) = utnuk berkaitan dengan bilangan bertanda yaitu bilangan
komplemen 2. Syaratnya apabila operand 1 lebih kecil daripada operand 2 maka
tidak akan lompat ke loop 1. (Greater and Less) = JG, JL
BIL (Signed, Unsigned)
AL = 9A = negatif
AL- BL = 48
BL = 52H = positif
CMP AL,BL
JG LUP1 AL < BL, tidak lompat
JAE (Jump if Above or Equal) = bisa apakah lebih besar atau sama dengan
JCXZ = tergantung register CX, apabila CX 0 maka akan lompat
JE (Jump If Equal) = akan menguji operand 1 dan operand 2, apabila sama maka
akan lompat
JPO (Jump if Parity Odd) = berkaitan denganlogic 1 apakah ganjil atau genap
JS (Jump if Sign) = Jump jika sign logicnya bernilai 1
JZ (Jum if Zero Flag) = apabila Zero Flag bernilai 1 maka akan lompat
1. Software Emu8086
Lalu perintah nomor 2 yaitu “Buat diagram alir dan program untuk mengurangkan
9 PASANG data biner 16-bit yang berada pada BM1 dan BM2. Simpan hasil
pengurangan pada BM3.” merupakan program yang menggunakan perintah perulangan
atau loop dikarenakan banyaknya jumlah pasang data. Perintah loop ini digunakan untuk
mempermudah atau membuat penulisan program menjadi lebih simple tidak terlalu
panjang. Terjadi pengurangan secara berpasangan, data BM1 akan dipindahkan ke
register DX selanjutnya dikurangi dengan BM2 lalu disimpan di BM3, sedangkan nilai
borrow akan disimpan di register CL.
Pada perintah soal nomor 3 yaitu “Buat diagram alir dan program untuk
mengurangkan data biner 32-bit berikut: 9758A3C7H - 64E5AA7CH. Simpan hasil
pengurangan pada unit memori 32-bit.” , merupakan pengurangan 2 data hexadesimal
yang datanya merupakan biner 32-bit sehingga menggunakan DefineDword dan tidak
menggunakan perintah loop. Data ke-1 dipindahkan terlebih dahulu ke CX dan DX,
kemudian dikurangi dengan data ke-2, selanjutnya hasil pengurangan tersebut disimpan
di variabel HASIL.
Pada perintah soal nomor 4 yaitu “Buat diagram alir dan program untuk
mengurangkan data biner 48-bit berikut: 0C8769758A3C7H – 853164E5AA7CH.
Simpan hasil pengurangan pada unit memori 48-bit.”, merupakan pengurangan 2 data
hexadesimal yang datanya merupakan biner 48-bit sehingga menggunakan
DefineDword dan tidak menggunakan perintah loop sama seperti soal nomor 3
dikarenakan datanya hanya ada 2. Data ke-1 dipindahkan terlebihdahulu ke BX, CX,
dan DX, kemudian dikurangi dengan data ke-2, hasil pengurangan disimpan pada
variabel HASIL. Pada soal nomor 4 ini terdapat 12 digit data sehingga harus dipecah
terlebih dahulu menjadi 4 digit yang disimpan pada data Low dan 8 digit yang disimpan
pada data High.
Pada perintah soal nomor 5 yaitu “Buat diagram alir dan program untuk
mengurangkan data biner 64-bit berikut: 9E45C8769758A3C7H –
2BC4853164E5AA7CH. Simpan hasil pengurangan pada unit memori 64-bit.”,
merupakan pengurangan 2 data hexadesimal yang datanya merupakan biner 64-bit
sehingga menggunakan DefineDword dan sama seperti soal nomor 3 dan 4, pada soal
nomor 5 ini tidak menggunakan perintah loop dikarenakan datanya hanya ada 2. Data
ke-1 akan dipindahkan terlebihdahulu ke AX,BX,CX,DX, selanjutnya baru dikurangi
oleh data ke-2,hasil pengurangan disimpan pada variabel HASIL. Pada soal nomor 4 ini
terdapat 16 digit data sehingga harus dipecah terlebih dahulu menjadi 8 digit yang
disimpan pada data low dan 8 digit yang disimpan pada data high.
VI. Kesimpulan
Dari percobaan yang telah dilakukan dapat disimpulkan bahwa untuk memudahkan
pengerjaan program yang memiliki banyak data maka dilakukan perintah loop. Perintah
loop ini dusupport oleh perintah lainnya seperti CMP yang berfungsi untuk mengurangi
dan membandingkan, lalu INC yang berfungsi untuk menambahkan 1 pada data, JNZ
yang berfungsi agar jump sehingga terjadi loop apabila memenuhi suatu kondisi yakni
apabila zeroflagnya bernilai 0. Pada proses pengurangan, data yang diproses
menggunakan ukuran DefineDword sedangkan data dari soal-soal ukurannya melebihi
dari 4 byte, sehingga data dipecah terlebih dahulu menjadi masing – masing 4 byte
karena keterbatasan ukuran dari DefineDword.
UNY, H. F. (2017, November 21). HME FT UNY. From SItem Minimal Mikro
prosesor: http://hmeft.student.uny.ac.id/2017/11/21/sistem-minimal-mikroprosesor/
Tutorialspoints. (n.d.). Retrieved from Assembly Tutorial :
https://www.tutorialspoint.com/assembly_programming/assembly_conditions.htm
Kurniawan, Antonius Angga. 2019. Konsep Pemrograman Assembler. Jakarta:
Universitas Gunadarma.