Kamis, 12 Desember 2013

Input Kalimat

Contoh code assembler untuk menginput kalimat sebanyak dua kali


input : 

.Model Small                            ;jenis memori yang digunakan adalah small
.Code                                        ; memulai program assembler
ORG     100h                            ; memori yang disediakan
   
mulai :                  
    JMP                
    T_Enter     Equ 0DH
    Kal0         db 13,10,'Ketikkan satu Kalimat : $'      ; perintah untuk menginput
    Kal1         db 13,10,'Kalimat tersebut adalah : $'   ; kalimat yang di tampilkan setelah di enter
    hasil         db 13,10,23,?,23 DUP(?)                       ; tempat menampung hasil inputtan
   
Proses :
    MOV     AH,09
    LEA     DX,Kal0                                    ; pengambilan regester kal0
    INT       21h                                            ; Cetak kalimat Kal0
    MOV    AH,0AH                                    ; Servis Input kalimat
    LEA     DX,hasil                                    ; DX menunjuk pada offset hasil
    INT       21h                                            ; Input kalimat !
    MOV    AH,09
    LEA     DX,Kal1                                   
; pengambilan regester kal1
     INT       21h                                           ; Cetak kalimat Kal1
    LEA     BX,hasil+2                                ; BX menunjuk byte ke 3 hasil

Ulang:
    CMP     BYTE PTR [BX],T_Enter        ; Apakah karakter Enter?
    JE         Proses1                                   ; Ya! Lompat ke Exit
    MOV     DL,[BX]                                    ; Masukkan karakter pada DL
    MOV     AH,02                                       ; Servis cetak karakter
    INT        21h                                            ; Cetak karakter
    INC       BX                                             ; BX := BX+1
    JMP     Ulang                                         ; Lompat ke Ulang

Proses1 :                                                  
; label ulang1 
    MOV     AH,09
    LEA     DX,Kal0                                   
; pengambilan regester kal0 
    INT       21h                                            ; Cetak kalimat Kal0
    MOV    AH,0AH                                    ; Servis Input kalimat
    LEA     DX,hasil                                    ; DX menunjuk pada offset hasil
    INT       21h                                            ; Input kalimat !
    MOV    AH,09
    LEA     DX,Kal1                                   
; pengambilan regester kal1
    INT       21h                                            ; Cetak kalimat Kal1
    LEA     BX,hasil+2                               ; BX menunjuk byte ke 3 hasil
   
Ulang1:                                                      ; label ulang1
    CMP     BYTE PTR [BX],T_Enter       ; Apakah karakter Enter?
    JE         EXIT                                         ; Ya! Lompat ke Exit
    MOV     DL,[BX]                                   ; Masukkan karakter pada DL
    MOV     AH,02                                      ; Servis cetak karakter
    INT        21h                                           ; Cetak karakter
    INC       BX                                            ; BX := BX+1
   JMP      Ulang1                                      ; Lompat ke Ulang

EXIT:                                                          ;label exit
    INT     20h                                             ; Kembali ke DOS !
End mulai                                                 ; mengakhiri label mulai




output :




Semoga tulisan ini bermanfaat. terimakasih telah berkunjung.


Tidak ada komentar:

Posting Komentar