微机原理实验报告西安交通大学(4)

2019-05-24 09:27

WORDTOSTR PROC FAR PUSH SI MOV CX,5;设置循环次数 NEXTDIGIT:MOV DX,0 MOV BX,10 CMP AX,0 JZ BLANK DIV BX ADD DX,30H;将得到的每位数字转换为对应的ASCII码 SETCHAR:MOV [SI],DL DEC SI MOV DX,0 LOOP NEXTDIGIT POP SI CMP BYTE PTR [SI],20H JZ ZERO RET

ZERO:MOV BYTE PTR[SI],30H RET

BLANK:MOV DL,20H JMP SETCHAR WORDTOSTR ENDP CODES ENDS END START

运行结果:

第二题

编写一个汇编程序,实现N!(N>=0):

N!=N*(N-1)*(N-2)*??*1

(设N=3),跟踪IP变化,观察堆栈的变化,理解子程序递归调用中程序执行的流程,以及帧信息的组成。(注意BP的变化)

a) 程序框图

b) 程序源代码 DATA SEGMENT

RESULT DW ? SAVE_BP DW ?

SAVE_CS_IP DW 2 DUP(?) N DW 3 SAVE_N DW ?

RESULT_ADDR DW ? NFACT DB 6 DUP(?)

DATA ENDS

STACK SEGMENT

TOP LABEL WORD DW 128 DUP(0)

STACK ENDS

CODE1 SEGMENT

ASSUME CS:CODE1,DS:DATA,SS:STACK START: MOV AX,STACK MOV SS,AX

MOV SP,OFFSET TOP PUSH DS

MOV AX,DATA

FACT DONE: RETURN: FACT MOV DS,AX

MOV BX,OFFSET RESULT PUSH BX

MOV BX,N PUSH BX

CALL FAR PTR FACT MOV AH,4CH INT 21H

PROC FAR PUSH BP MOV BP,SP PUSH BX PUSH AX

MOV BX,[BP]+RESULT_ADDR MOV AX,[BP]+SAVE_N CMP AX,0 JE DONE PUSH BX DEC AX PUSH AX

CALL FAR PTR FACT

MOV BX,[BP]+RESULT_ADDR MOV AX,[BX]

MUL [BP]+SAVE_N JMP SHORT RETURN MOV AX,1 MOV [BX],AX POP AX POP BX POP BP RET 4 ENDP

CODE1 ENDS

END START

查看指令

观察IP的变化:第一次变化:0017--0020

第二、三、四次跳变相同:0037--0020

共调用了四次FACT函数 IP跳转可用如下图表示:

FACT 主程序 观察堆栈情况:

与书中P165页情况相符合

3阶阶乘堆栈示意图


微机原理实验报告西安交通大学(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:艾美生物科技电子商务策划书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: