; 本程式透過編譯,執行正確
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:顯示指定地址(Str_Addr)的字串
; 入口:
; Str_Addr=字串地址(要求在資料段)
; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; 功能:輸出一個字元
; 入口:dl=要顯示的字元
Enter_Chr proc Near
push ax
mov ah,02h
pop ax
ret
Enter_Chr endp
; 功能:輸出回車換行
Enter_CTLF proc Near
push dx
mov dl,0dh
mov dl,0ah
pop dx
Enter_CTLF endp
Prompt_Str db "Please input a string: $" ;輸入字串提示資訊
Start: push cs
pop ds
push cs
pop es ;使資料段、附加段與程式碼段同段
Output Prompt_Str ;提示輸入字串
lea dx,Buffer
mov ah,0ah ;從鍵盤接受一串字元
CALL Enter_CTLF ;輸出一個回車、換行
cld
lea si,Buffer[1] ;實際輸入的字元個數地址
mov cl,[si] ;讀入實際輸入的字元個數
test cl,0ffh
jz Exit_Proc ;直接回車,沒有輸入任何字元,結束程式,返回作業系統
xor ch,ch ;cx=實際輸入的字元個數
add si,cx ;字串尾部地址
std ;置方向標誌,使變址暫存器自動減量
Disp_String:lodsb
mov dl,al
call Enter_Chr ;顯示一個字元
loop Disp_String
Exit_Proc: mov ah,4ch ;結束程式
Buffer db 100,?
Code ENDS
END Start ;編譯到此結束
; 本程式透過編譯,執行正確
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:顯示指定地址(Str_Addr)的字串
; 入口:
; Str_Addr=字串地址(要求在資料段)
; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:輸出一個字元
; 入口:dl=要顯示的字元
Enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Enter_Chr endp
; -----------------------------------------
; 功能:輸出回車換行
Enter_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Enter_CTLF endp
; -----------------------------------------
Prompt_Str db "Please input a string: $" ;輸入字串提示資訊
Start: push cs
pop ds
push cs
pop es ;使資料段、附加段與程式碼段同段
Output Prompt_Str ;提示輸入字串
lea dx,Buffer
mov ah,0ah ;從鍵盤接受一串字元
int 21h
CALL Enter_CTLF ;輸出一個回車、換行
CALL Enter_CTLF ;輸出一個回車、換行
cld
lea si,Buffer[1] ;實際輸入的字元個數地址
mov cl,[si] ;讀入實際輸入的字元個數
test cl,0ffh
jz Exit_Proc ;直接回車,沒有輸入任何字元,結束程式,返回作業系統
xor ch,ch ;cx=實際輸入的字元個數
add si,cx ;字串尾部地址
std ;置方向標誌,使變址暫存器自動減量
Disp_String:lodsb
mov dl,al
call Enter_Chr ;顯示一個字元
loop Disp_String
Exit_Proc: mov ah,4ch ;結束程式
int 21h
Buffer db 100,?
Code ENDS
END Start ;編譯到此結束