stack segment stack
db 100h dup(?) stack ends data segment
resul dw ?
data ends code segment
main proc far
assume cs:code,ds:data,ss:stack start: push ds
sub ax,ax push ax
mov ax,data mov ds,ax mov ax,5 call fact
mov resul,ax ret fact proc
and al,al jne iia mov al,1 ret
iia: push ax
dec al call fact x2: pop cx
mul cl ret
fact endp main endp
code ends end start 步骤:
1、将程序输入,汇编并连接成EXE文件。
2、用DEBUG的断点和T命令检查并记录每层递归嵌套过程的堆栈和AL内容。
3、修改源程序,将阶乘数 3 改为本程序的最大允许值(是多少?),重新汇编连接之。用DEBUG运行并记录RESUL单元内容。
4、若要在DOS命令下直接运行并显示阶乘结果(16进制形式),试修改程序并
16
调试运行。(机动) 实验报告:
1、实验记录。
2、自编程序。 3、体会和意见。
17