Operasi String menggunakan perintah MOVSB


 




1. Gambar Simulasi [Kembali]
program MOVSB dapat disimulasikan menggunakan emu8086 :

Tampilan .asm





3. Penjelasan Program [Kembali]

MOVSB yang berguna untuk memindahkan suatu string dari posisi memory DS:[SI] ke posisi memory ES:[DI] sebanyak 1 byte setiap kali operasi. Setelah melakukan operasi tersebut, register DI dan SI akan bertambah atau berkurang satu secara otomatis.

Penjelasan program perbaris :

1.Baris 01 dan 02 menandakan bahwa file disimpan di direktori C, serta program ini bertujuan untuk melakukan peng-copy-an string

2."JMP mulai" mengartikan bahwa,setiap kali lompat nilai CX berkurang satu dan sampai CX = 0 maka tidak bisa melompat lagi. "mulai" merupakan memori yang
digunakan untuk beroperasi. CX merupakan register yang dapat melakukan counter untuk meletakkan jumlah lompatan pada loop yang dilakukan.

3. DB mengartikan bahwa data yang disimpan dapat dimodifikasi. Penulisan sebelum DB, merupakan label. Serta penulisan setelah DB, merupakan isi variabel.
DB mendefinisikan variabel per byte.


4.Penulisan 12,?,12 DUP(?)pada baris ke-5 mengartikan bahwa (dari kolom pertama) :

  • 12 (nn) = jumlah karakter yang dapat dimasukkan sebanyak 12+1, yakni 13 karakter yang dimana 1 adalah tempat OD hexa. 
  • ? = indikator dari berapa banyak karakter yang dimasukkan (tidak dengan OD hexa).
    tanda tanya (?) mengartikan bahwa satu byte memory yang tidak diisi.
  • 12 DUP(?) = berguna untuk menyatakan berapa tempat yang harus disediakan yaitu nn * 1 tempat kosong

5.Maksud dari MOV AH, 09H adalah AH diisi dengan service number dari interrupt.

6.MOV DX, OFFSET kata, merupakan register untuk membaca isi data yang diberi label "kata"

7.Interrupt 21h merupakan interrupt yang berisi fungsi yang sangat kompleks yang diberikan oleh DOS (Disk Operating System).

8.MOV AH,0AH mengartikan bahwa mengisi data sebanyak 10 kedalam register AH.

9.PUSH berfungsi untuk memasukkan isi suatu register/variabel ke stack.Stack adalah tempat peletakan sementara isi register.
Stack pada file.COM terdapat diakhir segment dan ketika pertama kali dijalankan program penunjuk stack (SP) akan langsung ke byte terakhir dari segment.
DS adalah segment variabel tempat menampung kata yang akan dicetak

10.POP merupakan perintah untuk Untuk mengeluarkan isi register/variabel dari stack.d.    ES (Extra Segment) Register adalah berfungsi  untuk pemograman pada saat melakukan operasi ke segment lain.

11. INC SI mengartikan bahwa menambahkan SI dengan 1. Sehingga totalnya menjadi 13 hexa.

12.XOR CH, CH mengartikan bahwa proses XOR terhadap CH yang hasilnya juga akan ditampung oleh CH.

13.CLD adalah perintah untuk menset direction flag menjadi 0 atau 1.

14.MOVSB berguna untuk memindahkan suatu string dari posisi memory DS:[SI] ke posisi memory ES:[DI] sebanyak 1 byte setiap kali operasi.
Setelah melakukan operasi tersebut, register DI dan SI akan bertambah atau berkurang satu secara otomatis.
Tampilan emulator

 Ketika program dalam keadaan running :

 Ketika running, program dites dengan menginputkan kata "adivr"


hasil running :


setelah dirunning, terjadi pengulangan kata "adiv" sebanyak 2 kali (adivradivr) karena ada perintah LOOP dan batas jumlah huruf hanya 12 sehingga pengulangan hanya terjadi 2 kali.


1. File simulasi

2. File video

Tidak ada komentar:

Posting Komentar