Anda di halaman 1dari 18

MENCETAK KALIMAT

Kuliah ke 7 Bahasa Rakitan

27/10/2010

MENCETAK KALIMAT DENGAN FUNGSI DOS


Untuk mencetak kalimat, bisa digunakan interupsi 21 fungsi 9 dengan aturan:
INPUT AH = 9 DS:DX = Alamat String tersebut
CATATAN = Karakter '$' dijadikan tanda akhir tulisan

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

MENCETAK KALIMAT DENGAN ATRIBUTNYA


Untuk mencetak kalimat dengan atributnya bisa digunakan fungsi dari BIOS, melalui interupsi 10h. Adapun yang harus anda persiapkan adalah: register AX diisi dengan 1300h, BL diisi dengan atribut yang ingin ditampilkan, BH diisi dengan halaman tampilan, DL diisi dengan posisi X tempat kalimat tersebut akan tercetak sedangkan DH diisi dengan posisi Y-nya. Karena fungsi ini tidak mengenal batas tulisan "$" seperti interupsi 21h servis 9, maka kita harus mengisikan CX dengan banyaknya karakter dalam kalimat. Register ES:BP digunakan untuk mencatat alamat dari kalimat yang ingin dicetak.
27/10/2010 6

.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

Adapun spesifikasinya adalah:


Warna Dasar Bit Ke 7 BL 6 R 5 G 4 B 3 I Warna Tulisan 2 R 1 G 0 B

Catatan:

BL = Blink atau berkedip R = Merah G = Hijau B = Biru I = Intensitas warna


9

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

2. MEMBANDINGKAN DENGAN CMP

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

3. LOMPAT YANG MENGIKUTI CMP


Perintah CMP yang hanya mempengaruhi flag register, biasanya diikuti dengan perintah lompat yang melihat keadaan pada flags register ini. Jenis perintah lompat yang biasanya mengikuti perintah CMP, terdapat 12 buah seperti pada tabel berikut:
Perintah Lompat JA <Jump If Above> JG <Jump If Greater> JE <Jump If Equal>
27/10/2010

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

Lompat, jika Operand1 >= Operand2 Equal> untuk bilangan bertanda


14

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

Anda mungkin juga menyukai