120 likes | 319 Views
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.
E N D
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 : • 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 : • 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 : • Sama dengan REPE • REPNE : • 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