Laporan Praktikum Assembly: PUSH and POP PDF

Title Laporan Praktikum Assembly: PUSH and POP
Author Fernalia Halim
Pages 18
File Size 411.4 KB
File Type PDF
Total Downloads 504
Total Views 555

Summary

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


Description

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 Gambar 8 Listing Program Cetak Perulangan Huruf PUSH and POP

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


Similar Free PDFs