微机实验报告
更新时间:2024-05-21 10:37:01 阅读量: 综合文库 文档下载
实验1 基本操作实验 一、 实验目的
(1) 掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2) 掌握使用运算指令类编程及调试方法。
(3) 掌握运算类指令对各状态标志位的影响及其测试方法。 (4) 学习使用软件监视变量的方法。 二、 实验设备
PC机一台,TD- PITC实验装置一套 三、 实验内容及步骤
通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容
3.1 实验内容一——BCD码转换为二进制 实验内容
将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。 实验步骤:
1) 运行Wmd86软件,进入Wmd86集成开发环境。
2) 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里我们选择汇编语言。
3) 语言选择后,点击新建来新建一个文档。默认文件名为Wmd861.
4) 编写实验程序。并保存,此时系统会提示输入新的文件名,输完后点击保存。 实验程序清单如下:
SSTACK SEGMENT STACK
DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START:XOR AX,AX MOV SI 3500H MOV DI 3510H A1:MOVE AL,[SI] ADD AL,AL MOV BL,AL ADD AL,AL ADD AL,AL ADD AL,BL INC SI ADD AL,[SI] MOV [DI],AL INC SI INC DI LOOP A1 A2:JMP A2 CODE ENDS END START
5) 点击编译文件,若程序无误,再点击进行连接。 6) 连接PC与实验系统的通讯电缆,打开实验系统电源。
7) 编译、连接都正常并且上下机位通讯成功后,就可以下载程序,联机调试了。可以通过输入端口列表中的“端口测试”来检查通讯是否正常。点击下载程序,编译、链接下载一次完成。下载完成后,在输入区的结果栏会显示“加载成功!”,表明程序以正确下载。起始运行语句下会有一条绿色的背景。
8) 将四个二位十进制数的BCD码存入3500H~3507H中,即:将输出区切换到调试窗口,键入E3500,然后输入01 02 03 04 05 06 06 08(每个数用空格隔开),存储器在初始状态时,默认数据是CC。
9) 点击运行程序,然后再点击停止程序运行,接下来观察程序的运行结果,使用命令D3510显示转换结果为:0C 22 38 4E。 10) 反复输入几组数据,验证程序的功能。
a、输入:将输出区切换到调试窗口,键入E3500,然后输入02 00 03 02 06 03 07 06 输出:点击运行程序,然后再点击停止程序运行,接下来观察程序的运行结果,使用命令D3510显示转换结果为14 20 4F 4C
b、输入:将输出区切换到调试窗口,键入E3500,然后输入07 02 06 03 04 06 01 00 输出:点击运行程序,然后再点击停止程序运行,接下来观察程序的运行结果,使用命令D3510显示转换结果为48 3F 2E 0A 程序运行正确 思考题:
1)叙述修改实验数据有几种方法?这些方法各有什么特点? 答:修改实验数据的方法有:
1、 直接通过源程序的赋值语句来修改。特点是需要对程序进行修改,编译。要重新编译、加载、运行。操作简单,但时间长,易于操作。
2、 通过键入E命令对存储器的内容直接修改。其特点是可一次修改多个变量,但需明确变量的地址。
3、 在变量区直接修改。其特点是需将变量加入监视窗口,且变量不宜过多。 2)能否利用“调试窗口”直接对程序进行修改? 答:可以。
3.2 实验内容二——二进制数双精度加法运算 实验内容:
计算X+Y=Z,将计算结果Z存入某单元。实验程序如下
本实验是双精度(2个16位,即32位)加法运算,编程时可利用累加器AX,先求低16位的和,并将运算结果存入低地址存储单元,然后求高16位的和,将结
果存入高地址单元中。由于低16位运算后可能向高位产生进位,因此高16位运算时使用ADC指令,这样在低16位相加运算有进位时,高位相加会加上CF中的1。 实验步骤
1) 编写程序,经编译、链接无误后装入系统。 实验程序清单如下:
SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS PUBLIC XH,XL,YH,ZH,ZL DATA SEGMENT XL DW ? XH DW ? YL DW ? YH DW ? ZL DW ? ZH DW ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX,XL MOV AX,YL MOV ZL,AX MOV AX,AH ADC AX,YH MOVE ZH,AX JMP START
CODE ENDS END START
2) 程序运载完成后,点击“变量区”标签将观察窗口切换到变量监视窗口。 3) 点击菜单条,将变量AH,AL,YH,YL,ZH,ZL添加到变量监视窗口中,然后修改AH,AL,YH,YL的值,修改为AH为0015,AL为65A0,YH为0021,YLB79E。 4) 在JMP START语句行设置断点,然后运行程序。
5) 当程序遇到断定后停止运行,查看变量监视窗口,计算结果ZH为0037,ZL为1D3E。 6) 修改AH,AL,YH和YL的值,再次运行程序,观察实验结果,反复测试几组数据,验证程序的功能。
a、修改为AH为110A,AL为32B0,YH为1121,YL为A010 查看变量监视窗口,计算结果ZH为222B,ZL为D2C0 b、修改为AH为A5B7,AL为05DE,YH为0225,YL为C301 查看变量监视窗口,计算结果ZH为A7DC,ZL为C8DE 程序运行正确 思考题:
1)如何使用E命令直接修改AH,AL,YH,YL变量的值?
答:重新加载程序后,在寄存器窗口中读出DS的值为0208,以此为起始地址语句中数据所在数据段的段基地址,,因此逻辑地址为0208:0000.再将输出区切换到调试区,输入命令“E0208:0000”。按回车,依次输入AH,AL,YH,YL。在JMP START处设置断点,运行程序。在调试区输入“D0208:0000”,即可得到对应的结果。 2)如何直接修改程序来修改AH,AL,YH,YL变量的值?
答:直接修改源程序的 XL DW ? XL DW 65A0H XH DW ? 修改为 XH DW 0015H YL DW ? YL DW B79EH YH DW ? YH DW 0021H 实验2 分支程序设计实验 一、 实验目的 (1) 掌握分支程序的结构
(2) 掌握分支程序的设计、调试方法。 二、 实验设备
PC机一台,TD- PITC实验装置一套 三、 实验内容及步骤
设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图 源数据据块 目的数据块 0H 0H 0H 源数据 据块 目的数据块 目的数据块 源数据 据块 FFFFFH FFFFFH FFFFFH (a) (b) (c)
源数据块与目的数据块在存储中的位置情况
对于两个数据块分离的情况,如图(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:
当源数据块地址<目的块首地址,从数据块末地址开始传送数据,如(b)。 当源数据块地址>目的块首地址,从数据块末地址开始传送数据,如(c)。 四、 实验步骤
1) 按流程图编写实验程序,经编译、链接无误后装入系统。 实验程序清单如下:
SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUM CS:CODE START:MOVE CX,0010H MOVE SI,3100H MOVE DI,3200H CMP SI,DI JA A2 ADD SI,CX ADD DI,CX DEC SI DEC DI
A1:MOVE AL,[SI] MOV [DI],AL DEC SI DEC DI DEC CX JNE A1 JMP A3 A2:MOVE AL,[SI] MOVE [DI],AL INC SI INC DI DEC CX
JNE A2 A3:JMP A3 CODE ENDS END START
2) 用E命令在以SI为起始地址的单元中填入16个数。 3) 运行程序,然后再停止运行。
4) 通过D命令查看DI为起始地址单元中的数据是否与SI单元中数据相同。 5) 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。
E命令在以SI为起始地址的单元中填入16个数为:11 23 41 51 24 28 90 66 70 85 54 66 26 33 40 58
SI、DI的改变值:1) SI为3100H,DI为310AH 2) SI为310AH,DI为3100H
五、 思考题
试编写一个程序,该程序的功能是:当BL寄存器内容为0时,将0—255这256个数据按从小到大的顺序放入到以3100H为起始的单元中去,当BL寄存器内容为1时,将0—255这256个数据按从大到小的顺序放入到以3100H为起始的单元中去。输入程序,编辑调试通过,连接、下载、运行程序,查看结果。 答:程序如下:
SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUM CS:CODE START:MOVE CX,0100H MOVE SI,3100H
MOVE DI,3200H CMP SI,DI JA A2 ADD SI,CX ADD DI,CX DEC SI DEC DI
A1:MOVE [SI],AL MOV [DI],AL DEC SI DEC DI DEC CX JNE A1 JMP A3
A2:MOVE [SI],AL MOVE [DI],AL INC SI INC DI DEC CX JNE A2 A3:JMP A3 CODE ENDS END START
实验3 排序程序设计实验 一、 实验目的
(1) 掌握分支、循环、子程序调用等基本的程序结构。 (2) 学习综合程序的设计、编制及调试。
二、 实验设备
PC机一台,TD- PITC实验装置一套 三、 实验内容及步骤
3.1 实验内容1—气泡排序法 实验内容:
在数据区中存放着一组数,数据的个数就是数据缓冲区的长度,要求采用气泡法对该数据区中的数据按递增关系排序。设计思想:
(1) 从最后一个数(或第一个数)开始,一次把相邻的两个数进行比较,即第N个数与第N-1个数比较,第N-1个数与第N-2个数比较等等。若第N-1个数大于第N个数,则交换,否则不交换,直至到N个数的相邻两个数都比较完为止。此时,N个数中的最小数将被排在N各数的最前列。
(2) 对剩下的N-1个数重复(1)这一步,找到N-1个数种的最小数。 (3) 再重复(2),知道N个数全部排列好为止。 实验步骤
(1) 分析参考程序,绘制流程图并编写实验程序。 实验程序清单如下:
SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUM CS:CODE START:MOVE CX,00AH MOVE SI,300AH MOV BL,0FFH A1:CMP BL,0FFH JZC A4 MOV BL,00H DEC CX
JZ A4 PUSH SI PUSH CX A2:DEC SI MOVE AL,[SI] DEC SI CMP AL,[SI] JA A3 XCHG AL,[SI] MOV [SI+01H],AL MOV BL,0FFH A3:INC SI LOOP A2 POP CX POP SI JMP A1 A4:JMP A4 CODE ENDS END START
(2) 编译、链接无误后装入系统。
(3) 键入E3000命令修改3000H~3009H单元中的数,任意存入10个无符号数。 (4) 先运行程序,然后再停止程序运行。 (5) 通过键入D3000命令查看程序运行的结果。
(6) 可以反复测试几组数据,观察结果,验证程序的正确性。
a) 输入:键入E3000命令修改3000H~3009H单元中的数,输入22 01 32 09 31 52 62 24 38 00
输出:键入D3000命令查看程序运行的结果:00 01 09 22 24 31 32 38 52 62
b) 输入:键入E3000命令修改3000H~3009H单元中的数,输入07 67 34 11 53 27 44 13 25 03
输出:键入D3000命令查看程序运行的结果:03 07 11 13 25 27 34 44 53 67 程序正确
3.2 实验内容2—学生成绩名次表 实验内容:
将分数在1~100之间的30个成绩存入首地址为3000H的单元中,3000H+I表示学号为I的学生成绩。编写程序,将排出的名次表存放在3100H开始的数据区,3100H+I中存放的为学号为I的学生的名次。 实验步骤
(1) 分析参考程序,绘制流程图并编写实验程序。 实验程序清单如下:
SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUM CS:CODE START:MOVE AX,0000H MOV DS,AX MOVE ES,AX MOVE SI,300AH MOVE CX,001EH MOVE DI,3100H A1:CALL BRANCH MOVE AL,1EH SUB AL,CL INC AL
MOVE BX,DX MOVE [BX+DI],AL LOOP A1 A4:JMP A4 BRANCH:PUSH CX MOVE CX,001EH MOVE AL,00H MOVE BX,3000H MOVE SI,BX JAE A3 MOVE AL,[SI] MOVE DX,,SI SUB DX,BX A3:INC SI LOOP A2 ADD BX,DX MOVE AL,00H MOVE [BX],AL POP CX RET CODE ENDS END START
(2) 编译、链接无误后装入系统。
(3) 将30个成绩存入首地址为3000H的内存单元中。 (4) 调试并运行程序。
(5) 检查3100H起始的内存单元中的名次是否正确。
输入30个学生的成绩:
31 12 94 85 09 83 98 99 75 76 04 87 62 96 79 49 67 69 91 89 80 64 73 72 48 66 81 90 01 84
名次表: 1A 1B 04 09 1C 0B 02 01 10 0F 1D 08 17 03 0E 18 14 13 05 07 0D 16 11 12 19 15 0C 06
正在阅读:
微机实验报告05-21
城市发展寻访,建湖县发展情况01-30
巧用发展性评价,促进学生进步06-28
还原糖测定03-11
电子商务产业园建设实施方案04-21
中国不锈钢角钢市场研究报告10-30
初中语文说课稿05-16
2016三毛经典语录语句02-10
1000以内数的认识教学设计01-17
工会2022工作总结(精选16篇)03-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 微机
- 实验
- 报告
- 常州市专业技术人员继续教育《沟通与协调能力》多选试题及答案
- 温病
- 上海市浦东新区2012届高三下学期第三次模拟试题(地理)
- 马克思主义基本原理试题库(1)
- 装饰装修投标文件技术标
- 毕业欢送晚会主持词
- 广东省六校联盟2016届高考文综模拟试题(A卷) - 图文
- 变速器课程设计说明书
- 老挝南欧江发电有限公司工程计量管理办法(试行xiugai)
- 滚筒式清洗机设计说明书
- 最高院公报【(2009)民一终字第23号】(定向开发合同效力及合同解
- 全国导基练习题附答案
- 基于单片机的电子门禁系统设计论文(C语言程序)
- 曼山小学2017-2018学年上期书法教案
- 学校品牌活动
- 社区护理学复习题(专科 含答案)
- 学生管理的成效、做法和经验
- 安全生产目标管理制度
- 改性聚醚破乳剂的研究
- PEP人教版2018-2019学年四年级英语上册期中测试题及答案