String adalah jenis data yang terdiri atas kumpulan karakter, angka maupun simbol. Pada operasi ini register SI dan DI punya peranan khusus.
SI dipakai untuk mencatat alamat dari sumber string, sedangkan DI digunakan untuk mencatat alamat atau tempat hasil manipulasi string.
Perintah yang dipakai:
CLD, STD, CMPS, CMPSB, LODS, LODSB, LODSW, MOVS, MOVSB, MOVSW, REP, REPE, STOS, STOSB
Pengkopian STRING
MOVS dipakai untuk mengkopi data dari DS:SI menuju ke ES:DI, Hasil yang dicopy dapat dicetak ke layar.
Contoh:
.model small
.code
org 100h
MULAI: JMP START
KAL DB ‘STMIK BANI SALEH$’
BUFF DB 17 dup(?)
START: LEA SI, KAL ;pindahkan isi KAL ke register SI
LEA DI, BUFF ;pindahkan isi BUFF ke registrer DI
CLD ;Clear Direction Flag menentukan instruksi
;pada register SI dan DI secara otomatis
;bertambah 1 (diincrement)
MOV CX, 18 ;looping sebanyak 18 x
Ulang: MOVS ES:BUFF, KAL ;copy isi string KAL ke BUFF
LOOP Ulang ;kembali ke ulang
MOV AH, 09h
LEA DX, BUFF ;pindahkan isi BUFF ke register DX
INT 21h ;cetak isi DX ke layar
INT 20h
END MULAI
Mencetak kalimat dengan atributnya
Untuk mencetak kalimat dengan atribut terdapt beberapa persyaratan antara lain:
Menggunakan fungsi dari BIOS melalui INT 10H
Nilai AX = 1300h
Nilai register BL merupakan nilai atribut yang ingin ditampilkan
Nilai register BH merupakan halaman tampilan
Nilai DL adalah posisi kolom layar yang akan dicetak
Nilai DH adalah posisi baris layar yang akan dicetak
Fungsi ini tidak mengenal batas tulisan “$” seperti INT 21H nomor service 09H sehingga kita harus mengisi nilai CX sebanyak karakter dalam kalimat. Sedangkan register ES:BP digunakan untuk mencatat alamat dari kalimat yang akan dicetak di layar.
Pengaturan atribut
Nilai atribut untuk mencetak kalimat di layar diatur agar mendapatkan hasil sesuai yang diharapkan misalnya sebagai berikut :
q Nilai atribut tulisan disimpan dalam register BL=10010101B
q Nilai AX= 1300H untuk nomor service AH=13H dan AL=00H
q Nilai BH=0 untuk halaman tampilan 0
q Nilai DL=20 untuk posisi kolom di layar
q Nilai DH=12 untuk posisi baris di layar
q Nilai CX=35 untuk banyaknya kalimat yang dicetak di layar
Nilai di atas, kecuali untuk AX=1300H boleh diubah/dimodifikasi sesuai dengan permintaan pemakai.
Contoh:
;Program untuk mencetak kalimat dengan atributnya
;Pengaturan atribut pada nilai BL=95H atau BL=10010101B
;halaman 0 pada BH
;baris 12 di layar
;kolom 20 di layar
.model small
.code
org 100h
MULAI: JMP AWAL
KAL DB ‘MENULIS KALIMAT DENGAN ATRIBUTNYA’
AWAL:
MOV AX,1300H ;service 13H subfungsi AL=0
MOV BL,10010101B ;atribut tulisan
MOV BH,00 ;halaman tampilan
MOV DL,20 ;posisi kolom
MOV DH,12 ;posisi baris
MOV CX,35 ;banyak karakter yang akan dicetak
LEA BP, KAL ;ES:BP untuk meletakan alamat string
INT 10H
INT 20H
END MULAI
· Program membuat kalimat menggunakan pelayanan interupsi 21H service number 09H dan menyimpan isi kalimat pada Label DB (Define Byte), DW (Define Word), DD (Define Double Word), DQ (Define Quad Word).
· Untuk pembuatan program mencetak beberapa kalimat yang berurutan ke bawah, maka pada setiap label yang diberi tanda $ harus dibubuhkan angka 13, 10 untuk turun baris dan ditempatkan pada kolom awal ( ,13,10,’$’).
· Mencetak kalimat di layar dapat dilakukan dengan berbagai macam cara. Penggunaan INT 10H untuk mengatur operasi layar agar mencetak kalimat menjadi lebih teratur sesuai letak baris dan kolom di layar.
· Operasi string digunakan untuk manipulasi string, peletakan alamat string, pengcopian string ke buffer atau tempat sementara yang ditentukan oleh kita.
· Salah satu cara mencetak kalimat di layar antara lain dengan atribut memanfaatkan nomor pelayanan AH=13H INT 10H
· Pengaturan atribut untuk mencetak di layar dipakai untuk menghasilkan tampilan berupa kalimat yang disimpan dalam byte, word atau double word dengan meletakkan string pada register ES:BP sebagai pencatat alamat string.