Tugas 1 mikro

 

 





       


2. Penjelasan Program [kembali]
  • Start: JMP MULAI (instruksi untuk melompat (JMP) ke label MULAI, melewati deklarasi data di bawahnya)
  • KATA        DB 'INPUTKAN KATA MAKSIMUM 12 HURUF  :$' (Mendefinisikan string untuk menampilkan pesan kepada pengguna. Tanda $ di akhir string digunakan sebagai penanda akhir string saat mencetaknya dengan interrupt 21H, fungsi 09H)
  • LABOR_LEI1  DB 12,?,12 DUP(?)  ;11 KARAKTER + 1=INDICATOR (Mendefinisikan buffer untuk menyimpan input dari pengguna. Byte pertama berisi kapasitas maksimum input (12 karakter), byte kedua akan diisi dengan jumlah karakter yang diinputkan oleh pengguna, dan 12 byte selanjutnya digunakan untuk menyimpan karakter input.)
  • GANTI       DB 13,10,'$'(Mendefinisikan string untuk mengatur posisi kursor ke baris berikutnya setelah input dicopy. 13 adalah carriage return (CR) dan 10 adalah line feed (LF).)
  • LABOR_LEI2  DB 12 DUP(?) (Mendefinisikan buffer kosong untuk menyimpan salinan string yang diinputkan oleh pengguna)
  • MULAI: MOV AH, 09H
MOV DX, OFFSET KATA
INT 21H          ;MENCETAK KATA (Memuat nilai 09H ke register AH (untuk mencetak string menggunakan interrupt 21H), kemudian memuat alamat dari pesan KATA ke register DX, dan memanggil interrupt 21H untuk menampilkan pesan ke layar)
  • MOV AH, 0AH
MOV DX, OFFSET LABOR_LEI1
INT 21H         ;AMBIL INPUT DARI KEYBOARD (Memuat nilai 0AH ke AH (untuk membaca input string dari keyboard menggunakan interrupt 21H), kemudian memuat alamat dari LABOR_LEI1 ke DX, dan memanggil interrupt 21H untuk mendapatkan input dari pengguna. Input disimpan di buffer LABOR_LEI1)
  • PUSH DS
POP ES          ;MEMBUAT DS = ES (Menyimpan nilai DS ke stack dan kemudian mengisi ES dengan nilai yang sama dari DS. Ini memastikan bahwa data segment (DS) dan extra segment (ES) sama.)
  • MOV SI,OFFSET LABOR_LEI1
INC SI          ;1=INDIKATOR, BERAPA HURUF YG DIMASUKKAN(Memuat alamat dari LABOR_LEI1 ke register SI, kemudian menambah SI dengan 1 untuk melewati byte pertama (yang berisi panjang maksimum input))
  • MOV CL,ES:[SI]  ;MENGAMBIL BANYAKNYA KARAKTER YANG DIPUTKAN (Memuat jumlah karakter yang dimasukkan pengguna ke register CL dari alamat yang ditunjuk oleh SI)
  • XOR CH,CH(Mengosongkan register CH, menjadikan CX sebagai counter 16-bit yang hanya berisi nilai CL)
  • INC SI          ;SI=SI+1. MENUJU KE KARAKTER PERTAMA YANG DIINPUTKAN
MOV DI, OFFSET LABOR_LEI2
CLD (Menambah SI untuk mengarah ke karakter pertama dari input pengguna, lalu memuat alamat LABOR_LEI2 ke DI, yang digunakan sebagai tujuan untuk string yang akan disalin. CLD digunakan untuk memastikan instruksi copy berjalan maju (autoincrement))
  • ULANG: MOVSB
LOOP ULANG          ;ULANG SEBANYAK Cx (Instruksi MOVSB memindahkan satu byte dari alamat yang ditunjuk oleh SI (source index) ke DI (destination index). LOOP ULANG mengurangi nilai CX dan mengulangi loop hingga CX bernilai 0)
  • MOV AL,'$'      ;LETAKKAN '$' DI AKHIR TAMPUNG2
MOV DS:[DI],AL  ;SUPAYA BISA DICEPAK DENGAN INT 21H (Memuat karakter $ ke register AL dan menyalinnya ke lokasi yang ditunjuk oleh DI sebagai penanda akhir string di LABOR_LEI2, sehingga string bisa dicetak menggunakan interrupt 21H)
  • MOV AH,09H
MOV DX, OFFSET GANTI
INT 21H (Mencetak string GANTI yang berisi carriage return dan line feed untuk membuat baris baru sebelum mencetak hasil input yang telah disalin)
  • MOV DX,OFFSET LABOR_LEI2
MOV AH,09H
INT 21H (Memuat alamat dari LABOR_LEI2 ke DX dan memanggil interrupt 21H untuk menampilkan string yang telah disalin)
  • MOV AH, 4CH
INT 21H (Mengakhiri program dengan mengembalikan kontrol ke sistem operasi (DOS))



3. Video [kembali]



4. Download File [kembali]
   
    Download HTML [klik]
    Download File Simulasi [klik]
    Download Video Penjelasan [klik]
    

Tidak ada komentar:

Posting Komentar

modul 2 sisdig

  [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan Percobaan ... Tug...