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
; -------------------------------------
; 功能:輸出回車換行
Output_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
Output_CTLF endp
; -------------------------------------
; 功能:根據自變量x的值,計算因變量y的值
; 入口:x=自變量
; 出口:在當前光標位置顯示y的值
Calculate_y Proc Near
cmp x,1
jnz $+8
mov y,0
ret
cmp x,3
jae $+8
mov y,1
ret
mov y,2
ret
Calculate_y EndP
; -------------------------------------
x db ? ;自變量
y db ? ;因變量
Prompt_x db 'x=$' ;輸入x的值提示信息
Prompt_y db 13,10,'y=$' ;顯示y的值提示信息
Start: push cs
pop ds
Input_x: Output Prompt_x ;提示輸入x的值
mov ah,1
int 21h
cmp al,27 ;Esc?
jz Exit_Proc ;結束程序
cmp al,'1' ;<1?
jb Input_x ;重新輸入
cmp al,'9' ;>9?
ja Input_x ;重新輸入
and al,0fh
mov x,al ;保存自變量
call Calculate_y ;計算函數值
Output Prompt_y ;提示顯示y的值
mov dl,y
or dl,30h
mov ah,2 ;顯示壹個字符
int 21h
call Output_CTLF
call Output_CTLF
jmp Input_x
Exit_Proc: mov ah,4ch ;結束程序
int 21h
Code ENDS
END Start ;編譯到此結束