PERTEMUAN PERTAMA PRAKTIKUM BAHASA ASSEMBLY 1. Perbedaan program COM dengan EXE •
PROGRAM COM a.
Lebih pendek dari file EXE
b.
Lebih cepat dibanding file EXE
c.
Hanya dapat menggunakan satu segment
d.
Ukuran file maksimum 64KB (ukuran satu segment)
e.
Sulit untuk mengakses data atau procedure yang terletak pada segment
lain f.
100h byte pertama merupakan PSP (Program Segment Prefix) dari
program tersebut. g. •
Bisa dibuat dengan DEBUG
PROGRAM EXE a. Lebih panjang dari file COM b. Lebih lambat dibanding file COM c. Bisa menggunakan lebih dari satu segment d. Ukuran file tidak terbatas sesuai dengan ukuran memory e. Mudah mengakses data atau procedure pada segment yang lain f. Tidak bisa dibuat dengan DEBUG
2. Bentuk Angka Assembler mengizinkan penggunaan beberapa bentuk angka, yaitu : a.
Desimal
Untuk menuliskan angka dalam bentuk desimal bisa digunakan tanda “D” pada akhir angka tersebut atau bisa juga tidak diberi tanda sama sekali. Contoh : 398D atau 398 b.
Biner
Untuk menuliskan angka dalam bentuk biner (0......1), harus ditambahi tanda “B” pada akhir angka tersebut. Contoh : 11001100B c.
Hexadesimal
Untuk menuliskan angka dalam bentuk hexadesimal (0..9,A..F), harus ditandai dengan “H” pada akhir angka tersebut. Perlu diperhatikan bahwa bila angka pertama dari hexa berupa karakter (A..F) maka angka nol harus ditambahkan didepannya. Bila hal ini tidak dilakukan, assembler akan menganggapnya sebagai suatu LABEL, bukannya sebagai nilai hexa. Contoh : 0A12H, 0CCH
d.
Karakter
Penulisan karakter atau string diapit oleh tanda petik dua (“..”) atau tanda petik satu (‘...’). Contoh : “Hai nama saya DYAS” atau ‘ini adalah karakter’ 3. Bentuk Label Label didefinisikan dengan ketentuan akhir dari nama label tersebut harus berupa tanda titik dua ( : ). Pemberian nama label bisa menggunakan : a. Huruf
: A...Z (huruf kecil dan kapital tidak dibedakan)
b. Angka
: 0.....9
c. Karakter Khusus : @ . _ $ Nama pada label tidak boleh dipisahkan dengan spasi dan didahului oleh angka. Nama label terpanjang yang dapat dikenali oleh assembler adalah sebanyak 31 karakter. Contoh : MULAI: MOV CX,7 4. Komentar Untuk memberikan suatu komentar pada source file digunakan tanda ( ; ). Apapun yang dituliskan dibelakang tanda titik-koma ( ; ) akan dianggap sebgai komentar. Contoh : MULAI: MOV BX,7 ; memberi nilai 7 pada BX 5. Perintah MOV Perintah MOV digunakan untuk memindahkan/mengcopy nilai atau angka menuju suatu register, variabel, atau memory. Adapun syntax untuk perintah ini adalah : MOV Tujuan,Asal Contoh : MOV AL,9
; masukkan nilai 9 pada AL
MOV AH,AL
; nilai AL=9 dan AH=9
MOV AX,9
; AX=AH+AL hingga AH=0 dan AL=9
Keterangan program diatas : Pada baris pertama (MOV AL,9), artinya kita memberikan nilai 9 pada register AL. Kemudian pada garis kedua (MOV AH,AL) kita mengcopykan nilai register AL untuk AH, jadi nilai register AL dan AH adalah sama-sama 9. Pada baris ketiga (MOV AX,9) kita memberikan register AX nilai 9, Karena AX terdiri atas AH dan AL, maka register AH akan bernilai nol ( 0 ), sedangkan AL akan bernilai 9. 6. Perintah INT Dalam pemrograman assembler, kita akan banyak sekali menggunakan interupsi untuk membantu kita dalam mengerjakan suatu pekerjaan. Untuk menghasilkan suatu interupsi digunakan perintah INT dengan syntax : INT NoInt NoInt adalah nomor interupsi yang ingin dihasilkan.
Contoh : INT 21H ; maka interupsi 21h akan segera terjadi. MEMBUAT PROGRAM COM 1.
MODEL PROGRAM COM
untuk membuat program .com yang hanya menggunakan 1 segment, bisa anda guanakan model program seperti berikut : --------------------------------------------------------------------------------------------ORG 100H LABEL1: JMP LABEL2 .......................................... .....tempat data program..... .......................................... LABEL2: .......................................... .....tempat data program..... .......................................... INT 20H END --------------------------------------------------------------------------------------------Keterangan : -
ORG 100H Pada program COM perintah ini akan selalu digunakan. Perintah ini digunakan untuk memberitahukan assembler supaya program pada saat dijalankan (diload memory) ditaruh pada offset ke 100h (256 byte). Dapat dikatakan juga bahwa kita menyediakan 100h byte kosong pada saat program dijalankan.
-
JMP Perintah JMP (JUMP) ini digunakan untuk melompat menuju tempat yang ditunjukkan oleh perintah JUMP. Adapun syntaxnya adalah JUMP Tujuan dimana tujuannya dapat berupa label seperti bagan diatas.
-
INT 20H Perintah INT adalah suatu perintah untuk menghasilkan suatu interupsi, dengan syntax INT NoInt. Interupsi 20h berfungsi untuk mengakhiri program dan menyerahkan kendali sepenuhnya kepada DOS.
MENCETAK HURUF Bila dihasilkan interupsi 21h apa yang akan dikerjakan oleh komputer ?. Jawabnya, ada banyak sekali kemungkinan. Pada saat terjadi interupsi 21h maka pertama-tama yang dilakukan komputer adalah melihat isi atau nilai apa yang terdapat pada register AH. Misalkan bila nilai AH adalah 2 maka komputer akan mencetak sebuah karakter, berdasarkan kode ASCII yang terdapat pada register DL. Bila nilai pada register AH bukanlah 2, pada saat dilakukan interupsi 21h maka yang dikerjakaan oleh komputer akan lain lagi. Dengan demikian kita bisa mencetak sebuah karakter yang diinginkan dengan meletakkan angka 2 pada register AH dan meletakkan kode ASCII dari karakter yang ingin dicetak pada register DL sebelum menghasilkan interupsi 21h. ORG 100h PROSES : MOV AH,02h MOV DL,'A'
; Nilai servis ntuk mencetak karakter ; DL = Karakter ASCII yang akan dicetak
INT 21h
; Cetak karakter !!
INT 20h
; Selesai ! kembali ke DOS
END PROSES
MENCETAK KARAKTER BESERTA ATRIBUT Sebuah karakter disertai dengan warna tentunya akan lebih menarik. Untuk itu anda bisa menggunakan interupsi ke 10h dengan aturan pemakaiannya : INPUT AH = 09h AL = Kode ASCII dari karakter yang akan dicetak BH = Nomor halaman(0 untuk halaman 1) BL = Atribut atau warna dari karakter yang akan dicetak CX = Banyaknya karakter tersebut akan dicetak Setelah semua register dimasukkan nilainya maka lakukanlah interupsi 10h. Perlu anda perhatikan bahwa interupsi ini mencetak karakter tanpa menggerakkan kursor. ORG 100h PROSES : MOV AH,09h MOV AL,'A'
; Nilai servis untuk mencetak karakter ; AL = Karakter yang akan dicetak
MOV BH,00h
; Nomor Halaman layar
MOV BL,93h
; Warna atau atribut dari karakter
MOV CX,09h
; Banyaknya karakter yang ingin dicetak
INT 10h
; Laksanakan !!!
INT 20h
; Selesai ! kembali ke DOS
END PROSES
TUGAS ! 1. Cari artikel tentang 8086 mikro-processor 2. Cari artikel tentang Emu8086 beserta perkembangannya ! 3. Cari artikel tentang Bahasa Assembly meliputi : a. pengertian/definisi bahasa assembly; b. kelebihan dan kekurangan bahasa assembly; c. zaaz