内容发布更新时间 : 2024/12/22 2:57:26星期一 下面是文章的全部内容请认真阅读。
主程序起始地址: [ 07AD : 0000 ] 主程序结尾地址: [ 07AD : 0012 ] 乘法程序起始地址: [ 07AD : 0013 ]
乘法程序结尾地址: [ 07AD : 0066 ] 除法程序起始地址: [ 07AD : 0067 ] 除法程序结尾地址: [ 07AD : 00CA ] 代码段段地址: CS=07AD 用户数据段段地址: DATA=07AA 当前系统数据地段段地址: DS=075A 乘法子程序入口地址: BMUL=0013 除法子程序入口地址: BDIV=0067 3、用R命令观察记录一下信息
DS=075A ES=075A SS=076A SP=0400
4、执行程序G0A回车,用D0命令观察并记录以下信息
R0分得的单元地址:07AA:0000~07AA:0001 R7分得的单元地址:07AA:000E~07AA:000F X分得的地址:07AA:0010~07AA:0013
X双字数据存放的顺序:单元号地址:0010 内容:0X78
单元号地址:0011 内容:0X56 单元号地址:0012 内容:0X34 单元号地址:0013 内容:0X12
Y分得的地址:07AA:0014~07AA:0017
Y双字数据存放的顺序:单元号地址:0014 内容:0X21
单元号地址:0015 内容:0X43 单元号地址:0016 内容:0X56 单元号地址:0017 内容:0X87
三、 程序的调试
1、调试乘法程序:
1)程序执行到乘法子程序入口 2)在入口参数输入:R2R3=100
R6R7=100
3)执行程序到乘法程序RETF指令处,查看结果 R4R5R6R7=0000 2710 4)自行输入一组数据,复位IP=0,验证结果 R2R3=10(0000 000a) R6R7=10(0000 000a)
执行程序后:R4R5R6R7=(0000 0000 0000 0064) 2、调试除法程序:
1)复位IP=0,将程序执行到除法子程序入口 2)在入口信息输入数据: R4R5R6R7=10000 R2R3=100
3)程序执行到除法程序的RETF指令,用D0命令查看结 R6R7=0064 4)自选一组数据,自行验证除法程序
R4R5R6R7=0000 0000 0000 0064 R2R3=000a 执行程序后结果: R6R7=000a
四、 编程,R0R1=X*Y/Z
1)
自行编写一段程序,调用乘法和除法程序,计算上式
DO_WAIT:
MOV
AX,X
MOV MOV MOV MOV MOV MOV MOV CALL MOV MOV MOV MOV CALL MOV MOV MOV MOV JMP
R3,AX AX,X+2 R2,AX AX,Y R7,AX AX,Y+2 R6,AX
BMUL ;第一断点 AX,Z ;第二断点 R3,AX AX,Z+2 R2,AX BDIV AX,R7 R1,AX AX,R6 R0,AX
DO_WAIT ;第四断点
;第三断点
2) 执行程序,验证结果
程序执行到第一断点:R2R3=34127856
R6R7=65872143
程序执行到第二断点:R4R5R6R7=A00905CBD870788D 中间结果正确吗? 答:正确。
程序执行到第三断点:R2R3=5555 5555
R4R5R6R7=A00905CDB870788D
程序执行到第四断点:R6R7=E21C1067 中间结果正确吗? 答:正确。 3)
自行修改数据段定义的X,Y ,Z 的值,执行程序验证结果 X=2710 H
Y=000A H Z=0064 H R0R1=03E8 H