武大微机原理实验报告汇总Word文件下载.docx
- 文档编号:12950205
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:51
- 大小:408.64KB
武大微机原理实验报告汇总Word文件下载.docx
《武大微机原理实验报告汇总Word文件下载.docx》由会员分享,可在线阅读,更多相关《武大微机原理实验报告汇总Word文件下载.docx(51页珍藏版)》请在冰豆网上搜索。
(1)连续执行程序
按F9键(即Run|Run),即可从BEG开始连续执行程序。
(2)查看执行结果
按Alt+F5键(即Window|Userscreen),临时切换到DOS屏幕,可查看程序的执行结果,即5行HELLO。
注意:
Alt键要多按一会儿,直到快捷键提示区更换提示内容之后再按F5键。
按任意键可以恢复MODULE窗口内容。
(3)使光标重新指向启动指令
当程序运行结束(三角形光标消失),按Ctr1+F2(Run|Programrest)可以重新装入程序并使光标指向启动指令。
(4)程序的单步执行
单步操作一次仅执行了一条指令,有3个单步操作命令,它们的区别仅在于"
跟踪"
的情况不同。
1F8(Run|Stepover)单步操作。
执行CALL和INTn指令的时候,"
不跟踪"
相关的子程序。
"
不眼踪"
的含义是指在进入相关子程序后,自动地连续执行子程序指令直到返回。
所以,宏观上看不到跟踪的效果。
2F7(Run|Traceinto)单步操作。
执行CALL指令能够跟踪子程序,随即暂停,等待用户的下一步操作。
但是在遇到INTn指令时与F8一样,进入服务程序后立即自动地连续执行服务程序直到返回。
3Alt+F7(Run|Instructiontrace)单步操作。
真正意义上的单步操作,执行CALL和INTn指令进入相关子程序之后立即停止,等待用户的下一步操作。
实践证明:
用Alt+F7跟进服务程序以后,如果再执行单步操作,很容易使系统瘫痪。
因此,请读者慎用。
编者认为:
Alt+F7的用途在于跟进中断服务程序以后,可以了解服务程序的结构,如果服务程序是系统设计的(如INT21H,INT10H等),应当用F8操作。
(5)断点的设置和取消
按↑、↓键,使光标指向欲设置断点的指令,再按F2键(Breakpoints|Toggle),则红色光条覆盖光标处的指令,表示断点设置成功,重复上述操作,可以设置多个断点。
将光标移到红色光条覆盖的指令,再次按下F2键,红色光条消失,表明此处断点撤销。
设置断点的目的是使程序执行到断点指令时暂停,以便检查执行结果。
(6)检查单步执行结果
指令执行后一定会使目标寄存器和状态标志发生变化,欲查看执行效果,怎么办?
1在CPU窗口调试时
因为窗口中有寄存器、标志寄存器显示窗口,所以,当前指令执行后,可以从相关的显示窗口中看到结果。
2在MODULE窗口调试时
选中View|Registers可弹出寄存器和标志寄存器显示窗口,就可以查看执行结果。
(7)检查内存数据区的内容
如果被调试程序要对数据段或附加段进行操作,怎样检查结果?
关键问题是要找出用户程序的数据段或附加段。
以例题1为例,说明这一操作的实现过程。
1如果调试是在MODULE窗口进行
首先选择View|Dump,弹出内存数据显示窗口,接着再按Ctrl+S弹出一个对话框,用户键入’HELLO’—--用单引号括起来的这一字符串是例1用户数据段中设置的内容,TD根据用户的提示立即找出并显示用户程序数据区。
做好以上准备工作之后,按F8键单步执行指令,就可以看到用户数据段内容的变化。
例1中的语句①~⑧就是为此项调试而设置的。
2如果调试是在CPU窗口进行
首先按Tab键,使内存数据显示区成为活动区,接下来的工作则与在MODULE窗口的调试是相同的。
5、程序修改
下面的程序采用比较法,将一个8位二进制数转换成十进制数显示,其设计方法拙劣,语法错误很多,希望以它为蓝本,练习源程序的编辑、编译、链接和调试。
同学应照原样编辑源程序,汇编之后,必定给出若干错误信息,再根据错误提示,修改源程序,直到汇编后没有错误时为止,然后进行链接、执行。
正确的执行结果是在屏幕上显示:
100+9=109
【程序流程图】
1,程序一
2,程序二
【源程序】
DATASEGMENT
MESGDB‘HELLO’
DB0,0,0;
①
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA
BEG:
MOVAX,DATA
MOVDS,AX
MOVES,AX;
②
MOVCX,5
LL1:
MOVMESG+5,0DH;
③
MOVMESG+6,0AH;
④
MOVMESG+7,'
$'
;
⑤
CALLDISP
MOVMESG+5,0;
⑥
MOVMESG+6,0;
⑦
MOVMESG+7,0;
⑧
LOOPLL1
MOVAH,4CH
INT21H
DISPPROC
MOVAH,9
MOVDX,OFFSETMESG
RET
DISPENDP
CODEENDS
ENDBEG
N1DW0809H,AB;
此处应为N1DB9
N2DB100
SUNDB?
;
输入错误,SUN与后段代码SUM不一致
MESGDB‘100+9='
DB30H,30H,30H;
应加上$以提示信息结束
CODESEGMENT
MOVDS,DATA;
MOV指令不允许将立即数直接送给段寄存器
MOVBX,OFFSETSUM
MOVAH,N1
MOVAL,N2
ADDAH,AL
MOV[BX],AH;
AH为八位,BX为十六位寄存器,寄存位置不明
CALLN2_10
MOVAH,9
MOVDX,OFFSETMESG
INT21H
MOVAH,4CH
N2_10PROC
LAST:
CMP[BX],100;
错误同上
JCNEXT1
SUB[BX],100;
错误同上
INC[BX+7];
JMPLAST
NEXT1:
CMP[BX],10;
JCNEXT2;
错误同上
SUB[BX],10;
INC[BX+8];
JMPNEXT1
NEXT2:
ADD[BX+9],SUM;
源操作数和目的操作数不能同时为存储器
N2_10:
ENDP;
此处无需冒号
【实验结果与分析】
程序二中错误代码出现在第2、4、6、10、15、23、25、26、28、30、31、33、35行。
错误原因已附在各行末尾,修改后的代码如下:
N1DB9
SUMDB?
DB30H,30H,30H,’$’
MOVDS,AX;
MOVBYTEPTR[BX],AH
CALLN2_10
CMPBYTEPTR[BX],100
SUBBYTEPTR[BX],100
INCBYTEPTR[BX+7]
CMPBYTEPTR[BX],10
JCNEXT2
SUBBYTEPTR[BX],10
INCBYTEPTR[BX+8]
MOVAL,SUM
ADDBYTEPTR[BX+9],AL
N2_10ENDP
【实验名称】顺序程序设计
学习汇编语言基本操作指令和伪指令的应用;
了解编程的基本方法。
【实验内容】
【实验1】编写程序,计算(a+b)–2*(aANDb),结果送入S单元。
S单元的内容在TD里面观察,在实验报告附上运行完毕后所有通用寄存器及段寄存器的值。
【实验2】定义一个双字变量VOLUME,从键盘输入长方体的长(a),宽(b)和高(h),计算它的体积,a,b,c均为单字节变量,结果保存在VOLUME中(注意判断溢出)。
要求:
①上述实验中的各变量单元要在数据区定义;
②用TD(或debug)调试,运行并修改各变量的值,观察结果存放单元。
【程序框图】
【实验1】【实验2】
【程序代码】
【实验1】
DATASEGMENT
ADB40
BDB50
SDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MOVAX,DATA
MOVDS,AX
MOVBL,A
ADDBL,B
MOVBH,0
ADCBH,0
MOVAL,A
ANDAL,B
MOVCL,2
MULCL
SUBBX,AX
MOVS,BX
MOVAH,4CH
INT21H
ENDBEG
【实验2】
ADB?
BDB?
CDB?
VOLUMEDD?
ASSU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 报告 汇总