微机原理实验指导书.docx
《微机原理实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书.docx(20页珍藏版)》请在冰豆网上搜索。
![微机原理实验指导书.docx](https://file1.bdocx.com/fileroot1/2023-2/7/74bcd0de-0288-4350-8c4b-c37559a0d513/74bcd0de-0288-4350-8c4b-c37559a0d5131.gif)
微机原理实验指导书
实验一数据传送
实验目的:
1.熟悉8086指令系统的数据传送指令及8086的寻址方式。
2.利用TurboDebugger调试工具来调试汇编语言程序。
实验任务:
1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:
MOVB,08H
MOVC,BL
MOVA,03FFH
MOVBXAX
M0VDS:
[0020H]BX
2.用以下程序段将一组数据压入(PUSH堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:
MOVAX0102H
M0VBX0304H
M0VCX0506H
M0VQX0708H
PUSHAX
PUSHBX
PUSHCX
PUSHDX
出栈程序段请自行编写(用不同的出栈顺序)。
3.指出下列指令的错误并加以改正,上机验证之。
(1)MOV[BX],[SI]
(2)MOVAHBX
(3)MOVAX[SI][DI]
(4)MOVBYTEPTR[B,2000H
(5)MOVCSAX
(6)MOVDS2000H
4.设置各寄存器及存储单元的内容如下:
(BX)=0010H,(SI)=0001H
(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H
(10120H)=0ABH(10121H)=0CDH(10122H)=0EFH
说明下列各条指令执行完后AX寄存器中的内容,并上机验证。
(1)MOVAX1200H
(2)MOVAXBX
(3)MOVAX[0120H]
(4)MOVAX[BX]
(5)MOVAX0110H[BX]
(6)MOVAX[BX][SI]
(7)MOVAX0110H[BX][SI]
5.将DS:
100OH字节存储单元中的内容送到DS:
2020H单元中存放。
试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
6.设AX寄存器中的内容为1111H?
BX寄存器中的内容为2222HDS:
0010H单元中的内容为3333H将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:
0010H单元中的内容进行交换。
试编写程序段,并上机验证结果。
7.
1.5所示。
BX寄存器,试编
设(DS)=1000H(ES)=2000H有关存储器的内容如图要求将DS段的内容传送到AX寄存器,ES段的内容传送到写程序段。
OFFH
DS:
1OOOH
0EEH
■■■
0DDH
ES:
2000H0CCH
图1第7题图
实验报告要求:
1.写明本次实验内容和实验步骤。
2.整理出运行正确的各题源程序段和运行结果。
3.写出第3题中改正后的正确指令。
4.小结TurboDebugger的使用方法。
实验二算术逻辑运算及移位操作
实验目的:
1•熟悉算术逻辑运算指令和移位指令的功能。
2•了解标志寄存器各标志位的意义和指令执行对它的影响实验预习要求:
1•复习8086指令系统中的算术逻辑类指令和移位指令。
2•按照题目要求在实验前编写好实验中的程序段。
实验任务:
1.实验程序段及结果表格如表2:
表2
标志位CFZFSFOFPFAF
r1
i
程序段1:
000000
MOVAX,1018H
MOVSI,230AH
ADDAX,SI
i1
ADDAL,30H
MOVDX,3FFH
ADDAXBX
MOV[20H],1000H
ADD[20H],AX
PUSHAX
POPBX
程序段2:
000000
MOVAX,0A0AH
ADDAX,0FFFFH
MOVCX,0FF00H
ADCAX,CX
iH
SUBAX,AX
INCAX
ORCX,0FFH
ANDCX,0F0FH
MOV[10H],CX
程序段3:
000000
MOVBL,25H
MOVBYTEPTR[10H],4
MOVAL,[10H]
MULBL
程序段4:
000000
MOVWORDPTR[10H],80H
MOVBL,4
MOVAX,[10H]
DIVBL
程序段5:
000000
MOVAX,0
DECAX
ADDAX,3FFFH
ADDAX,AX
NOTAX
SUBAX,3
ORAX,0FBFDH
ANDAX,0AFCFH
SHLAX1
RCLAX1
2•用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。
写出完成此功能的程序段并上机验证结果。
3.写出完成下述功能的程序段。
上机验证你写出的程序段,程序运行的最后结果(AX)=?
⑴传送15H到AL寄存器;
⑵再将AL的内容乘以2;
(3)接着传送15H到BL寄存器;
⑷最后把AL的内容乘以BL的内容。
4.写出完成下述功能的程序段。
上机验证你写出的程序段,程序运行后的商=
(1)传送数据2058H到DS:
1OOOH单元中,数据12H到DS:
1002H单元中;
⑵把DS:
100OH单元中的数据传送到AX寄存器;
(3)把AX寄存器的内容算术右移二位;
⑷再把AX寄存器的内容除以DS:
1002H字节单元中的数;
(5)最后把商存入字节单元DS:
1003H中。
5•下面的程序段用来清除数据段中从偏移地址0010H开始的12个字存储单元的内容(即将零送到这些存储单元中去)。
(1)将第4条比较指令语句填写完整(划线处)。
MOVSJ0010H
NEXT:
MOVWORDPTR[S0
ADDS]2
CMPSJ
JNENEXT
HLT
(2)假定要按高地址到低地址的顺序进行清除操作(高地址从0020H开始),
则上述程序段应如何修改?
上机验证以上两个程序段并检查存储单元的内容是否按要求进行了改变。
6.输入并运行表3中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。
表3
实验报告要求
1.整理出完整的实验程序段和运行结果。
2.回答题目中的问题。
3.简要说明ADDSUBANDOR指令对标志位的影响。
4.简要说明一般移位指令与循环移位指令之间的主要区别
实验三串操作
实验目的:
1.熟悉串操作指令的功能。
2.了解串操作指令的使用方法。
实验预习要求;
1.复习8086指令系统中的串操作类指令。
2.按照题目要求在实验前编写好实验中的程序段。
实验任务:
1.输入以下程序段并运行之,回答后面的问题。
CLD
MOVD,1000H
MOVA,55AAH
MOVQX10H
REPSTOSW
上述程序段执行后:
(1)从DS:
1000H开始的16个字单元的内容是什么?
(2)(DI)=?
(CX=?
,并解释其原因。
2.在上题的基础上,再输入以下程序段并运行之,回答后面的问题
MOVSJ1000H
MOVD,2000H
MOVQX20H
REPMOVSB
程序段执行后:
(1)从DS:
2000H开始的16个字单元的内容是什么?
⑵(SI)=?
(DI)=?
(CX=?
,并分析之。
3.在以上两题的基础上,再输入以下三个程序段并依次运行之。
程序段1:
MOVSJ1000H
MOVD,2000H
MOVQX10H
REPZCMPSW
程序段1执行后:
(1)ZF=?
根据ZF的状态,你认为两个串是否比较完了?
⑵(SI)=?
(DI)=?
(CX=?
,并分析之。
程序段2:
MOV[2008H]4455H
MOVSJ1000H
MOVD,2000H
MOVQX10H
REPZCMPSW
程序段2执行后:
⑴ZF=?
根据ZF的状态,你认为两个串是否比较完了?
(2)(SI)=?
(DI)=?
(CX=?
,并分析之。
程序段3:
MOVA,4455H
MOVD,2000H
MOVQX10H
REPNZSCASW
程序段3执行后:
(1)ZF=?
根据ZF的状态,你认为在串中是否找到了数据4455H?
(2)(SI)=?
(DI)=?
(CX=?
,并分析之。
4.
DS:
从DS:
1000H开始存放有一个字符串”Thisisastring”,要求把这个字符串从后往前传送到DS:
2000H开始的内存区域中(即传送结束后,从2000H开始的内存单元的内容为”gnirtsasisihT”),试编写程序段并上
机验证之。
实验报告要求:
1.整理出完整的实验程序段和运行结果,对结果进行分析。
2.简要说明执行串操作指令之前应初始化哪些寄存器和标志位。
3.总结串操作指令的用途及使用方法。
实验四字符及字符串的输入和输出
实验目的:
1•熟悉如何进行字符及字符串的输入输出。
2•掌握简单的DOS系统功能调用。
实验预习要求:
1•复习系统功能调用的1、2、9、10号功能。
2•按照题目要求预先编写好实验中的程序段。
实验任务:
1.输入以下程序段并用F8键单步运行,执行INT21H指令时,在键盘上按
“5”键。
MOVAH1
INT21H
⑴运行结束后,(AL)=?
它是哪一个键的ASCII码?
(2)重复运行以上程序段,并分别用“A'、“B”、“C、“D键代
替“5”键,观察运行结果有何变化?
2.在DS:
1000H开始的内存区域设置如下键盘缓冲区:
DS:
1000H50,0,0,0,0,0
然后输入以下程序段并用F8键单步运行,执行INT21H指令时,在键盘上键入“5”、“4”、“3”、“2”、“1”、〈回车〉这六个键。
LEADX[1000H]
MOVAH0AH
INT21H
程序段运行完后,检查DS:
1000H开始的内存区域:
(1)DS:
1001H单元的内容是什么?
它表示了什么含义?
(2)从DS:
1002H开始的内存区域中的内容是什么?
其中是否有字符“1”
的ASCII码?
为什么?
3.输入以下程序段并运行之。
MOVD,‘A
MOVA,2
INT21H
(1)观察屏幕上的输出,是否显示了“A'字符?
(2)分别用“#”、“X”、“丫”、“$”、“?
”代替程序段中的“A”字符,观察屏幕上的输出有何变化。
(3)分别用ODH0AH代替程序段中的“A”字符,观察屏幕上的输出有何变化。
(4)用07H代替程序段中的“A”字符,观察屏幕上有无输出?
计算机内的扬
声器是否发出“哗”的声音?
4.要在屏幕上显示一个字符串“Hello,world”,写出该字符串变量的定义语句和显示这个字符串的程序段。
上机验证之。
5.按6行X16列的格式顺序显示ASCII码为20H到7FH之间的所有字
符,即每16个字符为一行,共6行。
每行中相邻的两个字符之间用空格字符分隔开。
试编写程序段并上机运行验证。
提示:
程序段包括两层循环,内循环次数为16,每次内循环显示一个字符和一个空格字符;外循环次数为6,每个
外循环显示一行字符并显示一个回车符(ODH和一个换行符(0AH。
实验报告要求:
1.整理出运行完整的实验程序和运行结果。
2.回答题目中的问题。
3.说明系统功能调用的10号功能对键盘缓冲区格式上有何要求。
4.1、2、9、10号功能的输入输出参数有哪些?
分别放在什么寄存器中?
5.总结一下,如何实现字符及字符串的输入输出。
实验五分支及循环程序设计
实验目的:
1.学习提示信息的显示及键盘输入字符的方法。
2.掌握分支程序和循环程序的设计方法。
实验预习要求:
1.复习比较指令、转移指令、循环指令的用法。
2.根据编程提示,编出汇编语言源程序。
3.有兴趣的同学请编写出实验习题中的程序。
分支程序和循环程序简介:
1.分支程序是根据不同条件执行不同处理过程的程序。
分支程序的结构有两种:
一种是二分支,一种是多分支。
它们的共同特点是在满足某一条件时,将执行多个分支中的某一分支。
2.循环程序
实验内容:
在屏幕上显示提示信息“PleaseinputIOnumbers:
”,提示用户输入10个数(数的范围在0〜99之间),然后从键盘上读入这10个数。
接着对这10个数从小到大进行排序,并统计0〜59、60〜79、80〜99的数各有多少。
最后在屏幕上显示排序后的数(每个数之间用逗号分隔)并显示统计的结果。
显示格式如下:
Sortednumbers:
xx,xx,xx,xx,xx,xx,xx,xx,xx,xx
0-59:
xx
60-79:
xx
80-99:
xx
实验习题:
1.从键盘输入任意一个字符串,统计其中不同字符出现的次数(不分大小写),并把结果显示在屏幕上。
2.从键盘分别输入两个字符串,若第二个字符串包含在第一个字符串中则显示
‘MATCH'否则显示‘NOMATCH'
实验报告要求:
1.整理出完整的实验程序。
2.总结一下编制分支程序和循环程序的要点。
3.(选做)在实验习题1和实验习题2中任选一个,编写程序并上机验证
实验六交通灯实验
,•实验要求
编写程序,以8255作为输出口,控制4个双色LED灯(可发红,绿,黄光)模拟十字路口交通灯管理。
・实验目的
1学习在PC机系统中扩展简单I/O接口的方法。
2•进一步学习编制数据输出程序的设计方法。
3•学习模拟交通灯控制的方法。
4•学习双色灯的使用。
・实验电路及连线
IOW
T35
ny1004o^6
CCCOUC8rmnrmnmP4PO703AU
04345^?
CCCCCOC
PRRrpDIDb—
L4L2
HH
7
21FH孔
PC0-PC3连DR—DR4PC—PC7连DG—DG4CS55连218H
四•实验说明
1•因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一个十字路口为东西南北走向。
初始状态0为东西、南北均为红灯。
然后转状态1南北绿灯通车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
再转状态3,东西绿灯通车,南北红灯。
过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1。
2•双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;当红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮.
五•实验程序框图
由于各PC机速度不一样,可适当调节伪指令D1,D2的值,使实验效果更佳
返回DOS
六•思考题
编写程序,使所有黄灯闪烁(每秒闪烁一次,闪三次)
实验七、D/A转换实验
一•实验要求
用键盘输入来控制D/A输出的波形,程序应能输出锯齿波、三角波、方波和正弦波。
・实验目的
1•掌握DAC0832芯片的4性能、使用方法及对应的硬件电路2•了解D/A转换的基本原理。
・实验电路及连线
r~%jrVRE
C10
AOUT
1R10
四.实验说明
D/A转换是把数字量转换成模拟量的变换,从本书D/A电路输出的是模拟电压信号要实现实验要求,比较简单的方法是产生四个波形的表格,然后通过查表来实现波形显示.
产生方波只需控制输出高低电平的时间,产生锯齿波和三角波的表格需由数字量的增减来控制,同时要注意三角波要分两段来产生.
要产生正弦波,可以造一张正弦数字量表.即查函数表得到的值转换成十六进制数填表.D/A转换取值范围为一个周期,采样点越多,精度越高些.本例采用的采样点为64点/周期.
五.实验程序框图
六思考题
编写一个程序根据输入产生响应频率锯齿波
实验八汇编语言综合程序设计
【实验目的】
1.汇编语言综合程序设计;
2.学会编写实用性的汇编程序;
3.熟练使用和掌握DOSBIOS功能调用。
【实验内容】
1.权限管理程序。
通过键盘输入六位数字,要求屏幕上显示的全都是“*号”,只有
知道密码的人才能看到刚刚输入的六个数字。
(提示:
该程序实现的功能类似银行里的存折密码管理系统)
题目要求:
(1)当从键盘上输入的不是数字时,提示出错
(2)有权限的人才能让刚刚输入的数字显示出来(即银行里一般的职员看不到储户输入的密码,只有高级职员才能看到储户的密码)
(3)储户以后输入密码时,若与第一次的密码相同应提示“PasswordisRight,”否贝U,提示“PasswordisWrong”
2.编写程序,利用循环语句计算1+2+3+4+5.。
。
。
+N并把结果显示出来,其中N由键盘输入。
【实验要求】
1•写出程序清单,并进行详尽的注释
2•程序编写过程遇到那些困难?
你是如何解决的?
思考:
你认为这个程序还有哪些地方可以更完善的?
请给出意见,并实现!