siti m_praktikum

28
SITI MARYATI DTI200913 TUGAS MK PEMROGRAMAN BAHASA RAKITAN SEMESTER 3 Praktikum 1. Pencetakkan Karakter a. Satu karakter Bentuk memory yang digunakan adalah model SMALL Service 02h dengan int 21h adalah service untuk mencetak karakter Int 20h untuk menghentikan program dan mengembalikan ke Dos. Apabila kita lupa untuk mengakhiri program, maka computer akan hang Isi dari dl A Kemudian file di compaile dan dilinkkan. Hasilnya seperti gambar di bawah ini:

Upload: ameyzancity

Post on 29-Jun-2015

129 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3Praktikum

1. Pencetakkan Karaktera. Satu karakter

– Bentuk memory yang digunakan adalah model SMALL– Service 02h dengan int 21h adalah service untuk mencetak karakter– Int 20h untuk menghentikan program dan mengembalikan ke Dos.

Apabila kita lupa untuk mengakhiri program, maka computer akan hang

– Isi dari dl A– Kemudian file di compaile dan dilinkkan. Hasilnya seperti gambar di

bawah ini:

Page 2: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

b. Beberapa Karakter dengan service 02h

– Service 02h hanya bisa mencetak 1 karakter dan jika kita menginginkan mencetak beberapa karakter, maka kita harus mengulang perintah sebanyak yang kita inginkan

– Kemudian file tersebut kita compile dan linkkan seperti gambar di bawah ini:

2. Pengulangan/Loopa. Perulangan dengan output huruf/karakter yang sama

Page 3: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Bila kita menggunakan beberapa pencetakan karakter dengan mengulang service 02h, kali ini kita akan menggunakan perulangan/loop untuk mencetak karakter tersebut sebanyak yang kita inginkan

– Register CX digunakan sebagai counter dalam melakukan perulangan.– Label ulang dan loop ulang perintah untuk melakukan instruksi yang

terdapat didalamnya (mencetak nilai dl)– Kemudian file tersebut kita compile dan linkkan seperti gambar di

bawah ini:

b. Mencetak huruf secara Ascending

– Agar huruf yang dicetak berurutan (A-Z/0-9) secara Ascending, maka kita gunakan operasi aritmatika ‘inc’ dan register dl

– Dengan perintah inc dl, maka nilai dl akan bertambah 1 setiap perulangan dilakukan sampai nilai pada counter (register CX).

– Kemudian file tersebut kita compile dan linkkan seperti gambar di bawah ini:

Page 4: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

c. Mencetak huruf secara Descending

– Agar huruf yang dicetak berurutan (Z-A/9-0) secara Ascending, maka kita gunakan operasi aritmatika ‘dec’ dan register dl

– Dengan perintah dec dl, maka nilai dl akan berkurang 1 setiap perulangan dilakukan sampai nilai pada counter (register CX).

– Kemudian file tersebut kita compile dan linkkan seperti gambar di bawah ini:

d. Mencetak huruf/string ACE….

Page 5: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Untuk menampilkan huruf ACE…., kita memerlukan perintah perulangan dan operasi aritmatika.

– Saat kita mencetak huruf pertama kali yaitu huruf A, maka nilai dl akan ditambah 1 kemudian ditambah lagi 1 baru mencetak huruf yang kedua yaitu C

– Hasil dari compile dan link seperti gambar di bawah ini:

3. Mencetak String/Kalimat

– Jmp proses merupakan perintah untuk lompat ke label proses untuk melewati data program

– Vcal db ‘my lovely$’ adalah syntax untuk pendefisian variable dimana db (define byte) merupakan pendefisian per byte.

– Setiap akhir penulisan kalimat diakhiri dengan tanda string ($) agar program yang dijalankan tidak hang.

– Interrupt 21h dan service 09h merupakan perintah untuk mencetak string

– Lea merupakan load effective adrress yaitu perintah untuk menuju/mendapatkan alamat dari sebuah variable

– Register yang digunakan adalah register DX..

Page 6: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Apabila kita menggunakan program debug maka IP dan CS akan berubah dimana register CS:IP untuk menunjukkan alamat dimemory tempat dari intruksi (perintah) selanjutnya yang akan dieksekusi.

– Hasil compile dan link:

4. Karakter Dan String Dengan Atributa. Karakter dengan atribut

1) Karakter dengan atribut

– Register CX digunakan sebagai counter untuk mencetak sebanyak yang kita inginkan.

– Register BL digunakan untuk memberikan atribut yang akan kita cetak.– Interrupt 10h dan service 09h digunakan untuk memanipulasi layar/

mencetak karakter beserta atribut pada posisi kursor.– Regsiter bl merupakan register 8 bit dimana atribut tersebut diwakili

dengan basis biner (0,1) atau nilai hexadecimal yang nilainya sama dengan nilai biner tersebut dengan ketentuan:

Keterangan:Bit ke-7 digunakan Blink/BL

Page 7: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

