实验一基本操作实验.docx
《实验一基本操作实验.docx》由会员分享,可在线阅读,更多相关《实验一基本操作实验.docx(10页珍藏版)》请在冰豆网上搜索。
实验一基本操作实验
实验一基本操作实验
实验报告
课程名称
实验名称
实验日期
学生专业
学生学号
学生姓名
实验室名称
教师姓名
成绩
南京理工大学机械工程学院
实验1基本操作实验
1.实验目的
(1)掌握TD-PITC80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2)掌握使用运算类指令编程及调试方法;
(3)掌握运算类指令对各状态标志位的影响及其测试方法;
(4)学习使用软件监视变量的方法。
2.实验设备
PC机一台,TD-PITC实验装置一套。
3.实验内容及步骤
通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:
●如何设置断点;
●如何单步运行程序;
●如何连续运行程序;
●怎样查看寄存器的内容;
●怎样修改寄存器的内容;
●怎样查看存储器的内容;
●怎样修改存储器的内容。
3.1实验内容1――――BCD码转换为二进制数
实验内容:
将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起始的内存单元中,自行绘制流程图并编写程序。
参考实验程序清单如下:
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
XORAX,AX
MOVCX,0004H
MOVSI,3500H
MOVDI,3510H
A1:
MOVAL,[SI]
ADDAL,AL
MOVBL,AL
ADDAL,AL
ADDAL,AL
ADDAL,BL
INCSI
ADDAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPA1
A2:
JMPA2
CODEENDS
ENDSTART
实验步骤:
1)运行Wmd86软件,进入Wmd86集成开发环境。
2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里,我们选择汇编语言。
图1-1语言环境选择界面
3)语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图1-2所示。
默认文件名为Wmd861。
图1-2新建文件界面
4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。
5)点击
,编译文件,若程序编译无误,则输出如图1-4所示的输出信息,然后再点击
进行链接,链接无误输出如图1-5所示的输出信息。
图1-4编译输出信息界面图1-5链接输出信息界面
6)连接PC与实验系统的通讯电缆,打开实验系统电源。
7)编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。
可以通过端口列表中的“端口测试”来检查通讯是否正常。
点击
下载程序。
为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。
下载成功后,在输出区的结果窗中会显示“加载成功!
”,表示程序已正确下载。
起始运行语句下会有一条绿色的背景。
如图1-6所示。
8)将四个二位十进制数的BCD码存入3500H~3507H中,即:
将输出区切换到调试窗口,先键入E3500,然后输入0102030405060708(每个数用空格隔开),如图1-7所示。
存储器在初始状态时,默认数据为CC。
9)点击按钮
运行程序,然后再点击
来停止程序运行,接下来观察程序运行结果,使用命令D3510显示转换结果,应为:
0C22384E。
10)反复输入几组数据,验证程序功能。
图1-6加载成功输出显示界面
思考题:
1)叙述修改实验数据有几种方法?
这些方法各有什么特点?
答:
3种
①直接通过源程序的赋值语句来修改,特点是需要对程序进行修改和编译。
操作简单,但时间长。
②通过键入E命令对存储器的内容直接修改,特点是可一次修改多个变量,但需明确变量的地址。
③在变量区直接修改,特点是需将变量加入监视窗口,但变量不宜过多,
2)能否利用“调试窗口”直接对程序进行修改?
答:
能,输出结果都一样。
3)在调试窗口中用什么命令查看和修改寄存器的内容、查看存储器的内容、修改存储器的内容?
答:
用R命令查看和修改寄存器的内容,用D命令查看存储器的内容,用E命令修改存储器的内容。
3.2实验内容2――――二进制双精度加法运算
实验内容:
计算X+Y=Z,将结果Z存入某存储单元。
实验程序参考如下。
本实验是双精度(2个16位,即32位)加法运算,编程时可利用累加器AX,先求低16位的和,并将运算结果存入低地址存储单元,然后求高16位的和,将结果存入高地址存储单元中。
由于低16运算后可能向高位产生进位,因此高16位运算时使用ADC指令,这样在低16位相加运算有进位时,高位相加会加上CF中的1。
参考实验程序清单:
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
PUBLICXH,XL,YH,YL,ZH,ZL;设置全局变量
DATASEGMENT
XLDW?
;X低位
XHDW?
;X高位
YLDW?
;Y低位
YHDW?
;Y高位
ZLDW?
;Z低位
ZHDW?
;Z高位
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,XL
ADDAX,YL;X低位加Y低位
MOVZL,AX;低位和存到Z的低位
MOVAX,XH
ADCAX,YH;高位带进位加
MOVZH,AX;存高位结果
JMPSTART;在此行设置断点,以观察变量值
CODEENDS
ENDSTART
实验步骤
(1)编写程序,经编译、链接无误后装入系统;
(2)程序装载完成后,点击‘变量区’标签将观察窗切换到变量监视窗口;
(3)点击菜单条上
,将变量XH,XL,YH,YL,ZH,ZL添加到变量监视窗中,然后修改XH,XL,YH,YL的值,如图1-7所示,修改XH为0015,XL为65A0,YH为0021,YL为B79E;
(4)在JMPSTART语句行设置断点,然后运行程序;
(5)当程序遇到断点后停止运行,查看变量监视窗口,计算结果ZH为0037,ZL为1D3E;
思考题:
1、如何利用E命令直接修改XH、XL、YH、YL变量的值,并求出
ZL、ZH?
答:
重新加载程序后,在寄存器窗口中读出DS值为0208以此为起始地址语句中数据所在的数据段基址地址,因此逻辑地址为0208:
0000。
再将输出区调换至调试区,输入命令“E0208:
0000”按回车键,依次输入AH,AL,YH,YL.在JMPSTART除设置断点,运行程序,在调试区输入“D0208:
0000”回车,即可得到相应结果。
2、直接修改源程序,将XH为0015H,XL为65A0H,YH为0021H,
YL为0B79EH,求出ZL、ZH的值。
答:
直接修改程序如下:
可得到对应结果。