laporan uts (gamepacmankelompok)

48
LAPORAN TUGAS KELOMPOK PEMROGRAMAN ASSEMBLER GAME PACMAN Disusun oleh: Oktavia Indriani IK – 2B Jurusan Teknik Elektro Program Studi Teknik Informatika Politeknik Negeri Semarang

Upload: oktavia-indriani

Post on 15-Nov-2015

254 views

Category:

Documents


1 download

DESCRIPTION

Mata Kuliah Assembler

TRANSCRIPT

LAPORAN TUGAS KELOMPOKPEMROGRAMAN ASSEMBLERGAME PACMAN

Disusun oleh:

Oktavia IndrianiIK 2B

Jurusan Teknik ElektroProgram Studi Teknik InformatikaPoliteknik Negeri Semarang2013 / 2014

I. Tujuan Instruksi KhususSetelah menyelesaikan praktek ini mahasiswa dapat :1. Mahasiswa mampu memahami instruksi logic dan aritmetik.2. Mahasiswa mampu memunculkan sebuah objek secara random

Dasar TeoriDalam mikroprosesor instruksi-instruksi aritmatika yang disediakan jumlahnya terbatas, pada instruksi penjumlahan(ADDdanADC) dan pada pengurangan(SUBdanSBC) saja. Dengan demikian bukan berarti bahwa persoalan aritmetika lainnya seperti perkalian dan pembagian tidak dapat diselesaikan. Dengan menggabungkan beberapa instruksi yang tersedia dapat dibuat program subroutin untuk perkalian dan pembagian, mencari nilai kuadrat suatu bilangan, sortir data, pengurutan, dan sebagainya. Perlu diingat bahwa mikroprosesor melalukan operasi penjumlahan dan pengurangan dalam sistem komplemen berbasis dua sedangkan kita menggunakan sistem bilangan desimal hampir di segala bidang. Instruksi Decimal Addjust Accumulator (DAA) disediakan untuk memberikan faktor koreksi pada saat kita bekerja dalam sistem bilangan desimal dalam kode BCD.InstruksiCP,sdisediakan untuk membandingkan isi akumulator dengan sebuah data tanpa merubah isi akumulator tersebut. Instruksi ini memberikan akibat pada perubahan register flag sebagai status pembandingannya. Status tersebut diantaranya adalah (S=Sign, Z=Zerro , H=Half Carry, dan C=Carry). Dalam melaksanakan instruksi pembandingan, mikroprosesor menggunakkan sistem bilangan komplemen dua.Pada sistem komplemen dua bilaangan terkecil adalah 8FH = 10000000B = -128 dan bilangan terbesar adalah 7F = 0111 1111 = +127.

1. Instruksi ADD dan SUB.Instruksi ADD digunakan untuk melakukan operasi penjumlahan 8 bit dan 16 bit. Ada 38 jenis perintah penjumlahan pada mikroprosesor Z-80 CPU.

Pada operasi aritmetika 8 bit register A (akumulator) ditambahkan dengan isi sebuah register 8 bit atau data immediate 8 bit, atau data pada satu lokasi memori yang alamatnya dicatat oleh register HL, IX, atau IY. Sedangkan pada operasi aritmetika 16 bit register HL, IX, dan IY berfungsi sebagai akumulator yang dapat ditambahkan dengan isi register BC, DE, HL, SP. Untuk lebih jelasnya perhatikan Tabel 1 berikut ini:Tabel 1. Instruksi ADD

Instruksi SUB digunakan hanya untuk melakukan operasi pengurangan 8 bit. Pada operasi SUB isi register A dikurangkan dengan salah satu isi register A, B, C, D, E, H, L, atau data immediate 8 bit. Disamping juga isi register A dapat dikurangi dengan data pada suatu lokasi memori yang alamatnya dicatat oleh register HL, IX, dan IY.Tabel 2. Instruksi SUB

