27/10/2010
27/10/2010
; Fungsi : Mencetak String ; ; dengan Int 21 servis 9 ; .MODEL SMALL .CODE ORG 100h Awal: JMP Proses Kal0 DB 'PROSES PENCETAKAN STRING ',13,10,'$' Kal1 DB ' 'DIBELAKANG TANDA $ TIDAK BISA DICETAK Proses: MOV AH,09h ; Servis ke 9 MOV DX,OFFSET Kal0 ; Ambil Alamat Offset Kal0 INT 21h ; Cetak perkarakter sampai tanda $ LEA DX,Kal0 ; Ambil Alamat Offset Kal0 INT 21h ; Cetak perkarakter sampai tanda $ LEA DX,Kal0+7 ; Ambil Alamat Offset KAl0+7 INT 21h ; Cetak perkarakter sampai tanda $ LEA DX,KAL1 ; Ambil Offset kal1 INT 21h ; Cetak perkarakter sampai ketemu $ INT 20h ; Selesai, kembali ke DOS END Awal
27/10/2010 3
Pada saat program dijalankan, maka dilayar akan ditampilkan: PROSES PENCETAKAN STRING PROSES PENCETAKAN STRING DIBELAKANG TANDA
Pada saat pendefinisian untuk variabel "KAL0" kita menambahkan tanda 13 dan 10. Kedua tanda ini merupakan karakter kontrol untuk pindah baris(tanda 10) dan menuju kolom 0(tanda 13). Pada akhir dari setiap kalimat yang ingin dicetak harus kita tambahkan dengan karakter "$". Karakter ini akan dipakai sebagai tanda akhir dari kalimat. Karena karakter "$" dijadikan sebagai tanda akhir dari kalimat yang ingin dicetak, maka pada proses pencetakan karakter yang kedua hanya kalimat "DIBELAKANG TANDA" yang tercetak. Sisa kalimatnya, yaitu "TIDAK BISA DICETAK tidak tercetak keluar, karena terletak dibelakang tanda "$". Dengan demikian, bila kita ingin mencetak kalimat yang mengandung tanda "$", harus digunakan fungsi yang lain, misalnya mencetak kalimat dengan perkarakter melalui interupsi 21 fungsi 2.
27/10/2010
Pada program diatas, kita telah menggunakan 2 buah karakter kontrol, yaitu 10(LF) dan 13(CR). Karakter kontrol yang tersedia untuk operasi pada video yang sering digunakan terdapat 5, yaitu 07, 08, 09, 10 dan 13
---------------------------------------------------------------CODE NAMA FUNGSI ---------------------------------------------------------------07 Bel Memberikan suara BEEP 08 Backspace(BS) Memindahkan kursor 1 kolom ke belakang 09 Horisontal Tab Memindahkan kursor 8 kolom ke kanan 10 Line Feed(LF) Memindahkan kursor 1 baris ke bawah 13 Carriage Return Memindahkan kursor menuju awal baris
----------------------------------------------------------------
27/10/2010
.MODEL SMALL .CODE ORG 100h Awal: JMP Proses Kal0 DB ' Menulis kalimat dengan Atributnya ' Proses: MOV Ah,13 h ; Servis 13h subfungsi 00 MOV BL,10010101b ; Atribut tulisan MOV BH,00 ; Halaman tampilan 0 MOV DL,20 ; Posisi X MOV DH,12 ; Posisi Y MOV CX,35 ; Banyaknya karakter dalam string LEA BP,Kal0 ; ES:BP alamat string INT 10h ; Cetak kalimat ! INT 20h ; Selesai, kembali ke DOS END Awal
27/10/2010 7
Bila program ini dijalankan, maka layar pada posisi kolom ke 20 dan baris ke 12 akan terdapat tulisan: Menulis kalimat dengan Atributnya Atribut atau warna menggunakan 1 byte memory, yang akan menandakan warna tulisan dan warna dasar dari karakter yang akan tercetak. Byte atribut ini digunakan dengan masing-masing bitnya, dimana setiap bit mencatat warnanya masing-masing.
27/10/2010 8
Catatan:
27/10/2010
Untuk menghidupkan warna yang diinginkan tinggal menjadikan bit tersebut menjadi satu. Sebagai contohnya bila diinginkan warna tulisan Biru dengan warna dasar Hijau, maka anda tinggal menghidupkan bit ke 0 dan 5 atau dengan angka 00100001b(21h). Untuk menjadikannya berintensitas tinggi dan berkedip anda juga tinggal menjadikan bit ke 3 dan 7 menjadi satu(10101001b). Bila anda menghidupkan bit ke 0,1 dan 2 menjadi satu dan mematikan bitbit lainnya maka anda akan mendapatkan campuran dari ketiga warna tersebut(Putih) untuk warna tulisan dan warna hitam untuk warna dasar. Inilah warna normal yang biasa digunakan, yaitu warna dengan atribut 7.
27/10/2010 10
OPERASI PENCABANGAN
A. BANDINGKAN DAN LOMPAT
1. LOMPAT TANPA SYARAT Perintah JMP(Jump), sudah pernah kita gunakan, dimana perintah ini digunakan untuk melompati daerah data Program. Perintah JMP digunakan dengan syntax: JMP Tujuan Perintah JMP ini dikategorikan sebagai Unconditional Jump, karena perintah ini tidak menyeleksi keadaan apapun untuk melakukan suatu lompatan. Setiap ditemui perintah ini maka lompatan pasti dilakukan.
27/10/2010 11
Perintah CMP(Compare) digunakan untuk membandingkan 2 buah operand, dengan syntax: CMP Operand1,Operand2 CMP akan membandingkan operand1 dengan operand2 dengan cara mengurangkan operand1 dengan operand2. CMP tidak mempengaruhi nilai Operand1 dan Operand2, perintah CMP hanya akan mempengaruhi flags register sebagai hasil perbandingan. Perlu anda ingat bahwa CMP tidak dapat membandingkan antar 2 lokasi memory.
27/10/2010 12
Kondisi
Lompat, jika Operand1 > Operand2 untuk bilangan tidak bertanda Lompat, jika Operand1 > Operand2 untuk bilangan bertanda Lompat, jika Operand1 = Operand2
13
JNE <Jump If Not Lompat, jika Operand1 tidak sama dengan Equal> Operand2 JB <Jump If Below> Lompat, jika Operand1 < Operand2 untuk bilangan tidak bertanda JL <Jump If Less> Lompat, jika Operand1 < Operand2 untuk bilangan bertanda
JBE <Jump If Below Lompat, jika operand1 <= Operand2 untuk or Equal> bilangan tidak bertanda JLE <Jump If Less or Equal> Lompat, jika Operand1 <= Operand2 untuk bilangan bertanda
JAE <Jump If Above Lompat, jika Operand1 >= Operand2| untuk or Equal> bilangan tidak bertanda JGE <Jump If Greater or Equal
27/10/2010
Pada tabel diatas dapat dilihat bahwa terdapat dua operasi yang berbeda, yaitu operasi bilangan bertanda dan tidak bertanda. Bilangan bertanda adalah bilangan yang akan membedakan bilangan negatif dan positif (Mis. 37 dan -37). Sedangkan bilangan tidak bertanda adalah bilangan yang tidak akan membedakan positif dan negatif, jadi angka -1 untuk operasi bilangan bertanda akan dianggap FFh pada bilangan tidak bertanda.
27/10/2010
15
.MODEL SMALL .CODE ORG 100h TData: JMP Proses BilA DB 67 BilB DB 66 Kal0 DB 'Bilangan A lebih kecil dari bilangan B $' Kal1 DB 'Bilangan A sama dengan bilangan B $' Kal2 DB 'Bilangan A lebih besar dari bilangan B$' Proses: MOV AL,BilA ; Masukkan bilangan A pada AL CMP AL,BilB ; Bandingkan AL(BilA) dengan Bilangan B JB AKecil ; Jika BilA < BilB, lompat ke AKecil JE Sama ; Jika BilA = BilB, lompat ke Sama JA ABesar ; Jika BilA > BilB, lompat ke ABesar Akecil:
27/10/2010 16
LEA DX,Kal0 ; Ambil offset Kal0 JMP Cetak ; Lompat ke cetak Sama: LEA DX,Kal1 ; Ambil offset Kal1 JMP Cetak ; Lompat ke cetak ABesar: LEA DX,Kal2 ; Ambil offset Kal2 Cetak: MOV AH,09 ; Servis untuk mencetak kalimat INT 21h ; Cetak kalimat !! EXIT: INT 20h ; Kembali ke DOS. END TData
27/10/2010
17
SEKIAN
dan
TERIMA KASIH
Sampai Ketemu di Pertemuan ke 8 berikutnya!!!!!
27/10/2010
18
Takdir Tamba