Post on 26-Apr-2023
LAPORAN PRAKTIKUM
ORGANISASI KOMPUTER & BAHASA ASSEMBLY
“PUSH AND POP”
Kelas : INF 2B Praktikum 1
Nama : Fernalia
NIM : J3C212210
PROGRAM KEAHLIAN MANAJEMEN INFORMATIKA
DIREKTORAT PROGRAM DIPLOMA
INSTITUT PERTANIAN BOGOR
2013
i
DAFTAR ISI
DAFTAR ISI ......................................................................................................................... i
DAFTAR GAMBAR ............................................................................................................ ii
LAPORAN PRAKTIKUM ................................................................................................... 1
1. Tujuan Percobaan ....................................................................................................... 1
2. Teori Penunjang ......................................................................................................... 1
2.1. Interrupt dan Register .......................................................................................... 1
2.2. Tanda Directive ................................................................................................... 3
2.3. Addressing Modes ............................................................................................... 4
2.4. Bandingkan dan Lompat (CMP & JMP) .............................................................. 6
2.5. Stack.................................................................................................................... 7
3. Tugas Pendahuluan ..................................................................................................... 8
3.1. Program Cetak Huruf PUSH and POP ................................................................. 8
3.2. Program Masukkan Nilai Flags Register PUSH and POP .................................... 9
3.3. Program Masukkan Isi Rgeister PUSH and POP ................................................. 9
3.4. Program Cetak Pengulangan Huruf PUSH and POP .......................................... 10
Output: ........................................................................................................................ 10
4. Listing Program ........................................................................................................ 10
4.1. Program Cetak Huruf PUSH and POP ............................................................... 10
4.2. Program Masukkan Nilai Flags Register PUSH and POP .................................. 11
4.3. Program Masukkan Isi Rgeister PUSH and POP ............................................... 11
4.4. Program Cetak Pengulangan Huruf PUSH and POP .......................................... 12
5. Analisis Program ...................................................................................................... 13
5.1. Program Cetak Huruf PUSH and POP ............................................................... 13
5.2. Program Masukkan Nilai Flags Register PUSH and POP .................................. 13
5.3. Program Masukkan Isi Rgeister PUSH and POP ............................................... 14
5.4. Program Cetak Pengulangan Huruf PUSH and POP .......................................... 14
6. Kesimpulan .............................................................................................................. 15
7. Daftar Pustaka .......................................................................................................... 15
ii
DAFTAR GAMBAR
Gambar 1 Output Program Cetak Huruf PUSH and POP ....................................................... 8
Gambar 2 Output Program Masukkan Nilai Flags Register PUSH and POP .......................... 9
Gambar 3 Output Program Masukkan Isi Register PUSH and POP ....................................... 9
Gambar 4 Output Program Cetak Pengulangan Huruf PUSH and POP ............................... 10
Gambar 5 Listing Program Cetak Huruf PUSH and POP..................................................... 10
Gambar 6 Listing Program Masukkan Nilai Flags Register PUSH and POP ....................... 11
Gambar 7 Listing Program Masukkan Isi Register PUSH and POP ..................................... 11
Gambar 8 Listing Program Cetak Perulangan Huruf PUSH and POP .................................. 12
Gambar 9 Analisa Program Part 1 ....................................................................................... 13
Gambar 10 Analisa Program Cetak Huruf PUSH and POP .................................................. 13
Gambar 11 Analisa Program Masukkan Nilai Flags Register PUSH and POP ..................... 13
Gambar 12 Analisa Program Masukkan Isi Register PUSH and POP .................................. 14
Gambar 13 Analisa Program Cetak Perulangan Huruf PUSH and POP................................ 14
Gambar 14 Analisa Program Part 2 ..................................................................................... 15
1
LAPORAN PRAKTIKUM
1. Tujuan Percobaan
1) Mengetahui dan memahami syntax yang dalam pembuatan program implementasi
perintah PUSH and POP.
2) Memahami penggunaan operasi-operasi PUSH and POP.
3) Dapat membedakan antara PUSH dan POP.
2. Teori Penunjang
2.1. Interrupt dan Register
Interrupt atau sering kali disebut dengan intruksi merupakan permintaan-
perminaatan yang dikirimkan kepada processor untuk memproses dan melakukan
sesuatu. Dalam pemrograman bahasa assembler, interupsi digunakan untuk
menyelesaikan tugas atau permintaan yang dimasukan secara khusus oleh user dalam
pengeksekusian program yang diinginkan.
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:
1) 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.
2) 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 sebaguan memori dari microprocessor yang dapat diakses
dengan kecepatan yang sangat tinggi. Register ini merupakan perantara yang selalu
digunakan oleh microprocessor untuk melakukan pekerjaannya. Register yang
digunakan oleh microprocessor dibagi menjadi 5 bagian sesuai dengan tugasnya,
keliama bagian tersebut adalah:
2
1) Segmen Register yang terdiri atas CS (Code Segment), DS (Data Segment),
ES (Extra Segment), dan SS (Stack Segment).
2) Pointer dan Index Register yang terdiri dari SP (Stack Pointer), BP (Base
Pointer), SI (Source Index), dan DI (Destination Index).
3) General Purpose Register yang terdiri atas AX, BX, CX dan DX yang
masing-masingnya terdiri atas 16 bit. Pada setiap bagian register ini, terdapat
2 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:
a. Register AX, biasanya digunakan dalam operasi aritmatika terutama
dalam operasi pembagian dan pengurangan.
b. Register BX, pada umumnya digunakan untuk menunjukkan suatu alamat
offset dari suatu segmen.
c. Register CX, biasanya digunakan pada operasi looping (perulangan)
dimana pada register ini menunjukkan banyaknya looping yang akan
terjadi pada sebuah program.
d. Register DX, digunakan secara khusus untuk menampung sisa hasil
pembagian 16 bit.
4) 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.
5) Flags Register merupakan register yang menunjukkan kondisi dari sebuah
keadaan. Kondisi keadaan ini mengembalikan nilai “ya” atau “tidak”, 0 atau
1. 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 menyimpan
16 keadaan (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).
3
2.2.Tanda Directive
2.2.1. .MODEL, Model-model pada program dan codenya:
1) TINY, program hanya akan menggunakan 1 segment seperti program
COM, model ini disediakan untuk program COM.
2) SMALL, data dan code yang digunakan oleh program kurang dari
ukuran 1 segment atau 64 KB.
3) MEDIUM, data yang digunakan oleh program kurang dari 64 KB
tetapi code yang digunakan bisa lebih dari 64 KB.
4) COMPACT, data yang digunakan bisa lebih besar dari 64 KB tetapi
codenya kurang dari 64 KB.
5) LARGE, data dan code yang dipakai oleh program bisa lebih dari 64
KB.
6) HUGE, data maupun code array yang digunakan bisa lebih dari 64
KB.
2.2.2. .CODE
Tanda directive yang digunakan untuk memberikan pemberitahuan
mengenai code segmentnya. Code segment ini digunakan untuk menyimpan
program yang akan dijalankan.
2.2.3. .ORG 100h
Tanda directive ini sering digunakan pada program COM. Perintah ini
digunakan untuk memberitahukan kepada assembler supaya program pada saat
dijalankan ditaruh mulai pada offset ke 100h (256) byte. Dapat diartikan juga
bahwa kita menyediakan 100h byte kosong pada saat program dijalankan.
Program kosong ini nantinya akan ditempati oleh PSP (Program Segment Prefix).
2.2.4. .JMP
Perintah JMP digunakan untuk melompat menuju tempat yang
ditunjukkan oleh perintah JUMP.
Syntax:
JUMP Tujuan
4
2.2.5. INT 20h
Perintah ini digunakan untuk megakhiri program dan menyerahkannya
kembali ke DOS.
2.3. Addressing Modes
Addressing Modes merupakan cara-cara dari pengnyalinan data atau nilai yang
berada pada sebuah register dan variabel ke lokasi memori atau sebaliknya. Secara
umum banyaknya cara penyalinan tersebut dapat dibagi menjadi 7, seperti pada tabel
berikut.
No. Addressing Mode Format Segment Register
1. Immediate Data Tidak Ada
2. Register Register Tidak Ada
3. Direct Displacement Label
DS DS
4. Register Indirect [BX]
[BP]
[SI] [DI]
DS
SS
DS DS
5. Base Relative [BX] + Displacement
[BP] + Displacement
DS
SS
6. Direct Indexed [DI] + Displacement [SI] + Displacement
DS DS
7. Base Indexed [BX] [SI] + Displacement
[BX] [DI] + Displacement [BP] [SI] + Displacement
[BP] [DI] + Displacement
DS
DS SS
SS Tabel 1 Addressing Modes
Pada addressing modes ini juga diperkenalkan dengan penyalinan data yang
terlarang, diantaranya:
1) Penyalinan data antar segment register:
𝑴𝑶𝑽 𝑫𝑺,𝑬𝑺
2) Pemberian nilai untuk segment register (DS, ES, CS, SS) secara langsung:
𝑴𝑶𝑽 𝑬𝑺,𝟎𝑩𝟖𝟎𝟎𝒉
3) Penyalinan data langsung antar memori:
𝑴𝑶𝑽 𝑴𝒆𝒎𝒐𝒓𝒊𝑩,𝑴𝒆𝒎𝒐𝒓𝒊𝑨
4) Penyalinan data antar register yang berbeda tipe tanpa menggunakan pointer:
𝑴𝑶𝑽 𝑨𝑳,𝑩𝑿
Pada permasalahan 1 sampai dengan 3 dapat diselesaikan dengan penggunaan
register general purpose (AX, BX, CX, DX) dengan memasukkan nilai dari segment
5
register; nilai untuk segment register; nilai dari memori ke register general purpose
lalu menyalinkan nilai yang ada pada register general purpose tersebut ke tujuan.
2.3.1. Immediate Addressing
Immediate addressing atau register addressing merupakan penyalinan
nilai atau konstanta yang telah didefinisikan langsung ke sebuah register:
𝑴𝑶𝑽,𝑭𝑭𝒉 atau 𝑴𝑶𝑽,𝑨
2.3.2. Register Addressing
Register addressing merupakan suatu penyalinan data antar register yang
ukurannya sama:
𝑴𝑶𝑽 𝑨𝑿,𝑪𝑿 atau 𝑴𝑶𝑽 𝑩𝑳,𝑪𝑯
2.3.3. Direct Addressing
Direct addressing merupakan penyalinan data pada suatu register dan
simbol:
𝑻𝑫𝑨𝑻𝑨: 𝑱𝑴𝑷 𝑷𝒓𝒐𝒔𝒆𝒔
𝑨 𝑫𝑩 𝟏𝟐𝒉
𝑩 𝑫𝑩 𝟓𝟗𝒉
𝑷𝒓𝒐𝒔𝒆𝒔:𝑴𝑶𝑽 𝑨𝑳,𝑨
𝑴𝑶𝑽 𝑨𝒉,𝑩
2.3.4. Register Indirect Addressing
Register indirect addressing adalah penyalinan suatu data yang banyak
dengan mengambil alamat efektifnya dan diakses nilainya dengan menggunakan
tanda kurung siku ([]). Register-register yang dapat digunakan adalah BX, BP, SI
dan DI. Cara untuk mendapatkan alamat efektif dari suatu data digunakan
perintah LEA (Load Effective Address) dengan syntax:
𝑳𝑬𝑨 𝑹𝒆𝒈𝒊𝒔𝒕𝒆𝒓,𝑫𝒂𝒕𝒂
6
2.4. Bandingkan dan Lompat (CMP & JMP)
2.4.1. 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.
2.4.2. 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.
4) CF akan bernilai 1 jika operand1 lebih kecil dari operand2 pada operadi
bilangan bertanda.
2.4.3. 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.
7
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 2 Perintah JMP mengikuti CMP
2.5. Stack
Stack merupakan sebuah tumpukan. Stack adalah bagian dari memori yang
digunakan untuk menyimpan nilai dari register secara sementara. Operasi-operasi
langsung yang berhubungan langsung dengan stack yaitu oerasi-operasi PUSH and
POP; PUSHF and POP. Stack menggunakan pasangan SS:SP untuk menunjukkan
lokasi dari stack itu sendiri. Sedangkan pasangan register CS:IP digunakan untuk
mengetahui letak dari program.
2.5.1. PUSH and 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:
PUSH general purpose register
8
Pada perintah PUSH diatas berarti bahwa isi yang ada pada general purpose register
akan dimasukkan ke dalam stack.
POP general purpose register
Perintah POP diatas berarti akan mengeluarkan isi yang ada di stack dimulai dari data
yang teratas ke general purpose register.
2.5.2. 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:
PUSHF
POPF
3. Tugas Pendahuluan 3.1. Program Cetak Huruf PUSH and POP
Output:
Gambar 1 Output Program Cetak Huruf PUSH and POP
9
3.2. Program Masukkan Nilai Flags Register PUSH and POP
Output:
Gambar 2 Output Program Masukkan Nilai Flags Register PUSH and POP
3.3. Program Masukkan Isi Rgeister PUSH and POP
Output:
Gambar 3 Output Program Masukkan Isi Register PUSH and POP
10
3.4. Program Cetak Pengulangan Huruf PUSH and POP
Output:
Gambar 4 Output Program Cetak Pengulangan Huruf PUSH and POP
4. Listing Program
4.1. Program Cetak Huruf PUSH and POP
Gambar 5 Listing Program Cetak Huruf PUSH and POP
11
4.2. Program Masukkan Nilai Flags Register PUSH and POP
Gambar 6 Listing Program Masukkan Nilai Flags Register PUSH and POP
4.3. Program Masukkan Isi Rgeister PUSH and POP
Gambar 7 Listing Program Masukkan Isi Register PUSH and POP
12
4.4. Program Cetak Pengulangan Huruf PUSH and POP
Gambar 8 Listing Program Cetak Perulangan Huruf PUSH and POP
.MODEL SMALL
.CODE ORG 100h
mov AX,41h push AX pop BX mov CL,5 ulang: mov AH,02h mov DX,BX int 21h loop ulang
mov AX,42h push AX pop BX mov CL,5 ulang1: mov AH,02h mov DX,BX
int 21h loop ulang1 mov AX,43h push AX pop BX mov CL,5 ulang2:
mov AH,02h mov DX,BX int 21h loop ulang2 mov AX,44h push AX pop BX
mov CL,5 ulang3: mov AH,02h mov DX,BX int 21h loop ulang3 mov AX,45h
push AX pop BX mov CL,5 ulang4: mov AH,02h mov DX,BX int 21h loop ulang4
mov AX,46h push AX pop BX mov CL,5 ulang5: mov AH,02h mov DX,BX int 21h
loop ulang5 mov AX,47h push AX pop BX mov CL,5 ulang6: mov AH,02h
mov DX,BX int 21h loop ulang6
mov AX,47h push AX pop BX mov CL,5
ulang6: mov AH,02h mov DX,BX int 21h loop ulang6 mov AX,48h push AX pop BX
mov CL,5 ulang7: mov AH,02h mov DX,BX int 21h loop ulang7 mov AX,49h
push AX pop BX mov CL,5 ulang8: mov AH,02h mov DX,BX int 21h loop ulang8
mov AX,4Ah push AX pop BX mov CL,5 ulang9: mov AH,02h mov DX,BX
int 21h loop ulang9
int 20h
13
5. Analisis Program
Gambar 9 Analisa Program Part 1
Pada potongan program Operasi Aritmatika diatas, baris 1 sampai bari ke 3
merupakan tanda directive yang memiliki fungsi yang berbeda-beda. .MODEL SMALL
merupakan tanda directive yang menunjukan model dari program. .MODEL SMALL ini
menunjukkan bahwa program yang dibuat memilih model program SMALL yang berarti
code dan program yang dibuat tidak lebih dari 1 segment. .CODE merupakan tanda
directive yang memberikan pemberitahuan kepada code segment, artinya program akan
disimpan di code segment tersebut. ORG 100h berarti bahwa kita merelokasikan memori
kosong sebesar 100h untuk selanjutnya akan dipakai oleh PSP.
5.1. Program Cetak Huruf PUSH and POP
Gambar 10 Analisa Program Cetak Huruf PUSH and POP
5.2. Program Masukkan Nilai Flags Register PUSH and POP
Gambar 11 Analisa Program Masukkan Nilai Flags Register PUSH and POP
14
5.3. Program Masukkan Isi Rgeister PUSH and POP
Gambar 12 Analisa Program Masukkan Isi Register PUSH and POP
5.4. Program Cetak Pengulangan Huruf PUSH and POP
mov AX,41h ;AX=A
push AX ;masukkan A ke Stack
pop BX ;mengeluarkan A ke BX/BX=A
mov CL,5 ;pengulangan=5 kali
ulang: ;label ulang
mov AH,02h ;service mencetak huruf
mov DX,BX ;DX=A
int 21h ;interrupt mencetak huruf
loop ulang ;ulang label ulang=5 kali
mov AX,42h ;AX=B
push AX ;masukkan B ke Stack
pop BX ;mengeluarkan B ke BX/BX=B
mov CL,5 ;pengulangan=5 kali
ulang1: ;label ulang1
mov AH,02h ;service mencetak huruf
mov DX,BX ;DX=B
int 21h ;interrupt mencetak huruf
loop ulang1 ;ulang label ulang1=5 kali
mov AX,43h ;AX=C
push AX ;masukkan C ke Stack
pop BX ;BX=C
mov CL,5 ;pengulangan=5 kali
ulang2: ;label ulang2
mov AH,02h ;service mencetak huruf
mov DX,BX ;DX=C
int 21h ;interrupt mencetak huruf
loop ulang2 ;ulang label ulang2=5 kali
mov AX,44h ;AX=D
push AX ;masukkan D ke Stack
pop BX ;BX=D
mov CL,5 ;pengulangan=5 kali
ulang3: ;label ulang3
mov AH,02h ;service cerak huruf
mov DX,BX ;DX=D
int 21h ;interrupt cetak huruf
loop ulang3 ;ulang label ulang3=5 kali
mov AX,45h ;AX=E
push AX ;masukkan E ke stack
pop BX ;BX=E
mov CL,5 ;pengulangan=5 kali
ulang4: ;label ulang4
mov AH,02h ;service cetak huruf
mov DX,BX ;DX=E
int 21h ;interrupt cetak huruf
loop ulang4 ;ulang label ulang4=5 kali
mov AX,46h ;AX=F
push AX ;masukkan F ke stack
pop BX ;BX=F
mov CL,5 ;pengulangan=5 kali
ulang5: ;label ulang5
mov AH,02h ;service cetak huruf
mov DX,BX ;DX=F
int 21h ;interrupr cetak huruf
loop ulang5 ;ulang label ulang5=5 kali
mov AX,47h ;AX=G
push AX ;masukkan F ke stack
pop BX ;BX=F
mov CL,5 ;pengulangan=5 kali
ulang5: ;label ulang5
mov AH,02h ;service cetak huruf
mov DX,BX ;DX=F
int 21h ;interrupr cetak huruf
loop ulang5 ;ulang label ulang5=5 kali
mov AX,47h ;AX=G
push AX ;masukkan G ke stack
pop BX ;BX=G
mov CL,5 ;pengulangan=5 kali
ulang6: ;label ulang6
mov AH,02h ;service cetak huruf
mov DX,BX ;DX=G
int 21h ;interrupt cetak huruf
loop ulang6 ;ulang label ulang6=5 kali
mov AX,48h ;AX=H
push AX ;masukkan H ke stack
pop BX ;BX=H
mov CL,5 ;pengulangan=5 kali
ulang7: ;label ulang7
mov AH,02h ;service cetak huruf
mov DX,BX ;DX=H
int 21h ;intterupt cetak huruf
loop ulang7 ;ulang label ulang7=5 kali
mov AX,49h ;AX=I
push AX ;masukkan I ke stack
pop BX ;BX=I
mov CL,5 ;pengulangan=kali
ulang8: ;label ulang8
mov AH,02h ;service cetak huruf
mov DX,BX ;DX=I
int 21h ;interrupt cetak huruf
loop ulang8 ;ulang label ulang8=5 kali
mov AX,4Ah ;AX=J
push AX ;masukkan J ke stack
pop BX ;BX=J
mov CL,5 ;pengulangan=5 kali
ulang9: ;label ulang9
mov AH,02h ;service cetak huruf
mov DX,BX ;DX=J
int 21h ;interrupt cetak huruf
loop ulang9 ;ulang label ulang9=5 kali
Gambar 13 Analisa Program Cetak Perulangan Huruf PUSH and POP
15
Gambar 14 Analisa Program Part 2
Pada baris program diatas, int 20h digunakan untuk megakhiri program dan
mengembalikan kerja kepada DOS. Pada program ke 20 END TDATA adalah untuk
mengakhiri kerja program.
6. 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 yang 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.
7. Daftar Pustaka
1) Suheri, Asep. 2012. MODUL PRAKTIKUM ORGANISASI KOMPUTER &
BAHASA ASSEMBLY. [Bogor]: Program Diploma Institut Pertanian Bogor [IPB].
2) Susanto. 1995. Pemrograman dengan Bahasa Assembly. Elex Media
Komputindo.