Program Aplikasi String Dengan CMPSB
2.Prinsip Kerja [kembali]
CMPSB yaitu membandingkan string satu byte yang terdapat diposisi ES:[DI] dengan posisi DS:[SI]. setiap selesai membandingkan, maka DI dan SI akan bertambah atau berkurang satu
1. Baris 1 menjelasankan tentang pernyataan pengcopyan string
2.Baris 2, JMP (Jump) merupakan perintah untuk melompati daerah program. Perintah JMP digunakan dengan syntax : JMP Tujuan, yang menjadi tujuannya adalah kata MULAI. Perintah JMP ini dikategorikan sebagai Unconditional Jump, karena perintah ini tidak menyeleksi keadaan apapun untuk melakukan suatu lompatan. Setiap ditemui perintah ini, lompatan pasti dilakukan.
3. Baris 3, DB (Define Byte) menyatakan bahwa data yang disimpan dapat dimodifikasi. DB berfunsgi sebagai register, yang mana fungsi register sendiri adalah sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi.
4. Penulisan 4,?,4 DUP(?) pada baris ke 4 menyatakan bahwa :
. 4 (nn) = jumlah karakter yang dapat dimasukkan sebanyak 4+1, yaitu 5 karakter yanng dimana 1 adalah tempat OD hexa.
. ? = Indikator dari berapa banyak karakter yang dimasukkan (tidak dengan OD hexa). Tanda tanya (?) mengartikan bahwa satu byte memori yang tidak diisi.
. 4 DUP(?) = berguna untuk menyatakan berapa tempat yang harus disediakan yaitu nn, 4 tempat kosong
5. Maksud dari MOV AH pada baris ke 8 adalah : MOV yang berarti pemindahan nilai, MOV AH, 09H berarti AH=09H.
6. Maksud dari MOV DX kata, pada baris ke 9 adalah : register untuk membaca isi data yang diberi label "kata"
7. Maksud dari INT pada baris ke 10 adalah : INT (Interrupt) merupakan suatu permintaan khusus kepada mikroprosesor untuk melakukan suatu perintah. INT 21H berfungsi menjalankan interupsi nomor 21. Interupsi ini akan mengerjakan sesuai dengan nilai service yang diisikan.
8. MOV AH,0AH pada baris 11 menyatakan bahwa mengisi data sebanyak 10 ke dalam register AH.
9. Pada baris ke 14 terdapat PUSH, yaitu merupakan operasi yang digunakan ketika hendak memasukkan register yang ada pada general purspose register (AX, BX, CX, DX) ke lokasi stack (bagian dari memori yang digunakan untuk menyimpan nilai dari register secara sementara). Sedangkan DS adalah Data Segment berfungsi untuk menampung kata yang akan dicetak.
10. Pada baris ke 15 terdapat POP, yang merupakan perintah yang digunakan untuk mengeluarkan data yang ada pada stack ke general purpose register untuk di eksekusi. Sedangkan ES adalah Extra Segment yang berfungsi untuk pemograman pada saat melakukan operasi ke segment lain.
11. CLD adalah perintah untuk menset direction flag menjadi 0 atau 1.
12. CMPSB berguna untuk memindahkan suatu string dan posisi memori DS:[SI] ke posisi memori ES:[DI] sebanyak 1 byte setiap kali operasi. Setelah melakukan operasi tersebut, register DI dan SI akan bertambah atau berkurang secara otomatis.
Start: JMP MULAI
KATA DB 'password : $'
CUK DB 'CUK'
password1 DB 4,?,4 DUP(?)
salah DB 13,10, 'pass salah!',13,10,13,10,'$'
benar DB 13,10, 'benar !',13,10,13,10,'$'
MULAI: MOV AH, 09H
MOV DX, OFFSET KATA
INT 21H
MOV AH, 0AH
MOV DX, OFFSET password1
INT 21H
PUSH DS
POP ES
MOV DI,OFFSET CUK
MOV SI,OFFSET password1 + 2
MOV cx,03H
CLD
ULANG: CMPSB
JC salah1
LOOP ULANG
MOV AH,09H
MOV DX, OFFSET benar
INT 21H
MOV AH,4CH
INT 21H
salah1 : MOV AH,09H
MOV DX,OFFSET salah
INT 21H
JMP MULAI
4.Video [kembali]

