Professional Documents
Culture Documents
Materi ke-10
BAB XIX
OPERASI PADA STRING
;/========================================\;
; PROGRAM : STRING1.ASM ;
; AUTHOR : S’to ;
;\========================================/;
.MODEL SMALL
.CODE
ORG 100h
MOV AH,09 ;
LEA DX,Buffer ;
INT 21h ; Cetak data pada buffer
INT 20h
END TData
Pada program 19.1. dapat anda lihat bagaimana proses pengcopyan data
'Kalimat' ke 'buffer'. Bila program 19.1. dijalankan maka dilayar akan
ditampilkan:
Donald Duck
Hasil yang tercetak merupakan data pada buffer yang diambil pada variabel
'kalimat'. Perintah CLD digunakan untuk memastikan supaya arah proses
menaik(SI dan DI ditambah setiap kali operasi).
MOVSB
;/========================================\;
; PROGRAM : STRING2.ASM ;
; AUTHOR : S’to ;
;\========================================/;
.MODEL SMALL
.CODE
ORG 100h
INT 20h
END TData
;/=======================================\;
; PROGRAM : CMPS.ASM ;
; AUTHOR : S’to ;
; FUNGSI : Menggunakan perbandingan;
; pada string ;
;\=======================================/;
.MODEL SMALL
.CODE
ORG 100h
;/==========================================\;
; Program : SCAN.ASM ;
; Author : S’to ;
; Fungsi : Melihat proses pencarian ;
; string (Scan) ;
;\==========================================/;
.MODEL SMALL
.CODE
ORG 100h
;/============================================\;
; Program : CD-ANGKA.ASM ;
; Author : S’to ;
; Fungsi : Mencetak angka yang bernilai ;
; antara 0 sampai 65535 dalam ;
; format desimal ;
;\============================================/;
.MODEL SMALL
.CODE
ORG 100h
TData :
JMP Proses
Test_Angka DW 65535 ; Angka yang akan dicetak
Proses:
MOV AX,Test_Angka ; AX = angka yang akan dicetak
MOV BX,10 ; BX = penyebut
XOR CX,CX ; CX = 0
Ulang :
XOR DX,DX ; Cegah sisa bagi menjadi pembilang !
DIV BX ; Bagi angka yang akan dicetak dengan 10
PUSH DX ; Simpan sisa bagi dalam stack
INC CX ; CX ditambah 1
CMP AX,0 ; Apakah hasil bagi sudah habis ?
JNE Ulang ; Jika belum, ulangi lagi !
Cetak :
POP DX ; Ambil 1 angka yang disimpan
ADD DL,'0' ; Ubah angka tersebut dalam kode ASCII
MOV AH,02 ;
INT 21h ; Cetak angka tersebut
LOOP Cetak ; ulangi
INT 20h
END TData
;/================================================
\;
; Program : PRIMA.ASM ;
; Author : S’to ;
; Fungsi : Mencari dan menampilkan angka ;
; prima dari 0 sampai 1000 ;
;\================================================
/;
.MODEL SMALL
.CODE
ORG 100h
Awal :
Cetak_Klm Header
Proses :
MOV AX,Batas ; Jika bilangan yang dicek
CMP AX,I ; sudah sama dengan Batas
JE Exit ; maka selesai
ForI :
MOV J,2 ; J untuk dibagi oleh I
MOV Prima,0 ; Prima = Tidak
ForPrima:
MOV AX,Prima ;
CMP AX,0 ; Apakah prima = Tidak ?
JNE TambahI ; jika Prima = Ya, lompat ke TambahI
MOV AX,I ;
CMP AX,J ;I=J?
JNE Tidak ; Jika tidak sama, lompat ke Tidak
;/================================================
======\;
; Program : CH-ANGKA.ASM ;
; Author : S’to ;
; Fungsi : Mencetak angka yang bernilai antara ;
; 0000 sampai 255 <FFh> dalam format ;
; hexadesimal ;
;\================================================
======/;
.MODEL SMALL
.CODE
ORG 100h
TData :
JMP Proses
Tabel_Hex DB '0123456789ABCDEF'
Test_Angka DB 255 ; Angka yang akan dicetak 255=FFh
Proses:
SUB BH,BH ; Jadikan BH=0
MOV BL,Test_Angka ; BL = angka yang akan dicetak
PUSH BX ; Simpan angka tersebut
INT 20h
END TData