《第二次试验报告最终版(共8页).doc》由会员分享,可在线阅读,更多相关《第二次试验报告最终版(共8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上微机原理及应用实验 课程名称_微机原理及应用实验_学生学院 信息工程学院 专业班级 学 号 学生姓名 指导老师 乐金松 2016年 05 月 11 日实验二 数据处理程序(一)实验目的:1、进一步学习、掌握汇编程序调试方法2、弄清子程序调用和返回过程 3、通过实验调试乘法、除法程序,弄清多字节乘除法程序的基本算法和程序设计方法实验内容:1、 源程序的编辑2、 源程序的剪辑、编译、链接3、 汇编程序调试,完成相关数据的记录和分析实验步骤:一、程序剪辑和编辑1、 下面是一段主程序模板,请将L8086软件包中的乘法和除法程序的主体部分拷贝粘贴在指定的位置,以MAIN.ASM
2、文件名保存;- STACK SEGMENT STACK STACK DB 1024 DUP (0)STACK ENDS;-;define data segmentDATA SEGMENT;- ;地址分配 R0 DW (?);0000H R1 DW (?);0002H R2 DW (?);0004H R3 DW (?);0006H R4 DW (?);0008H R5 DW (?);000AH R6 DW (?);000CH R7 DW (?);000EH;-XDDH;0010H003HYDDH;0014H0017HZDDH;0018H001BH;- buffer0 DB (?);001CH b
3、uffer1 DB (?) buffer2 DB (?) buffer3 DB (?) buffer4 DB (?) buffer5 DB (?) buffer6 DB (?) buffer7 DB (?);-DATA ENDS;-;define code segmentPROGRAM SEGMENTASSUME CS:PROGRAM, DS:DATA, SS:STACK;*MAIN PROC FARSTART: PUSH DS ;return DOS standard program MOV AX,0 PUSH AX MOV AX,DATA ;set DS MOV DS,AX;-主循环程序-
4、DO_WAIT: CALLBMUL CALLBDIV;CALLKEY_SCAN;CALLBCTD;CALLDELAYJMPDO_WAIT RETMAIN ENDP;-以下为过程子程序-;=R2R3*R6R7=R4R5R6R7= BMULPROC NEAR ; BMULENDP;-R4R5R6R7/R2R3=R6R7-BDIVPROC NEAR ; BDIVENDP ;-二翻十程序-BCTDPROC NEARRETBCTDENDP;-软件延时-DELAYPROC NEAR RETDELAYENDP;-键盘扫描-KEY_SCANPROC NEARRETKEY_SCANENDP;-PROGRAM E
5、NDS END START;-2、将程序编译连接成可执行文件。二、程序载入 1、 用DEBUG命令将程序载入到内存2、 用反汇编U命令观察和记录以下信息:主程序起始地址: 07AD : 0000 主程序结尾地址: 07AD : 001D 乘法程序起始地址: 07AD : 0013 乘法程序结尾地址: 07AD : 0066 除法程序起始地址: 07AD : 0067 除法程序结尾地址: 07AD : 00CA 代码段段地址: CS=07AD用户数据段段地址: DATA=07AA当前系统数据地段段地址: DS=075A乘法子程序入口地址: BMUL=0013除法子程序入口地址: BDIV=006
6、73、 用R命令观察记录一下信息DS=075AES=075ASS=076ASP=04004、 执行程序G0A回车,用D0命令观察并记录以下信息 R0分得的单元地址:07AA:000007AA:0001R7分得的单元地址:07AA:000E07AA:000FX分得的地址:07AA:001007AA:0013X双字数据存放的顺序:单元号地址:0010 内容:0X78单元号地址:0011 内容:0X56单元号地址:0012 内容:0X34单元号地址:0013 内容:0X12Y分得的地址:07AA:001407AA:0017Y双字数据存放的顺序:单元号地址:0014 内容:0X21单元号地址:0015
7、 内容:0X43单元号地址:0016 内容:0X65单元号地址:0017 内容:0X87三、程序的调试1、调试乘法程序:1) 程序执行到乘法子程序入口2) 在入口参数输入:R2R3=100 0000 6400 R6R7=100 0000 6400 3) 执行程序到乘法程序RETF指令处,查看结果R4R5R6R7=0000 0000 0000 1027 4) 自行输入一组数据,复位IP=0,验证结果 R2R3=10 (0000 0a00) R6R7=10 (0000 0a00) 执行程序后:R4R5R6R7=0000 0000 0000 6400 2、调试除法程序:1) 复位IP=0,将程序执行
8、到除法子程序入口2) 在入口信息输入数据: R4R5R6R7=10000 R2R3=1003) 程序执行到除法程序的RETF指令,用D0命令查看结 R6R7=0000 64004) 自选一组数据,自行验证除法程序 R4R5R6R7=0000 0000 0000 1E00 R2R3=0000 0600 执行程序后结果 R6R7=0000 0500四、编程,R0R1=X*Y/Z1)自行编写一段程序,调用乘法和除法程序,计算上式 DO_WAIT:MOVAX,XMOVR3,AXMOVAX,X+2MOVR2,AXMOVAX,YMOVR7,AXMOVAX,Y+2MOVR6,AXCALLBMUL ;第一断点
9、MOVAX,Z ;第二断点MOVR3,AXMOVAX,Z+2MOVR2,AXCALLBDIV ;第三断点MOVAX,R7MOVR1,AXMOVAX,R6MOVR0,AX JMP DO_WAIT ;第四断点1、执行程序,验证结果程序执行到第一断点:R2R3=(即是0x)R6R7=(即是0x)程序执行到第二断点:R4R5R6R7= A00905CDBD (即是0x09A0CD0570B88D78)中间结果正确吗? 答:运行的中间结果正确,0x*0x=0x09a0cd0570b88d78程序执行到第四断点:R6R7=1CE2 6710程序执行到第三断点:R2R3= (即是0x) R4R5R6R7= A00905CDBD (即是0x09A0CD0570B88D78)程序执行到第四断点:R6R7=E21C1067(即是0x1CE26710)中间结果正确吗?答:运行结果正确 0x09A0CD0570B88D78/0x=0x1CE267102、自行修改数据段定义的X,Y ,Z 的值,执行程序验证结果X= 1111hY=2222hZ=3333h R0R1=B(即是0x0B60),运行结果正确专心-专注-专业
限制150内