90 likes | 296 Views
OPERASI PADA STRING. OPERASI PADA STRING. Instruksi Pada String. String adalah suatu jenis data yang terdiri atas kumpulan karakter, angka maupun simbol. Register yang digunakan dalam operasi string ini adalah register SI dan DI.
E N D
OPERASI PADA STRING Instruksi Pada String String adalah suatu jenis data yang terdiri atas kumpulan karakter, angka maupun simbol. Register yang digunakan dalam operasi string ini adalah register SI dan DI. Register SI (Source Index) digunakan untuk mencatat alamat dari sumber string yang akan dimanipulasi. Register DI (Destination Index) mencatat alamat atau tempat hasil dari manipulasi string
Pencopian dan Arah Proses Operasi String CLD (Clear Direction Flag) berfungsi untuk menaikkan nilai SI dan DI (arah proses menaik) STD (Set Direction Flag) berfungsi untuk menurunkan nilai SI dan DI (arah proses menurun) .MODEL SMALL .CODE ORG 100H DATA: JMP MULAI KAL DB ‘STMIK$’ BUF DB 5 DUP(?) MULAI: LEA SI,KAL LEA DI,BUF CLD MOV CX,5 ULANG: MOVS ES:BUFFER,KALIMAT ; BOLEH DITULIS MOVSB LOOP ULANG MOV AH,09 LEA DX,Buffer INT 21h ; Cetak data pada buffer INT 20H END DATA
Pengulangan Pada String Selain menggunakan pengulangan yang biasa digunakan bisa juga digunakan pengulangan bersyarat seperti REP, REPE, REPZ dll. .MODEL SMALL .CODE ORG 100H DATA: JMP MULAI KAL DB ‘STMIK$’ BUF DB 5 DUP(?) MULAI: LEA SI,KAL LEA DI,BUF CLD MOV CX,5 REP MOVS ES:BUF,KAL ; BLH DITULIS MOVSB MOV AH,09 LEA DX,Buffer INT 21h ; Cetak data pada buffer INT 20H END DATA
Perbandingan Pada String Pada dasarnya perbandingan string sama dengan pencopian string. Pada perbandingan string juga terdapat bentuk CMPS yang dapat berupa CMPSB (perbandingan byte), CMPSW (perbandingan word) dan CMPSD (perbandingan double word). CETAK MACRO KAL MOV AH,09H LEA DX,KAL INT 21H ENDM .MODEL SMALL .CODE ORG 100H DATA: JMP MULAI KAL1 DB ‘akakjdjajdbk’ KAL1 DB ‘akakjdjajdbk’ PESAN1 DB ‘Kedua kalimat sama$’ PESAN2 DB ‘Kedua kalimat tidak sama$’ MULAI: LEA SI,KAL1 LEA DI,KAL2 CLD MOV CX,12 ULANG: REP CMPSB JNZ TDKSAMA CETAK PESAN1 JMP EXIT TDKSAMA: CETAK PESAN2 EXIT: INT 20H END DATA
Operasi Scan Pada String Operasi scan pada string digunakan untuk membandingkan nilai pada register AL, AX atau EAX (80386) dengan data pada ES:DI. CETAK MACRO KAL MOV AH,09H LEA DX,KAL INT 21H ENDM .MODEL SMALL .CODE ORG 100H DATA: JMP MULAI CARI DB ‘akakkasdjadkdjfjdjajdbk’ PESAN1 DB ‘Karakter ‘’s’’ yang dicari ketemu! $’ PESAN2 DB ‘Karakter ‘’s’’ yang dicari tidak ketemu! $’ MULAI: LEA DI,CARI MOV AL,’s’ MOV CX,23 REPNE SCASB JNZ TDK_KETEMU CETAK PESAN1 JMP EXIT TDK_KETEMU:CETAK PESAN2 EXIT: INT 20H END DATA
Mengambil dan Mengisi String Operasi mengambil dan mengisi string ada dua operasi yang mempunyai fungsi yang berlawanan. LODS adalah bentuk umum untuk mengambil string dari lokasi memory DS:[SI] menuju AL, AX atau EAX. STOS adalah bentuk umum untuk mengisi string dari AL, AX atau EAX menuju ES:[DI]. Jika Direction Flaf bernilai 0 (dengan CLD) maka setelah instruksi STOS dijalankan register DI akan ditambah secara otomatis, sebaliknya jika Direction Flag bernilai 1 (dengan STD) maka register DI akan dikurang secara otomatis. Keterangan: lihat contoh program pada bagian praktikum operasi string