Bit ke-4, 5, 6 digunakan untuk mengatur background warna (R, G, B)Bit ke-3 digunakan untuk mengatur intensitas warnaBit ke-0, 1, 2 dibunakan untuk mengatur warna tulisan (R, G, B)

– Hasil dari compile dan linknya seperti gambar di bawah ini:

2) Karakter dengan atribut dan Loop

– inc bl dan dl untuk menambahkan nilai bl dengan 1 sampai dengan nilai pada counter (CX)

– label ulang dan loop ulang serta label lagi dan loop lagi digunakan sebagai perintah untuk melakukan perulangan.

– Hasil dari compile dan link seperti gambar di bawah ini:

Page 8: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

b. String/kalimat dengan atribut

Hasil compile dan link:

5. Bandingan / Lompatan / pengkondisian

Page 9: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Cmp/Compare/Perbandingan merupakan lompat bersyarat (Conditional jump) yaitu menyeleksi suatu keadaan sebelum melompat ke daerah program tujuan.

– JE (Jump if Equal) merupakan perintah lompat yang mengikuti perintah CMP. Lompat jika operand1 = operand2. Dimana JE diikuti label untuk masuk ke perintah yang berada pada label tersebut.

– JNE (Jump if not Equal) merupakan perintah lompat yang mengikuti perintah CMP. Lompat jika operand1 tidak sama denganoperand2. Dimana JNE diikuti label untuk masuk ke perintah yang berada pada label tersebut.

– Setiap pada isi label kita akhiri dengan int 20h agar perintah lompat dapat berakhir. Jika pada isi label tidak terdapat maka akan mengeksekusi salah satu dari isi perintah label tersebut.

– Dari program diatas, – Setelah dicompile dan dilinkkan maka hasilnya sebagai berikut:

– Dengan menggunakan program debug, kita dapat mengetahui register yang ada dengan cara mengetikkan debug cmp.com. Disini kita jug adapt mengetahui jalannya program yang sedang kita jalankan. Jika sudah NOP berarti program sudah selesai. Untuk keluar kita ketikkan saja huruf Q lalu enter. Hasilnya seperti gambar di bawah ini:

Page 10: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

6. Inputan Keyboarda. Inputan keyboard dengan Lompatan/Bandingan/Pengkondisian

– Service 01h dan int 21h digunakan untuk inputan keyboard 1 karakter.– Inputan akan disimpan ke dalam register AL.– Pada program di atas, kita gunakan pula lompat bersyarat/conditional

jump untuk melihat sebuah kondisi. Apabila inputan bernilai ‘y’/’Y’ maka akan melanjutkan ke proses label ya. Apabila inputan tidak bernilai ‘y’/’Y’ maka akan melanjutkan ke proses labet tidak dan

Page 11: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

disetiap label diakhiri int 20h untuk mengakhiri kondisi sebuah lompatan.

– Hasil dari compile dan link program di atas adalag:

Hasil setelah menginput huruf y/Y:

Hasil setelah menginput huruf selain y/Y

Page 12: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

b. Inputan keyboard dengan Lompatan/Bandingan/Pengkondisian dan Pencetakkan Karakter

– 2Ah merupakan kode ASCII untuk karakter *.– Pada program diatas, apbila yang kita bandingkan sesuai maka akan

mencetak karakter * dan melanjutkannya ke bandingan selanjutnya sampai jika bandingan sesuai terus maka keluar kalimat ‘THIS IS YOUR SECREAT DATA' 'KEYS : SOMETHING WRONG’. Jika bandingan tidak sesuai maka akan muncul 'INNCORECT, PLEASE TRY AGAIN' dan kembali ke label proses.

– Hasil dari compile dan link:

Page 13: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

Apabila isi dari inputan sesuai

Apabila isi dari inputan ada yang tidak sesuai

Page 14: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

c. Inputan keyboard dengan Lompatan/Bandingan/Pengkondisian dan Gerbang Logika

– XOR merupakan Exclusive OR. Xor bx, bx maka niali register bx akan menjadi 0.

– Offset digunakan untuk menunjukkan suatu alamat tertentu di memory computer.

– Mov dl, 13 digunakan untuk kursor kembali ke awal / carriage return– Mov dl, 10 digunakan untuk kursor turun 1 / line feed

Page 15: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Hasil compile dan link:

Apabila huruf yang ditemukan

Apabila huruf tidak ditemukan

7. Stack dan Soubrutine dan Procedure

a. Stack dan operasi aritmatika

Page 16: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Div merupakan operasi aritmatika dimana hasil pembagiannya disimpan pada register AL dan sisa hasil baginya disimpan pada register AH.

– Push dan pop merupakan perintah stack/tumpukan. Stack adalah tempat peletakkan sementara dari nilai/isi suatu register. Pada stack digunakan pasangan SS:SP untuk menunjukkan lokasi dari stack.

– Push ax berarti memasukkan suatu nilai pada register ax ke stack– Pop ax berarti mengambil kembali nilai suatu nilai pada register ax.– Hasil Compile dan link:

– Kita lakukan debug untuk mengetahui register yang digunakan dan mengetahui prosesnya

