Laporan Praktikum Assembly: PUSH and POP

July 11, 2017 | Autor: Fernalia Halim | Categoría: 8086 Assembly Language Programming, Laporan Praktikum, Arsitektur Dan Organisasi Komputer
Share Embed


Descripción

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

DAFTAR ISI DAFTAR ISI ......................................................................................................................... i DAFTAR GAMBAR ............................................................................................................ ii LAPORAN PRAKTIKUM ................................................................................................... 1 1.

Tujuan Percobaan ....................................................................................................... 1

2.

Teori Penunjang ......................................................................................................... 1

3.

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

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.

5.

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

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

i

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

ii

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 permintaanperminaatan 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:

1

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).

2

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

3

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 1. Immediate 2. Register 3. Direct 4. Register Indirect

5. Base Relative 6. Direct Indexed 7. Base Indexed

Format Data Register Displacement Label [BX] [BP] [SI] [DI] [BX] + Displacement [BP] + Displacement [DI] + Displacement [SI] + Displacement [BX] [SI] + Displacement [BX] [DI] + Displacement [BP] [SI] + Displacement [BP] [DI] + Displacement

Segment Register Tidak Ada Tidak Ada DS DS DS SS DS DS DS SS DS DS 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

4

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: 𝑳𝑬𝑨 𝑹𝒆𝒈𝒊𝒔𝒕𝒆𝒓, 𝑫𝒂𝒕𝒂

5

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 kondisikondisi yang tidak sesuai ke kondisi yang seharusnya setelah dibandingkan.

6

Perintah Lompat JA (Jump If Above) JE (Jump If Equal) JG (Jump If Greater)

JNE (Jump If Not Equal)

JB (Jump If Below)

JL (Jump If Less)

JBE (Jump If Below or Equal)

JLE (Jump If Less or Equal)

JAE (Jump If Above or Equal)

JGE (Jump If Greater or Equal)

Kondisi Lompat jika operand1 > operand2 untuk bilangan bertanda. Lompat jika operand1 = operand2 Lompat jika operand1 > operand2 untuk bilangan bertanda. Lompat jika operand1 tidak sama dengan operand2 Lompat jika operand1 < operand2 untuk bilangan bertanda. Lompat jika operand1 < operand2 untuk bilangan bertanda. 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

7

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

8

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

9

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

10

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

11

4.4. Program Cetak Pengulangan 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,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

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 Gambar 8 Listing Program Cetak Perulangan Huruf PUSH and POP push AX pop BX mov CL,5 ulang6: mov AH,02h mov DX,BX int 21h

12

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

13

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

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

mov AX,46h ;AX=F push AX ;masukkan F ke stack Gambar 13 Analisa Program Cetak Perulangan Huruf PUSH and POP 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

14

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.

15

Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.