8子程序.doc
文本预览下载声明
8、子程序:
N例1编写递归子程序计算N的阶乘。(N0,0!=1)。
DATA SEGMENT
RESULT DW ?
NUM DW 4
DATA ENDS
STACK SEGMENT
DW 20 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:STACK
MAIN PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA BX,NUM
MOV AX,[BX]
CALL FACT
MAIN ENDP
FACT PROC NEAR
CMP AX,0
JZ DONE
PUSH AX
DEC AX
CALL FACT
POP AX
MOV CX,RESULT
MUL CX
MOV RESULT,AX
JMP EXIT
DONE : MOV RESULT,1
EXIT: RET
FACT ENDP
CODE ENDS
END
Y;求5!。
S SEGMENT
DB 256 DUP(?)
S ENDS
D SEGMENT
T1 DB 05H
T2 DW ?
D ENDS
C SEGMENT
ASSUME CS:C,SS:S,DS:D
M PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,D
MOV DS,AX
MOV AL,T1
MOV BL,AL
L1:DEC BL
MUL BL
CMP BL,02H
JA L1
MOV T2,AX
CALL DISP
RET
M ENDP
DISP PROC NEAR
MOV BX,AX
MOV CH,04H
MOV CL,04H
L3:ROL BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,3AH
JB L2
ADD DL,07H
L2:MOV AH,02H
INT 21H
DEC CH
JNZ L3
RET
DISP ENDP
C ENDS
END M
Y例2编写每隔10秒钟响铃1次,同时在屏幕上显示信息”The bell is ring !
DATA SEGMENT
BUFF DB THE DELL IS RINGING!,0DH,0AH,$
COUNT DW 1
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
MAIN PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
CONT: MOV DI,20000
DELAY: MOV SI,30000
DELAY1: DEC SI
JNZ DELAY1
DEC DI
JNZ DELAY
LEA DX,BUFF
MOV AH,9
INT 21H
JMP CONT
RET
MAIN ENDP
CODE ENDS
END
Y例3设计编制16进制转换成10进制的程序
DATA SEGMENT
T DB 2 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
REPEAT:CALL HEXIBIN
CMP AL,13
JZ QUIT
CMP AL,15H
JZ QUIT
CALL CRLF
CALL BINIDEC
显示全部