Page 17: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– AX = 26 secara hexa– BX = A– SP = FFFE– Kita dapat mengetahui bahwa apabila saat perintah PUSH AX dengan

register AX berisi 0803 maka akan tetrlihat SP = FFFC– Saat div bl, nilai al akan dibagi dengan bl = 38 div 10– Pada saat Push ax, hasil akan dimasukkan di register AX dimana

register AL bernilai 3 dan register AH bernilai 8– Mov dl, al berarti sekarang register DL bernilai 3; kemudian add dl,

30h berarti 3 ditambahkan dengan 0 karena 30h merupakan hexa dari 0 dan dicetak kelayar

– Pada saat Pop ax, maka akan mengambil kembali nilai yang berada pada register AX; mov dl, ah maka dl sekarang berniali 8 dan ditambahkan dengan 0 kemudian dicetak kelayar.

Page 18: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

b. Stack, Gerbang LOgika dan Operasi Aritmatika

– dw merupakan pendefisinian variable per wprd.– Hasil compile dan link:

Page 19: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– dengan menggunakan debug:

Page 20: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

Page 21: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– dari gambar diatas kita dapat mengetahui bahwa pada register SP akan berubah jika kita melakukan perintah PUSH DX.

Page 22: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Saat pertama kali, register SP=FFFE, kemudian SP=FFFC, SP=FFFA dan SP=FFF8

Page 23: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Setelah kita lakukan POP DX/mengambil kembali maka yang pertama kali adalah lokasi SP=FFFA

Page 24: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Kesimpulannya adalah cara pengambilan kembali dari perintah stack adalah secara LIFO

Page 25: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Dari program diatas kita dapat menganalisanya yaitu:a) nilai register AX akan bernilai string 345b) register BX = 10c) XOR CX, CX berarti nilai pada register CX sekarang adalah 0. d) Pada saat di label ulang:

• XOR DX, DX, nilai pada register DX=0• Div BX, nilai AX akan dibagi dengan BX= 345 div 10. hasil baginya disimpan diregister AX dan sisa hasil baginya di register DX• Push DX, masukkan nilai DX dan sekarang bernilai 5 dan disimpan pada stack. INC CX, register CX sekarang berniali 1• CMP AX, 0, apakah nilai AX yaitu 34 = 0, jika tidak maka kosongkan lagi register DX kemudian AX yaitu 34 dibagi dengan BX yaitu 10, register AX=3 dan DX=4. Push DX, Sisa bagi akan dimasukkan kedalam register DX yaitu 4. Naikkan nilai CX menjadi 2, bandingkan apakah 3=0 tidak maka kosongkan lagi nilai DX. Div BX, 3 div 10, AX=0 dan DX=3, push DX, DX=3. Naikkan nilai CX menjadi 3. apakah 0=0. kemudian lanjutkan keproses selanjutnya.

e) Pada label cetak,:• Pop DX, perintah stack untuk mengambil nilai pada Register DX , dimana nilai yang pertama diambil adalh 3 kemudian ditambah dengan 0 dan dicetak. Lakukan lagi sampai nilai pada stack habis. Dan nilai yang dicetak adalah 345.

c. Soubrutine dan Procedure

Page 26: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– call cetak_k digunakan untuk memanggil soubrutine yaitu cetak_k– cetak_k proc near nama soubrutine dan bersifat dekat– ret digunakan mengembalikan penunjuk program (IP) ke program

pemanggil.– Cetak_k endp untuk mengakhiri prosedur.– Compile dan link:

Page 27: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

8. Program ResidenProgram residen adalah program yang menetap dimemory seperti DOS dan program residen ini akan berada tepat diatas Operating System. Program residen akan dianggap sebagai bagian dari Operating System sehingga bila dijalankan program aplikasi maka program aplikasi tersebut akan ditaruh diatas program residen sehingga program residen kita tetap utuh.a) Int 27h

– Program diatas apabila kita jalankan dan menekan tombol Prtscr maka tombol prtscr tidak akan berfungsi lagi dan tombol Prtscr yang biasanya mencetak tampilan layar akan berubah menjadi mencetak pesan pada layar.

– Terdapat dua bagian pokok yaitu bagian residen dan bagian yang meresidenkan. Bagian yang mersidenkan hanya dijalankan satu kali sedangkan bagian residen dijalankan berulang-ulang kali setiap penekanan tombol PrtScr.

– Bagian yang meresidenkan adalah

– Int 27 merupakan terminate but stay resident

b) Int 18h

Page 28: SITI M_PRAKTIKUM

SITI MARYATI DTI200913TUGAS MK PEMROGRAMAN BAHASA RAKITANSEMESTER 3

– Int 18 merupakan interupt room basic bila ingin melakukan boot pada komputer tanpa disket di dirve, maka yang akan tampak di layar adalah resident basic yang terdapat di ROM (Read Only Memory).

– Bila Interrupt 18h dijalankan, maka semua isi memory komputer akan dikosongkan dan resident basic inilah yang akan keluar.