Operasi String
String Tipe data yang berisi kumpulan karakter, simbol, angka Array of char Register : SI (Source Index) : mencatat alamat dari string sumber yang akan dimanipulasi DI (Destination Index) : mencatat alamat hasil manipulasi Menggunakan indexing addressing mode
Operasi String Flag direction : Perpindahan : Perbandingan : CLD, STD Perpindahan : MOVS, LODS, STOS Perbandingan : CMPS Perulangan : REP Pencarian : SCAS
Direction Flag CLD : Clear direction flag Flag : DF Membuat direction flag berisi 0. Bila direction flag berisi 0 maka pembacaan string akan berlangsung dari memory rendah ke tinggi. Sebaliknya bila direction flag bernilai 1 maka string akan diproses dari memory tinggi ke rendah.
Direction Flag STD : Set direction flag Flag : DF Untuk menjadikan Direction flag menjadi 1. Intruksi ini merupakan kebalikan dari intruksi CLD Arah pembacaan dari alamat memory tinggi ke rendah
Perpindahan MOVS : Memindahkan string dari DS:SI ke ES:DI Register SI dan DI akan bertambah atau berkurang tergantung dari DF Perpindahan bisa dilakukan per byte, per word, atau per double word Sintak : MOVS Tujuan, Asal Tujuan dan Asal bertipe byte => MOVS menjadi MOVSB Tujuan dan Asal bertipe word => MOVS menjadi MOVSW Tujuan dan Asal bertipe double word => MOVS menjadi MOVSD
Perpindahan LODS : Mengambil string dari DS:[SI] menuju ke AL, AX, atau EAX Akan diterjemahkan ke 3 bentuk : LODSB : DS:[SI] ke AL LODSW : DS:[SI] ke AX LODSD : DS:[SI] ke EAX
Perpindahan STOS : Mengisi string dari AL, AX, EAX ke ES:[DI] Akan diterjemahkan ke 3 bentuk : STOSB : AL ke ES:[DI] STOSW : AX ke ES:[DI] STOSD : EAX ke ES:[DI] Arah penyimpanan bergantung DF
Perbandingan CMPS : Membandingkan data string pada DS:[SI] dan ES:[DI] secara per byte, per word, ataupun per double word Flag : OF, SF, ZF, AF, PF, CF Sintak : CMPS Akan diubah ke CMPSB, CMPSW, dan CMPSD Arah perbandingan tergantung DF Biasanya mengikuti REP
Perulangan Tipe : REP : REPE : Tak Bersyarat : REP Bersyarat : REPE, REPZ, REPNE, REPNZ REP : Mengulang suatu perintah selama CX<>0 Tidak ada flag terpengaruh REPE : Mengulang suatu perintah selama CX<>0 atau jika ada karakter yang beda (ZF=0)
Perulangan REPZ : REPNE : REPNZ : Sama dengan REPE Mengulang suatu perintah sampai dengan CX=0 atau ada karakter yang sama (ZF = 1) REPNZ : Sama dengan REPNE
Pencarian SCANS : Membandingkan data pada AL, AX, atau EAX dengan data pada ES:DI Sintak : SCANS Operand Flag : OF, SF, ZF, AF, PF, CF Mengikuti instruksi perulangan bersyarat Akan diubah ke SCASB, SCASW, atau SCASD sehingga tidak perlu operand