data segment
num BYTE ?
inputStr DB "please input a positive number:","$" ;定義提示輸入的字元串
outStr DB "your input is:","$" ;定義輸出的字元串
erroStr DB "erro input!","$" ;定義錯誤的字元串
CRLF DB 0AH, 0DH,'$' ;定義換行符
data ends
code segment
assume cs:code,ds:data ;段配置設定語句僅僅是建bai立段寄存器和段名之間關系
start:
main proc far
mov ax,data ;實就是把data(資料) 轉到 DS 資料段寄存器,讓資料段指向正确的位置。
mov ds,ax
lea dx,inputStr ;輸入提示資訊
mov ah,09h ;調用dos系統09号中斷進行輸出字元串
int 21h
mov ah,01h ;調用dos中斷函數進行輸入
int 21h
cmp al,'0'
jb erro ;小于0跳轉到errr
cmp al,'9' ;大于9跳轉
ja erro
jmp showInput ;輸入在0到9之間則正常輸出
showInput:
lea dx,CRLF ;換行
mov ah,09h
int 21h
lea dx,outStr ;輸出提示資訊
mov ah,09h ;調用dos系統09号中斷進行輸出字元串
int 21h
mov num,al ;将輸入緩沖區的字元傳送到num中
mov dl,num ;将num的值傳送到輸出緩沖區中
mov ah,02h ;調用dos系統02嗯呢中斷進行輸出字元
int 21h
jmp exit ;跳轉到結束代碼塊
erro:
lea dx,CRLF ;換行
mov ah,09h
int 21h
lea dx,erroStr
mov ah,09h
int 21h
jmp exit
exit:
mov ah,4ch ;調用dos系統4c号中斷進行結束程式,傳回系統
int 21h
main endp
code ends
end start
ps:當我們輸入擷取的字元時,實際上擷取的是一個ASCII碼,是以當我們進行比較的時候必須要使用和ASCII碼進行比較。