LAPORAN PRAKTIKUM
ARSITEKTUR & ORGANISASI KOMPUTER
BANDINGKAN dan LOMPAT
&
STACK
Muhammad Agan Afta Binata J3C115029
INF A P1
PROGRAM KEAHLIAN MANAJEMEN
INFORMATIKA
PROGRAM DIPLOMA
INSTITUT PERTANIAN BOGOR
I. Tujuan
1.1Mengetahui maupun memahami syntax dalam pembuatan program bandingkan dan lompat. 1.2Memahami penggunaan operasi-operasi yang digunakan dalam bandingkan dan
lompat.
1.3Dapat membedakan antara JMP dengan CMP.
1.4Memahami syntax dalam pembuatan program implementasi perintah PUSH and POP.
II. Pendahuluan
2.1Bandingkan dan Lompat (CMP & JMP)
a. Lompat Tanpa Syarat
Perintah pada lompat tanpa syarat ini merupakan perintah yang sering digunakan pada pembuatan program dalam assembler, perintah tersebut yaitu perintah JMP. Perintah JMP ini digunakan untuk melompati daerah data program. JMP digunakan dengan syntax:
JMP Tujuan
Perintah JMP ini dikategorikan sebagai unconditional jump. Perintah JMP ini selalu dieksekusi untuk melompati daerah data dan langsung mengeksekusi isi label yang menjadi tujuan perintah JMP. Baris program yang ada dibawah program JMP akan dilompat dan tidak dieksekusi sampai label tujuan perintah.
b. Membandingkan dengan CMP
Perintah CMP ini digunakan untuk membandingkan 2 buah operand, dengan syntax:
CMP Operand1,Operand2
Perintah CMP ini akan membandingkan operand1 dengan operand2 dengan cara mengurangkan operand1 dengan operand2. Perintah CMP ini tidak akan memperngaruhi nilai yang ada pada setiap operand, melainkan akan mempengaruhi flags register yang menjadi hasil perbandingan dari kedua operand tersebut. Adapun flag-flag register yang akan terpengaruh oleh perintah ini adalah:
1) OF akan bernilai 1 jika operand1 lebih kecil dari operand2 pada operasi bilangan bertanda.
2) SF akan bernilai 1 jika operand1 lebih kecil dari operand2 pada operasi bilangan bertanda.
3) ZF akan bernilai 1 jika operand1 nilainya sama denga operand2.
bilangan bertanda.
c. Lompat yang mengikuti CMP
Perintah CMP yang mempengaruhi nilai pada flag register biasanya diikuti dengan perintah JMP sebagai perintah yang akan melompati kondisi- kondisi yang tidak sesuai ke kondisi yang seharusnya setelah dibandingkan.
Perintah Lompat Kondisi
JA (Jump If Above) Lompat jika operand1 > operand2 untuk bilangan bertanda.
JE (Jump If Equal) Lompat jika operand1 = operand2
JG (Jump If Greater) Lompat jika operand1 > operand2 untuk bilangan bertanda.
JNE (Jump If Not Equal) Lompat jika operand1 tidak sama dengan operand2
JB (Jump If Below) Lompat jika operand1 < operand2 untuk bilangan bertanda.
JL (Jump If Less) Lompat jika operand1 < operand2 untuk bilangan bertanda.
JBE (Jump If Below or Equal) Lompat jika operand1 <= operand2 untuk bilangan bertanda.
JLE (Jump If Less or Equal) Lompat jika operand1 <= operand2 untuk bilangan bertanda.
JAE (Jump If Above or Equal) Lompat jika operand1 >= operand2 untuk bilangan bertanda.
JGE (Jump If Greater or Equal) Lompat jika operand1 >= operand2 untuk bilangan bertanda.
Tabel 1 Perintah Lompat
2.2 PUSH dan POP
PUSH merupakan operasi yang digunakan ketika kita hendak memasukkan ada yang ada
pada general purpose register ke lokasi stack, dan perintah POP merupakan perintah yang digunakan untuk mengeluarkan data yang ada pada stack ke general purpose register untuk
dieksekusi. Syntax PUSH and POP
Pada perintah PUSH diatas berarti bahwa isi yang ada pada general purpose register akan dimasukkan ke dalam stack.
b. POP general purpose register
Perintah POP diatas berarti akan mengeluarkan isi yang ada di stack dimulai dari data yang teratas ke general purpose register.
c. PUSHF and POPF
PUSHF merupakan perintah yang digunakan untuk memasukkan atau menyimpan nilai dari flags register pada stack. Sedangkan POPF digunakan untuk mengambil nilai pada stack dan disimpan pada flags register. Syntax dari penggunaan perintah PUSHF dan POPF:
III. Pembahasan
1. Buatlah suatu program untuk menghasilkan output berupa nilai string atau numerik gunakan ES, dan DS untuk menyimpan dengan mengambil nilai/data pada register umum (Ax, Bx, Cx, dan Dx).
Gambar 1 Input & Output Program Soal No.1
MOV ES, AX: untuk menyamakan register pada ES. Nilai AX akan dipindahkan ke ES.
MOV ES, BX: untuk menyamakan register pada ES. Nilai BX akan dipindahkan ke ES.
MOV ES, CX: untuk menyamakan register pada ES. Nilai CX akan dipindahkan ke ES.
MOV ES, DX: untuk menyamakan register pada ES. Nilai DX akan dipindahkan ke ES.
PUSH AX: untuk Simpan nilai AX pada stack. PUSH BX: untuk Simpan nilai BX pada stack. PUSH CX: untuk Simpan nilai CX pada stack. PUSH DX: untuk Simpan nilai DX pada stack.
POP AX: untuk ambil nilai pada puncak stack, masukkan ke AX POP BX: untuk ambil nilai pada puncak stack, masukkan ke BX POP CX: untuk ambil nilai pada puncak stack, masukkan ke CX POP DX: untuk ambil nilai pada puncak stack, masukkan ke DX
2. Buatlah suatu analisa untuk mengetahui posisi data pada register yang dimasukkan/disimpan pada stack.
3. Membuat program agar menghasilkan suara beep.
Gambar 2 Input & Output dari Program Soal No. 2
XOR BX,BX: adalah itu untuk membuat nilai BX menjadi nol. MOV AH,02h: sintak servis cetak karakter.
MOV DL, Kal[BX]: memasukkan karakter ke BX menuju DL.
JMP: digunakan untuk melompat keperintah yang ditentukan oleh register JMP.
IV. Kesimpulan
Program PUSH dan POP ini digunakan untuk mengakses data yang ada pada stack dan mengeluarkannya sesuai dengan urutan terakhir yang dimasukkan. Stack ini berguna untuk program-program yang memiliki data yang banyak dan dilakukan pengaksesan data tersebut secara berurutan sesuai dengan data terakhir yang dimasukkan. Pada stack ini berlaku fungsi last in first out. Maka, jika data yang terakhir dimasukkan maka dalam pengaksesannya data itu akan pertama kali keluar. Sementara, Program BANDINGKAN dan LOMPAT ini merupakan program yang menghitung nilai total uang Yanto yang masing-masingnya dimasukkan ke bank yang berbeda dengan nilai yang berbeda. Setiap uang yang dimasukkan oleh Yanto akan bertambah setiap tahunnya sesuai bunga bank masing-masing. Program ini menggunakan perintah- perintah dasar bandingkan dan lompat yaitu perintah JMP dan CMP. Selain menggunakan perintah-perintah dasar bandingkan dan lompat, program ini menggunakan perintah Addressing Modes dan perintah operasi aritmatika.
V. Daftar Pustaka