微机原理实验指导书智能.docx
- 文档编号:8662383
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:27
- 大小:216.32KB
微机原理实验指导书智能.docx
《微机原理实验指导书智能.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书智能.docx(27页珍藏版)》请在冰豆网上搜索。
微机原理实验指导书智能
实验一系统认识、数码转换、运算编程实验
一、实验目的
1.掌握TDN86/88教学系统的基本操作。
2.学习数码转换的程序设计方法;
3.学习运算编程方法。
二、实验设备
1.PC机一台;
2.TDN86/88教学实验系统一台。
三、实验内容及步骤
1.系统认识实验
从3500H内存单元开始建立0-15共16个数据。
实验程序如下:
STACK1SEGMENTSTACK;8088宏汇编程序
DW64DUP(?
);定义堆栈段
STACK1ENDS
CODESEGMENT;定义代码段
ASSUMECS:
CODE
START:
MOVDI,3500H;程序开始设数据区首址
MOVCX,0010H;字节数送入CX中
MOVAX,0000H
A1:
MOV[DI],AL;写入一字节
INCDI;修改地址指针
INCAX;修改数据
DAA;十进制调整
LOOPA1;未填完转移
A2:
JMPA2
CODEENDS;代码段结束
ENDSTART;程序结束
实验步骤
(1)启动Wmd86联机软件
Wmd86联机软件的启动方式有两种,可以在【开始】/【程序】/【TangDu】菜单中单击“Wmd86”的程序组启动,也可以直接双击桌面上的“Wmd86”快捷键启动该程序组。
启动应用程序进入主界面窗口后,应显示“串口通讯成功”小窗口,若显示“串口通讯不成功”,说明上位机和下位机的连接不正常或下位机死机,请确认下位机电源已经打开,串口线两端接触良好。
(2)输入源程序,检查无误后存盘。
(3)对源程序进行编译、链接和加载,可以使用编译菜单项,也可以使用编译工具栏。
(4)运行程序,观察结果。
连续运行程序,在输出区中的调试区用DEBUG命令观察运行结果,即键入D0000:
3500↙,可查看3500H-350FH单元中的内容是否为0-15共16个数。
注意,因本程序的结尾为死循环,应在程序运行后停止运行再观察结果。
(5)熟悉系统提供的单步运行、断点运行等功能,可以使用调试菜单项,也可以使用调试工具栏。
2.数码转换实验(将十进制数的ASCⅡ码转换为BCD码)
设从键盘输入的五位十进制数的ASCⅡ码已存放在3500H起始的内存单元内,把它转换为BCD码后,再按位分别存入350AH起始的内存单元内。
若输入的不是十进制数的ASCⅡ码,则对应存放结果的单元内容为“FF”。
具体方法是,一字节ASCⅡ码取其低四位即变为BCD码。
实验程序如下:
STACK1SEGMENTSTACK
DW64DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,0005H;循环计数器赋初值
MOVDI,3500H;ASCⅡ码首址
A1:
MOVBL,0FFH;将错误标志送入BL
MOVAL,[DI];送ASCⅡ码至AL
CMPAL,3AH;比较AL与3A
JNBA2;不低于3A则转A2
SUBAL,30H;低于3A则取ASCⅡ码低4位
JBA2;低于30则转A2
MOVBL,AL;否则AL内容送入BL,取代FF
A2:
MOVAL,BL;结果或错误标志送入AL
MOV[DI+0AH],AL
INCDI
LOOPA1
A3:
JMPA3
CODEENDS
ENDSTART
实验步骤
(1)阅读程序,画出程序流程图。
(2)输入源程序,进行编译、链接和加载。
(3)在3500-3504H单元中存放五位十进制数的ASCⅡ码,即在调试区键入E0000:
3500↙,并输入31、32、33、34、35。
(4)连续运行程序后停止运行,查看运行结果,即在调试区键入D0000:
350A↙,显示结果应为:
0000:
350A0102030405CC…
(5)反复试几组数,并运行程序,观察结果。
3.运算编程实验(二进制双精度加法运算)
计算X+Y=Z,将结果Z存入某存储单元。
实验程序如下:
STACK1SEGMENTSTACK
DW64DUP(?
)
STACK1ENDS
DATASEGMENT
XLDW08H;请在此处给X低位赋值
XHDW04H;请在此处给X高位赋值
YLDW06H;请在此处给Y低位赋值
YHDW02H;请在此处给Y高位赋值
ZLDW?
ZHDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,XL;X低位送AX
ADDAX,YL;X低位加Y低位
MOVZL,AX;存低位和
MOVAX,XH;X高位送AX
ADCAX,YH;X高位加Y高位
MOVZH,AX
A1:
JMPA1
CODEENDS
ENDSTART
本实验程序是双精度(2个16位,即32位)运算,利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。
由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。
实验步骤
(1)输入源程序,进行编译、链接和加载。
(2)运行程序并检查结果。
(3)反复试几组数,考察程序的正确性。
实验结果:
实验二分支、循环程序设计
一、实验目的
1.掌握分支程序的设计、调试方法。
2.掌握循环程序的设计、调试方法。
二、实验设备
1.PC机一台;
2.TDN86/88教学实验系统一台。
三.实验内容及步骤
1.求某数据区内负数的个数
设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。
为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。
实验程序如下:
STACK1SEGMENTSTACK
DW64DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDI,3000H;设数据区首址
MOVCL,[DI];送数据个数
XORCH,CH;CH清0
MOVBL,CH;BL清0
INCDI;指针指向第一个数据
A1:
MOVAL,[DI]
TESTAL,80H;数据首位是否为1
JEA2
INCBL;负数个数累加
A2:
INCDI
LOOPA1
MOV[DI],BL;存结果
A3:
JMPA3
CODEENDS
ENDSTART
实验步骤:
(1)输入源程序,进行编译、链接和加载。
(2)键入E0000:
3000↙,输入数据如下:
3000=06(数据个数)
3001=12、88、82、90、22、33。
(3)运行程序,查看结果,即在调试区键入D0000:
3007↙,显示结果应为03。
2.修改程序2,使其能分别求出数据区中正数、零和负数的个数。
3.设在变量单元A、B和C中存放有三个数,若三个数都不为0,则求出三个数之和存入D单元中;若有一个为0,则将其它两个单元也清0,试编写程序。
实验三子程序设计实验
一、实验目的
1.学习子程序的定义和调用方法。
2.掌握子程序的程序设计、编制及调用。
二、实验设备
TDN86/88教学实验系统一台
三、实验内容及步骤
1.求无符号字节序列中的最大值和最小值
设有一字节序列,其存储首址为3000H,字节数为08H。
利用子程序的方法编程求出该序列中的最大值和最小值。
实验程序及流程如下:
STACK1SEGMENTSTACK
DW64DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVSI,3000H
MOVCX,0008H
CALLbranch
A1:
JMPA1
branch:
JCXZA4
PUSHSI
PUSHCX
PUSHBX
MOVBH,[SI]
MOVBL,BH
A1:
LODSB
CMPAL,BH
JBEA2
MOVBH,AL
JMPA3
A2:
CMPAL,BL
JAEA3
MOVBL,AL
A3:
LOOPA1
MOVAX,BX
POPBX
POPCX
POPSI
A4:
RET
CODEENDS
ENDSTART
实验步骤
(1)输入源程序,进行编译、链接和加载。
(2)在调试区键入E0000:
3000↙,输入8个字节的数据:
D9、07、8B、C5、EB、04、9D、F9。
(3)运行程序,查看结果,在调试区键入RAX↙,显示结果应为AX=F904,AH中为最大值,AL中为最小值。
2.数组求和
设有一字节序列(存储地址和字节数可自定义),编写程序,求出该序列的和,求和工作由子程序来实现。
实验四软件中断和8259应用编程实验
一、实验目的
1.了解INT10H各功能块的作用及用法。
2.认识TDN86/88系统的中断特性。
3.掌握8259中断控制器的工作原理。
4.掌握8259可编程中断控制器的应用编程。
二、实验设备
1.TDN86/88教学实验系统。
2.排线、导线若干。
三、实验原理及说明
1.8088软件中断说明
软件中断INT10使用说明:
(1)显示单个字符
入口:
AH=01H,AL=数据
功能:
写AL中的数据到屏幕上
(2)显示字符串
入口:
AH=06H,DS:
BX=字串首址,且字符串尾用00H填充。
功能:
显示一字串,直到遇到00H为止
2.系统中的8259芯片
(1)系统中的8259A芯片
系统中的8259A芯片工作于单片方式,但可由用户扩展接成级连方式,其命令寄存器组编址为20H和21H,其线路如图1所示。
图中的圈点表示此为排针形式引出脚。
(注:
以下线路图中的圈点均为排针形式引出脚,以后不再另作说明)。
图1系统中的8259A芯片
中断矢量地址与中断号之间的关系如下表。
中断输入端
0
1
2
3
4
5
6
7
功能类型号
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
矢量地址
20H
|
23H
24H
|
27H
28H
|
2BH
2CH
|
2FH
30H
|
33H
34H
|
37H
38H
|
3BH
3CH
|
3FH
说明
可用
可用
可用
串口2
串口1
可用
可用
可用
(2)接口实验单元中的级连实验用8259A芯片
除系统中的8259A芯片外,在接口实验单元中专门提供了另一片8259A芯片,以便进行8259级连实验。
其线路如图2所示。
图2接口实验单元中的级连用8259A芯片线路
(3)接口实验单元中的R-S触发器电路
图3R-S触发器电路
四、实验内容及步骤
1.软件中断实验(显示器上显示A-Z26个英文字母),实验程序如下:
STACK1SEGMENTSTACK
DW64DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,001AH;显示字符个数(26)送入CX
MOVBL,41H;显示字符‘A’
MOVAH,01H;显示一个字符
A1:
MOVAL,BL
INT10H
INCBL;显示下一个字符
PUSHCX
MOVCX,0FFFFH
A2:
LOOPA2
POPCX
DECCX
JNZA1
INT03H
CODEENDS
ENDSTART
实验步骤
(1)输入源程序,并进行编译、链接和加载。
(2)运行实验程序,观察实验结果。
2.8259基本实验
按图4所示实验线路编写程序,使每次响应外部中断IRQ7时,显示字符“7”,中断10次后,程序退出。
实验程序及流程如下:
图4实验线路1
STACK1SEGMENTSTACK
DW64DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
PUSHDS;保存数据段
MOVAX,0000H
MOVDS,AX;数据段清零
MOVAX,OFFSETIRQ7;取中断程序入口地址(偏移地址)
MOVSI,003CH;填8259中断7中断矢量
MOV[SI],AX;填偏移量矢量
MOVAX,CS;取中断程序入口地址(段地址)
MOVSI,003EH
MOV[SI],AX;填段地址矢量
CLI;关中断
POPDS;弹栈
;8259初始化(因系统启动时8259已经被初始化,下面6条指令也可以没有)
MOVAL,13H;ICW1
OUT20H,AL
MOVAL,08H;ICW2
OUT21,AL
MOVAL,0DH;ICW4
OUT21H,AL
INAL,21H;读8259中断屏蔽字
ANDAL,7FH;开8259中断7
OUT21H,AL;写回8259中断屏蔽字
MOVCX,000AH;允许中断10次,赋循环次数10
A1:
CMPCX,0000H;判断循环是否结束
JNZA2
INAL,21H;读8259中断屏蔽字
ORAL,80H;关8259中断7
OUT21H,AL;写回8259中断屏蔽字
STI;开中断
HLT;停机,等待中断
A2:
STI;开中断
JMPA1;循环
;7号中断服务程序
IRQ7:
MOVAX,0137H;显示字符7(INT10H参见实验六)
INT10H
MOVAX,0120H;显示空格
INT10H
DECCX;循环次数减1
MOVAL,20H;OCW2,普通EOI命令,中断结束
OUT20H,AL
CLI;关中断
IRET;中断返回
CODEENDS
ENDSTART
实验步骤
(1)按图4连接实验线路。
(2)输入源程序,进行编译、链接和加载。
(3)运行程序,重复按KK2微动开关,显示屏上应用“7”来响应,直到按10次后,系统处于停机状态,停止程序的运行。
3.8259应用编程实验
按图5所示实验线路编写程序,完成下面的要求:
当无中断请求时,执行主程序,延时显示“main”,若有中断请求,则执行其中断服务程序,显示该中断号“6”或“7”;若正在执行较低级的中断服务程序,则允许比它优先级高的中断被响应。
主程序在执行过程中,每显示一个字符串“main”空一格,并延迟一段时间,延时可通过调用延时子程序来实现。
需调用的延时子程序如下:
DALLYPROCNEAR
PUSHCX
PUSHAX
MOVCX,0040H
A3:
MOVAX,056CH
A4:
DECAX
JNEA4
LOOPA3
POPAX
POPCX
RET
DALLYENDP
图5实验线路2
4.8259级连实验
设计硬件连线,编写程序,实现两片8259的级连,当从片的IR7上有申请时显示7。
提示:
以系统中的8259作为主片,外接另一片8259作为从片,构成8259级连方式的中断实验线路,其中规定主片的IRQ7上连接一片从片,从片上的IR7接外中断申请电路(R-S单脉冲触发器),并规定从片的中断类型编号为30-37H(则从片IR7对应的中断矢量地址为0DC-0DFH),其命令寄存器组编址为00和01。
五、思考题
在提高内容实验1中,若先按动KK2,再按动KK1(此时尚未显示“7”),显示结果会是什么?
为什么?
实验五8253定时/计数器应用实验
一、实验目的
1.熟悉8253在系统中的典型接法。
2.掌握8253的工作方式及应用编程。
二、实验设备
TDN86/88教学实验系统一台
三、实验原理及说明
8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,它有3个独立的十六位计数器,计数频率范围为0-2MHz。
它所有的计数方式和操作方式都通过编程控制。
系统中装有一片8253芯片,其线路如图5-1所示。
图5-1系统中的8253线路
系统中,8253的0#通道输出线与8259的0#中断请求线,作为实时钟中断信号。
1#通道入口接1.8432MHz的信号源,输出接8251的收发时钟端,供串行通讯使用,这里的1#计数器仅当作一个分频器使用。
2#通道以排针形式引出,开放给用户使用,系统中的8253端口地址如下表所示。
信号线
寄存器
地址
IOY2
0#计数器
40H
1#计数器
41H
2#计数器
42H
控制寄存器
43H
四、实验内容及步骤
1.8253计数实验
设定8253的2#通道工作方式为方式0,用于事件计数,当计数值为5时,发出中断请求信号,显示“M”。
其实验线路如图5-2所示。
图5-2实验1线路
实验程序:
STACK1SEGMENTSTACK
DW64DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAX,OFFSETIRQ7;修改8259中断7中断矢量
MOVSI,003CH
MOV[SI],AX
MOVAX,CS
MOVSI,003EH
MOV[SI],AX
INAL,21H;修改IMR,使IRQ7中断允许
ANDAL,7FH
OUT21H,AL
MOVAL,90H;8253初始化
OUT43H,AL
A1:
MOVAL,05H;赋82532号计数器初值
OUT42H,AL
HLT;停机,等待中断
STI
JMPA1
;IRQ7中断服务程序
IRQ7:
MOVAX,014DH;显示“M”
INT10H
MOVAX,0120H;显示空格
INT10H
MOVAL,20H;普通EOI命令
OUT20H,AL
IRET;中断返回
CODEENDS
ENDSTART
实验步骤
(1)按图接线。
(2)输入源程序,进行编译、链接和加载。
(3)运行程序,并按动KK1键,观察是否每按6次,屏幕上显示一个“M”字符。
2.8253定时实验
编写程序,在屏幕上循环显示“0”-“9”十个数。
提示:
利用8253的0# 通道来实现循环定时,每次定时到产生中断(IRQ0),在中断程序中显示一个数字。
实验线路如图5-3所示。
图5-3实验2线路
五、思考题
1.在将计数初值赋给8253后,马上就可以启动并进行定时或计数吗?
2.若CLK0输入1.1925MHZ的时钟,能否在OUT0实现输出30ms的定时脉冲?
实验六可编程接口芯片综合应用实验
一、实验目的
1.掌握可编程并行接口芯片8255的用法。
2.掌握可编程串行接口芯片8259的用法。
2.掌握可编程串行接口芯片8253的用法。
3.学习8255、8253、8259的综合应用。
二、实验设备
1.PC机一台;
2.TDN86/88教学实验系统一台。
三、实验内容
(1)彩灯控制实验
设计硬件连线,编写程序,完成下面功能:
8个彩灯循环流水显示(每隔1秒点亮一个灯),当按下开关KK1时,8个彩灯一起闪烁4次,然后恢复流水点亮。
提示:
通过8255输出彩灯状态,1秒定时由8253配合软件完成,彩灯闪烁由开关KK1连接8259中断实现。
(2)信号灯控制实验
设计硬件连线,编写程序,完成下面功能:
用6个彩灯模拟十字路口的交通灯,平时主街绿灯通行,副街红灯亮。
当传感器检测到副街有车要通过时,主街黄灯亮2秒后红灯亮,副街绿灯亮,副街通行30秒后恢复成平时主街通行的状态。
提示:
用8255输出交通灯的状态,用开关来模拟传感器检测副街是否有车,定时用8253配合软件来实现。
四、实验系统中芯片地址介绍
1.8259A的端口地址为20H和21H,中断矢量地址与中断号之间的关系如下表:
中断输入端
0
1
2
3
4
5
6
7
功能类型号
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
矢量地址
20H
|
23H
24H
|
27H
28H
|
2BH
2CH
|
2FH
30H
|
33H
34H
|
37H
38H
|
3BH
3CH
|
3FH
说明
可用
可用
可用
串口2
串口1
可用
可用
可用
2.8255端口地址如下表:
寄存器
地址
A口
60H
B口
61H
C口
62H
控制寄存器
63H
3.8253端口地址如下表:
寄存器
地址
0#计数器
40H
1#计数器
41H
2#计数器
42H
控制寄存器
43H
附录一Wmd86联机软件使用说明
Wmd86为微机原理教学实验系统的联机软件,该软件支持汇编语言和C语言编译环境,具有高度可视化的源语言级跟踪调试界面,能够对寄存器和变量实时监视和即时修改,能够实时监视堆栈,集成专用图形显示窗口。
一、界面窗口介绍
主界面窗口如下,主要分为三部分:
程序编辑区、寄存器/变量/堆栈区和输出区,下面分别加以介绍。
1.程序编辑区:
位于界面右上部,用户可在程序编辑区用“新建”命令打开一个新文档或用“打开”命令打开一个已存在的文档,在文档中用户可编辑程序。
用户可在程序编辑区打开多个文档,点击文档标签可激活任一文档。
编译、链接、加载以及调试命令只针对当前活动文档。
用户调试程序时,调试界面亦在文档中显示。
2.寄存器/变量/堆栈区:
位于界面左上部,包括三个部分:
寄存器区、变量区和堆栈区。
寄存器区和变量区用于实时监视寄存器和变量,也能够修改寄存器和变量的值,堆栈区主要用于实时监视堆栈寄存器。
点击寄存器区标签可观察和修改寄存器,点击变量区标签可观察和修改变量,点击堆栈区标签可观察堆栈寄存器。
执行相关操作后寄存器、变量和堆栈寄存器的值自动刷新,如果寄存器区刷新后的值和刷新前的值相同,则显示为蓝色,如果不同,则显示为红色。
变量区和堆栈区刷新前和刷新后都为蓝色。
想修改寄存器或变量,用鼠标左键单击某寄存器或变量,当寄存器或变量值的区域变为蓝色后输入修改后的值,然后回车。
如果修改的是寄存器,输入的值的长度与寄存器的长度相同,回车后修改正确,如果输入的值的长度和寄存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 指导书 智能