Instruksi ADD dan SUB dapat mempengaruhi status Sign, Zerro, HalfCarry, Overflow, dan Carry pada Register Flag. Pada instruksi ADD flag N = 0 dan pada instruksi SUB flag N = 1. Dua keadaan ini digunakan untuk menyatakan fungsi flag C sebagai carry atau borrow.

2. Instruksi ADC (ADD With Carry) dan SBC (Sub With CarryInstruksi ADC digunakan untuk menambahkan isi register A dengandata 8 bit yang berada pada suatu register atau data immediate atau data suatu memori dan mengikut sertakan bit Carry (C). Instruksi ADC juga digunakan untuk menambahkan isi register HL dengan data 16 bit yang berada pada register BC, DE, HL, dan SP dengan mengikut sertakan bit Carry Flag (C).Tabel 3. Instruksi ADC

Instruksi SBC digunakan untuk mengurangkan isi register A dengandata 8 bit yang berada pada suatu register atau data immediate atau data suatu memori dengan mengikutsertakan bit carry flag. Instruksi SBC juga digunakan untuk mengurangkan isi register HL dengan data 16 bit yang berada pada register BC, DE, HL, dan SP dengan mengikutsertakan bit Carry Flag (Cy). Hasil dari kedua bentuk pengurangan tersebut dicatat di Register A dan Register HL.Tabel 4. Instruksi SBC

3. Instruksi INC (Increment) dan DEC (Decrement)Instruksi INC digunakan untuk menambah isi suatu register atau memori dengan satu nilai. Instruksi ini sangat potensial digunakan untuk membuat counter cacah naik.Tabel 5. Instruksi INC

Instruksi DEC digunakan untuk mengurangi isi register atau data suatu memori dengan nilai 1.Tabel 6. Instruksi DEC

4. Instruksi Aritmetika KhususDalam operasi aritmetika disediakan beberapa instruksi khusus yaitu :-DAA mnemonic dari Decimal Adjust Accumulator-CPL mnemonic dari Complement Accumulator ( Komplemen 1)-NEG mnemonic dari Negate Accumulator (Komplemen 2).

a. Instruksi DAAInstruksi DAA digunakan untuk merubah isi register A ke bent uk BCD. Instruksi DAA digunakan untuk memberi faktor koreksi pada saatbekerja dengan bilangan desimal. DAA dalam melakukan koreksi bekerja sbb :-Jika Bit b3, b2, b1, b0 > 9 atau ada Half Carry (H = 1) maka bit b3, b2, b1, b0 ditanbah dengan 0110 = 6.-Jika Bit b7, b6, b5, b4 > 9 atau ada Carry (C = 1) maka bit b7, b6, b5, b4 ditanbah dengan 0110 = 6b. Instruksi CPL ( Complement)Instruksi CPL digunakan untuk merubah isi akumulator menjadi bentuk komplemen 1 yaitu dengan menginverse semua bit yang ada di akumulator.c. Instruksi NEG (Negate)Instruksi BEG digunakan untuk merubah isi akumulator menjadi bentuk negatifnya yaitu dengan merubahnya menjadi nilai komplemen dua.

5. Instruksi CP (Compare)Digunakan untuk membandingkan isi akumulator dengan data immediate 8 bit atau isi salah satu register 8 bit atau isi/data suatu lokasi memori tanpa merubah isi akumulator.Instruksi CPmembangun keadaan pada status Flag pada Bit Sign, Zero, OverFlow, Half Carry dan Carry pada Register Flag. Instruksi CP sangat baik digunakan untuk menguji sebuah data apakah data tersebut sama dengan suatu nilai tertentu atau lebih besar dan lebih kecil dari suatu nilai tertentu.Tabel 7. Instruksi CP

6. Instruksi LOGIKA AND, OR, dan XOInstruksi AND, OR, dan XOR digunakan untuk melakukan operasi logika isi dari akumulator terhadap data suatu register 8 bit atau data immediate, atau data suatu lokasi memori.Tabel 8. Instruksi Logika

Pola di atas berlaku juga pada operasi LOGIKA OR dan XOR. Simbol operasi Logika adalah sbb:^ : untuk LOGIKA ANDV : untuk LOGIKA OR(+) : untuk LOGIKA XOR

II. Alat dan Bahan1. Software Emu80862. Ms.Word

III. Alat dan Bahan1. Komputer dengan OS min Windows XP2. Emu8086

IV. Instruksi Kerja1. Buka aplikasi emu 8086

2. Buka lembar kerja baru , dengan cara klik New

3. Pilih COM template , lalu klik OK

4. Kemudian akan tampil layar kerja berikut , dan ketikan source kode yang diinginkan5. Setelah mengetikkan kode yang diinginkan simpan program tersebut6. Jalankan program tersebut dengan meilih icon7. Untuk menelisik hasil pilih

8. Untuk melihat hasilnya klik RUN

V. Analisisorg 100hJMP Mulai

BibitRandom dw 0 PosX db 0PosY db 0

PosXB db 0PosYB db 0

Kal db 10,10,"Yeeey Berhasil!!"

Map db 178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178,178,178,178, 10, 13 db 178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178,178,178,178, 10, 13 db 178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 10, 13 db 178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 4, 32, 10, 13 db 178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178,178, 178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178,178, 178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 4, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178,178, 178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 4, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 4, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 4, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 4, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 4, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 4, 32, 10, 13 db 178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 4, 32, 10, 13 db 178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 4, 32, 178,178,178, 32, 32, 32, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 178, 178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 178,178,178, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 10, 13 db 178, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 10, 13 db 178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 178,178,178, 10, 13

db 32, 83, 99,111,114,101, 32, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 36

proc tmp push dx push bx xor bx,bx xor dx,dx mov ah,2 int 10h lea dx,map mov ah,9 int 21h pop bx pop dx retendp

Mulai: Call Set_Cursor_Off CALL tmp MOV PosX, 1 MOV PosY, 0 MOV PosXB, 73 MOV PosYB, 18 CALL PacmanKn CALL ObjekB Ulang: MOV AH,00H ;waiting INT 16H CMP AH,4DH ;panah kanan JZ GeserKn ;Jump is Zero jika tombol panah maka lakukan geser jika tidak maka JMP Ulang ;JMP Ulang CMP AH,50H ;panah bawah JZ GeserBw ;Jump is Zero jika tombol panah maka lakukan geser jika tidak maka JMP Ulang ;JMP Ulang CMP AH,4BH ;panah kiri JZ GeserKr ;Jump is Zero jika tombol panah maka lakukan geser jika tidak maka JMP Ulang ;JMP Ulang CMP AH,48H ;panah atas JZ GeserAt ;Jump is Zero jika tombol panah maka lakukan geser jika tidak maka JMP Ulang JMP Ulang RET GeserKn: CALL Pacman_del ADD PosX,3 ;posisi X geser 1 ke kanan CALL PacmanKn ;gambar ulang pacman ;JMP Ulang ;ulang ;INT 20H MOV AL, PosX MOV BL, PosY CMP AL, PosXB CMP BL, PosYB JE Tabrakan JNE Ulang ;ulang RET GeserBw: CALL Pacman_del ADD PosY,3 ;posisi X geser 1 ke kanan CALL PacmanBw ;gambar ulang pacman ;JMP Ulang ;ulang ;INT 20H MOV AL, PosX MOV BL, PosY CMP AL, PosXB CMP BL, PosYB JE Tabrakan JNE Ulang ;ulang RET GeserKr: CALL Pacman_del ADD PosX,-3 ;posisi X geser 1 ke kanan CALL PacmanKr ;gambar ulang pacman ;JMP Ulang ;ulang ;INT 20H MOV AL, PosX MOV BL, PosY CMP AL, PosXB CMP BL, PosYB JE Tabrakan JNE Ulang ;ulang RET GeserAt: CALL Pacman_del ADD PosY,-3 ;posisi X geser 1 ke kanan CALL PacmanAt ;gambar ulang pacman ;JMP Ulang ;ulang ;INT 20H MOV AL, PosX MOV BL, PosY CMP AL, PosXB CMP BL, PosYB JE Tabrakan JNE Ulang ;ulang ;INT 20H RET Tabrakan: MOV AH,9 MOV DX,OFFSET Kal CALL SOUND int 21H CALL ObjekB_del CALL PacmanKn

RET Block PROC RETBlock ENDP

;pacmankananPacmanKn: PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,02H MOV BH,00H MOV DH,PosY MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,3 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY INC DH MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY ADD DH,2 MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,3 MOV AL,179 INT 10H

POP DX POP CX POP BX POP AX RET

;pacmankiriPacmanKr: PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,02H MOV BH,00H MOV DH,PosY MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,3 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY INC DH MOV DL,PosX ADD DL,2 INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY ADD DH,2 MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,3 MOV AL,179 INT 10H

POP DX POP CX POP BX POP AX RET

;pacmanbawahPacmanBw: PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,02H MOV BH,00H MOV DH,PosY MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,3 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY INC DH MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY INC DH MOV DL,PosX ADD DL,2 INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY ADD DH,2 MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H

MOV AH,02H MOV BH,00H MOV DH,PosY ADD DH,2 MOV DL,PosX ADD DL,2 INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H POP DX POP CX POP BX POP AX

ret

;pacmanatas PacmanAt: PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,02H MOV BH,00H MOV DH,PosY MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY MOV DL,PosX ADD DL,2 INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY INC DH MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY INC DH MOV DL,PosX ADD DL,2 INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY ADD DH,2 MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,3 MOV AL,179 INT 10H

POP DX POP CX POP BX POP AX

ret

Pacman_del: PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,02H MOV BH,00H MOV DH,PosY MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,00H MOV CX,3 MOV AL,20H INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY INC DH MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,00H MOV CX,3 MOV AL,20H INT 10H MOV AH,02H MOV BH,00H MOV DH,PosY ADD DH,2 MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,00H MOV CX,3 MOV AL,20H INT 10H POP DX POP CX POP BX POP AX ret

Set_Cursor_Off: MOV AH,01H MOV CH,28H INT 10H RET

Sound: PUSH AX PUSH DX MOV AH,02H MOV DL,7 INT 21H POP DX POP AX RET ObjekB: ;PacmanBw: PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,02H MOV BH,00H MOV DH,PosYB MOV DL,PosXB INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,3 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosYB INC DH MOV DL,PosXB INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,147 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosYB INC DH MOV DL,PosXB ADD DL,2 INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,147 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosYB ADD DH,2 MOV DL,PosXB ADD DL,1 INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,044 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosYB ADD DH,2 MOV DL,PosXB INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H

MOV AH,02H MOV BH,00H MOV DH,PosYB ADD DH,2 MOV DL,PosXB ADD DL,2 INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX,1 MOV AL,179 INT 10H POP DX POP CX POP BX POP AX

ret ObjekB_del: ;PacmanBw: PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,02H MOV BH,00H MOV DH,PosYB MOV DL,PosXB INT 10H MOV AH,09H MOV BH,00H MOV BL,00H MOV CX,3 MOV AL,179 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosYB INC DH MOV DL,PosXB INT 10H MOV AH,09H MOV BH,00H MOV BL,00H MOV CX,1 MOV AL,147 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosYB INC DH MOV DL,PosXB ADD DL,2 INT 10H MOV AH,09H MOV BH,00H MOV BL,00H MOV CX,1 MOV AL,147 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosYB ADD DH,2 MOV DL,PosXB ADD DL,1 INT 10H MOV AH,09H MOV BH,00H MOV BL,00H MOV CX,1 MOV AL,044 INT 10H MOV AH,02H MOV BH,00H MOV DH,PosYB ADD DH,2 MOV DL,PosXB INT 10H MOV AH,09H MOV BH,00H MOV BL,00H MOV CX,1 MOV AL,179 INT 10H

MOV AH,02H MOV BH,00H MOV DH,PosYB ADD DH,2 MOV DL,PosXB ADD DL,2 INT 10H MOV AH,09H MOV BH,00H MOV BL,00H MOV CX,1 MOV AL,179 INT 10H POP DX POP CX POP BX POP AX RET

Hasil

VI. Tugas (Pembagian Tugas Individu)Membuat Pacman dan karakter makanan besar mempunyai efek tabrakan.Kode Program:Mulai: Call Set_Cursor_Off CALL tmp MOV PosX, 1 MOV PosY, 0 MOV PosXB, 73 MOV PosYB, 18 CALL PacmanKn CALL ObjekB Ulang: MOV AH,00H ;waiting INT 16H CMP AH,4DH ;panah kanan JZ GeserKn ;Jump is Zero jika tombol panah maka lakukan geser jika tidak maka JMP Ulang ;JMP Ulang CMP AH,50H ;panah bawah JZ GeserBw ;Jump is Zero jika tombol panah maka lakukan geser jika tidak maka JMP Ulang ;JMP Ulang CMP AH,4BH ;panah kiri JZ GeserKr ;Jump is Zero jika tombol panah maka lakukan geser jika tidak maka JMP Ulang ;JMP Ulang CMP AH,48H ;panah atas JZ GeserAt ;Jump is Zero jika tombol panah maka lakukan geser jika tidak maka JMP Ulang JMP Ulang RET GeserKn: CALL Pacman_del ADD PosX,3 ;posisi X geser 1 ke kanan CALL PacmanKn ;gambar ulang pacman ;JMP Ulang ;ulang ;INT 20H MOV AL, PosX MOV BL, PosY CMP AL, PosXB CMP BL, PosYB JE Tabrakan JNE Ulang ;ulang RET GeserBw: CALL Pacman_del ADD PosY,3 ;posisi X geser 1 ke kanan CALL PacmanBw ;gambar ulang pacman ;JMP Ulang ;ulang ;INT 20H MOV AL, PosX MOV BL, PosY CMP AL, PosXB CMP BL, PosYB JE Tabrakan JNE Ulang ;ulang RET GeserKr: CALL Pacman_del ADD PosX,-3 ;posisi X geser 1 ke kanan CALL PacmanKr ;gambar ulang pacman ;JMP Ulang ;ulang ;INT 20H MOV AL, PosX MOV BL, PosY CMP AL, PosXB CMP BL, PosYB JE Tabrakan JNE Ulang ;ulang RET GeserAt: CALL Pacman_del ADD PosY,-3 ;posisi X geser 1 ke kanan CALL PacmanAt ;gambar ulang pacman ;JMP Ulang ;ulang ;INT 20H MOV AL, PosX MOV BL, PosY CMP AL, PosXB CMP BL, PosYB JE Tabrakan JNE Ulang ;ulang ;INT 20H RET Tabrakan: MOV AH,9 MOV DX,OFFSET Kal CALL SOUND int 21H CALL ObjekB_del CALL PacmanKn

RET Block PROC RETBlock ENDP

Tampilan (sebelum bertabrakan)

Tampilan (sesudah bertabrakan)

VII. Kesimpulan1. Prosedur dapat dipanggil dari program untuk tertentu.2. Prosedur membuat program lebih terstruktur dan mudah dimengerti.3. Stack adalah suatu area dimemori yang menyimpan data sementara. Stack digunakan dengan instruksi CALL untuk menyimpan alamat yang dikembalikan pada prosedur.4. Instruksi RET mengambil nilai dari stack dan mengembalikan ke offset. Hampir sama ketika instruksi INT memanggil interupt. Kita juga dapat menggunakan stack untuk menyimpan data lainnya.

34