微机原理实验报告.docx
《微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告.docx(86页珍藏版)》请在冰豆网上搜索。
微机原理实验报告
《微机原理与接口技术》
实验报告
姓名:
沈俊卫1145533129
曹家恒1145523104
班级:
11电气1班
专业:
电气工程及其自动化
学院:
电气与信息工程学院
2014年6月
实验一数据传送
一、实验目的
1.掌握与数据有关的不同寻址方式。
2.继续熟悉实验操作软件的环境及使用方法。
二、实验设备
PC微机一台、TD-PIT+或TD-PIT++实验系统一套。
三、实验内容
本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
参考实验程序如下。
实验程序清单
DDATASEGMENT
MSRDB"HELLO,WORLD!
$"
LENEQU$-MSR
DDATAENDS
EXDASEGMENT
MSDDBLENDUP(?
)
EXDAENDS
MYSTACKSEGMENTSTACK
DW20DUP(?
)
MYSTACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DDATA,ES:
EXDA
START:
MOVAX,DDATA
MOVDS,AX
MOVAX,EXDA
MOVES,AX
MOVSI,OFFSETMSR
MOVDI,OFFSETMSD
MOVCX,LEN
NEXT:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
INCDI
DECCX
JNZNEXT
PUSHES
POPDS
MOVDX,OFFSETMSD
MOVAH,9
INT21H
KEY:
MOVAH,1
INT16H
JZKEY
MOVAX,4C00H
;定义源数据段
;定义附加数据段
;定义堆栈段
;定义代码段
;装载数据段寄存器
;装载附加数据段寄存器
;设置SI
;设置DI
;开始传输数据
;将附加段寄存器指向的段值赋给数据段寄存器
;判断是否有按键按下?
;(为观察运行结果,使程序有控制的退出)
;结束程序退出
INT21H
CODEENDS
ENDSTART
将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示。
MOVBX,0
MOVCX,LEN
NEXT:
MOVAL,MSR[BX]
MOVES:
MSD[BX],AL
INCBX
LOOPNEXT
4、实验步骤
(1)运行Tdpit集成操作软件,编写实验程序。
(2)编译连接无误后,点击,进入调试环境,进行程序的调试。
如图1-1所示
图1-1进入调试环境
(3)按F8键单步运行程序,执行完MOVDS,AX语句后,观察DS寄存器中出现的段地址。
激活Dump数据显示区,用Ctrl+G命令,输入要查看的数据区地址-“0C69:
0000”。
如图1-2所示。
可以在Dump数据区看到DS数据段中MSR源数据串——"HELLO,WORLD!
$"。
如图1-3所示。
图1-3DS源数据段数据
图1-2根据DS值查看数据段
(4)继续单步运行程序,执行MOVES,AX语句后,可以看到ES附加数据段出现的段地址,用同样的方法可以查看ES:
0000的数据。
如图1-4所示。
图1-4根据ES值查看附加数据段
(5)数据传输还没开始进行,此时ES段的数据为空。
继续单步执行完程序,可以看到ES数据段逐渐被写入源数据段DS的数据。
直到数据传输完毕,可以看到ES数据段中目的数据串MSD已经被写入了数据串"HELLO,WORLD!
$"。
如图1-5所示。
图1-5根据ES值查看附加数据段
5、实验结果
实验结果如图1-6和1-7所示
图1-6ES附加数据段
图1-7ES数据段中的内容传送到DS段中
实验二算术运算
1、实验目的
1.掌握运算类指令编程及调试方法。
2.掌握运算类指令对各状态标志位的影响及测试方法。
二、实验设备
PC微机一台、TD-PIT+或TD-PIT++实验系统一套。
3、实验内容及说明
80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表2-1所示的数据类型进行算术运算。
表2-1数据类型算术运算表
二进制双精度加法运算
本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。
实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。
由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。
在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。
实验程序参考如下。
实验程序清单
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
MES1DB'Theresultis:
$'
XLDW65A0H
XHDW0015H
YLDW0B79EH
YHDW0021H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES1
MOVAH,09H
INT21H
MOVAX,XL
ADDAX,YL
MOVBX,AX
MOVAX,XH
ADCAX,YH
PUSHBX
CALLSHWORD
POPBX
MOVAX,BX
CALLSHWORD
WAIT1:
MOVAH,1;判断是否有按键按下
INT16H
JZWAIT1;无按键则跳回继续等待,有则退出
MOVAX,4C00H
INT21H
SHWORDPROCNEAR
MOVBL,AH
CALLSHOW
MOVBL,AL
CALLSHOW
RET
ENDP
SHOWPROCNEAR
PUSHAX
PUSHDX
MOVAL,BL
ANDAL,0F0H;取高4位
SHRAL,4
CMPAL,0AH;是否是A以上的数
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
MOVAL,BL
ANDAL,0FH;取低4位
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
POPDX
POPAX
RET
ENDP
CODEENDS
ENDSTART
4、实验步骤
(1)运行Tdpit集成操作软件,按各实验要求编写实验程序。
(2)分别对实验程序进行编译、链接。
(3)使用运行功能运行程序,观察运行结果。
(4)使用调试功能调试程序,观察在调试过程中,各运算指令执行后,各寄存器、标志位及数据区内容的变化。
(5)更改数据区中的数据,反复测试,验证程序功能。
五、实验结果
加法运算程序结果如图2-1、2-2所示:
图2-1加法运算前寄存器内容
图2-2加法运算后寄存器数据变化
实验三代码转换
一、实验目的
掌握不同进制数及编码相互转换的程序设计方法。
二、实验设备
PC微机一台、TD-PIT+或TD-PIT++实验系统一套。
3、实验内容及说明
计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算或其他信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码对应关系如表3-1所示。
数码转换关系如图3-1所示。
图3-1计算机与外设之间的数码转换关系
表3-1数码转换对应关系
将ASCII码表示的十进制数转换为二进制数
十进制数可以表示为:
Dn×10n+Dn-1×10n-1+…+D0×100=Di×10i其中Di代表十进制数1、2、3…9、0。
上式可以转换为:
?
Di×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0
由上式可归纳十进制数转换为二进制的方法:
从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。
本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。
转换过程的参考流程如图3-2所示。
实验参考程序如下:
实验程序清单
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DDATASEGMENT
MES1DB'Theasciicodeofdecimalcodeare:
$'
BUFDB30H,30H,30H,31H,32H
DB10HDUP(0)
DDATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DDATA
START:
MOVAX,DDATA
MOVDS,AX
MOVSI,OFFSETBUF
MOVBX,000AH
MOVCX,0004H
MOVAH,00H
MOVAL,[SI]
SUBAL,30H
A1:
IMULBX
ADDAL,[SI+01]
SUBAL,30H
INCSI
LOOPA1
MOV[SI],AX图3-2十进制ASCII转换为二进制数参考流程
MOVDX,OFFSETMES1
MOVAH,09H
INT21H
INCSI;显示高字节
CALLSHOW
DECSI;显示低字节
CALLSHOW
WAIT1:
MOVAH,1;判断是否有按键按下
INT16H
JZWAIT1;无按键则跳回继续等待,有则退出
MOVAX,4C00H
INT21H
SHOW:
PROCNEAR
MOVAL,DS:
[SI]
ANDAL,0F0H;取高4位
SHRAL,4
CMPAL,0AH;是否是A以上的数
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
MOVAL,DS:
[SI]
ANDAL,0FH;取低4位
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
RET
ENDP
CODEENDS
ENDSTART
4、实验步骤
(1)运行Tdpit集成操作软件,按照各实验要求分别编写实验程序。
(2)对实验程序进行编译、链接。
(3)使用运行功能执行程序,观察运行结果。
(4)使用调试功能调试程序,观察在调试过程中,程序指令执行之后各寄存器及数据区的内容。
(5)更改数据区中的数据,反复测试,验证程序功能。
五、实验结果
实验结果如图3-3、3-4所示:
图3-3指令执行后寄存器及数据区内容
图3-4程序运行结果
实验四程序的基本结构
1、实验目的
掌握分支程序的设计方法。
2、实验设备
PC微机一台、TD-PIT+或TD-PIT++实验系统一套。
3、实验内容及说明
程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图4-1所示。
本实验要求参考图4-2流程,通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。
图4-1分支结构示意图
实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。
在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。
当循环结束操作时,将BH,BL分别送屏幕显示。
参考实验程序如下。
图4-2分支程序实验流程图
实验程序清单
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DDATASEGMENT
MES1DB'Theleastnumberis:
$'
MES2DB0AH,0DH,'Thelargestnumberis:
$'
NUMBDB0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H
DDATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DDATA
START:
MOVAX,DDATA
MOVDS,AX
MOVSI,OFFSETNUMB
MOVCX,0008H
JCXZA4
MOVBH,[SI]
MOVBL,BH
A1:
LODSB
CMPAL,BH
JBEA2
MOVBH,AL
JMPA3
A2:
CMPAL,BL
JAEA3
MOVBL,AL
A3:
LOOPA1
A4:
MOVDX,OFFSETMES1
MOVAH,09H
INT21H
MOVAL,BL
ANDAL,0F0H
SHRAL,4
CMPAL,0AH
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
MOVAL,BL
ANDAL,0FH
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
MOVDX,OFFSETMES2
MOVAH,09H
INT21H
MOVAL,BH
ANDAL,0F0H
SHRAL,4
CMPAL,0AH
JBC22
ADDAL,07H
C22:
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
MOVAL,BH
ANDAL,0FH
CMPAL,0AH
JBC33
ADDAL,07H
C33:
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
WAIT1:
MOVAH,1
INT16H
JZWAIT1
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
四、实验步骤
(1)运行Tdpit集成操作软件,根据实验要求编写程序,在数据段声明8个的数据:
0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H。
(2)对实验程序进行编译、链接。
(3)使用运行命令运行程序,观察运行结果。
(4)更改8个数据的值,考察程序运行结果是否正确。
五、实验结果
程序执行结果如图4-3、4-4和4-5所示:
图4-3CS段中的内容
图4-4DS段中的内容
图4-5程序运行结果
实验五中断实验(8259)
1、实验目的
1.掌握8259中断控制器的工作原理。
2.掌握系统总线上PCI_INTR中断请求的应用编程方法。
二、实验设备
PC机一台,TD-PIT+或TD-PIT++实验装置一套。
3、实验内容
(1)利用实验平台上的8259控制器,通过查询中断源方法,设计一个查询中断应用实验,处理IR0和IR1发出的中断请求。
(2)利用系统总线上中断请求信号INTR,设计一个单中断应用。
使用单次脉冲模拟中断产生。
编写中断处理程序,在显示器屏幕上显示一个字符。
(3)利用实验平台上8259控制器对系统总线上的中断线INTR进行扩展。
编写程序对8259控制器的IR0和IR1中断请求进行处理。
四、实验原理
1.中断控制器8259简介
中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259的级连,能构成多达64级的矢量中断系统。
它的管理功能包括:
1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。
8259的内部结构和引脚如图5-1所示。
8259的命令共有7个,一类是初始化命令字,另一类是操作命令。
8259的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4各命令字格式如图5-2所示,OCW1-OCW3各命令字格式如图5-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
2.8259寄存器及命令的控制访问
在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
对寄存器和命令的访问控制如表5-1所示。
图5-18259内部结构和引脚图
图5-2(a)ICW1格式
图5-2(b)ICW2格式
图5-2(c)ICW3格式
图5-2(d)ICW4格式
图5-3OCW命令字格式
表5-18259寄存器及命令的访问控制
3.PC微机系统中的8259
在80x86系列PC微机系统中,系统中包含了两片8259中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表5-2示。
两片8259的端口地址为:
主片8259使用020H和021H两个端口;从片使用0A0H和0A1H两个端口。
系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。
在实验平台上系统总线单元的PCI_INTR信号对应的中断线就是PC机保留中断其中的一个。
对PCI_INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。
表5-2PC微机系统中的硬件中断
五、实验说明及步骤
1.8259查询中断应用实验
8259支持查询方式检测中断请求。
具体过程为:
设置8259OCW3中的P位为1即可执行查询命令,8259将下一个I/O读命令视作一次中断响应。
如果有中断请求,则置ISR中的相应位并读其优先级。
从OCW3写操作到I/O读操作期间禁止中断,读出字节的最高位为1表示有中断,最低3位(D2~D0)为最高优先级中断请求源的编码。
查询字格式如图5-4所示。
图5-48259OCW3查询字格式
本实验要求使用这种方法编写程序处理实验单元8259IR0和IR1请求的中断,IR0请求在屏幕上显示字符“0”,IR1请求则在屏幕上显示字符“1”以示中断到来。
IR0和IR1分别用一个单次脉冲的上升沿模拟中断产生。
参考程序流程如图5-5所示。
图5-58259查询中断实验参考程序流程图
图5-68259查询中断实验参考接线图
实验步骤如下:
(1)实验接线图如图5-6所示,按图接线。
(2)运行Tdpit集成操作软件,参考流程图5-5编写程序,编译、链接。
(3)运行程序,按动KK1+、KK2+按键,观察中断响应是否正常。
实验程序清单
IOY0EQU3000H;片选IOY0对应的端口始地址
MY8259_ICW1EQUIOY0+00H;实验系统中8259的ICW1端口地址
MY8259_ICW2EQUIOY0+04H;实验系统中8259的ICW2端口地址
MY8259_ICW3EQUIOY0+04H;实验系统中8259的ICW3端口地址
MY8259_ICW4EQUIOY0+04H;实验系统中8259的ICW4端口地址
MY8259_OCW1EQUIOY0+04H;实验系统中8259的OCW1端口地址
MY8259_OCW2EQUIOY0+00H;实验系统中8259的OCW2端口地址
MY8259_OCW3EQUIOY0+00H;实验系统中8259的OCW3端口地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,MY8259_ICW1;初始化实验系统中8259的ICW1
MOVAL,13H;边沿触发、单片8259、需要ICW4
OUTDX,AL
MOVDX,MY8259_ICW2;初始化实验系统中8259的ICW2
MOVAL,08H
OUTDX,AL
MOVDX,MY8259_ICW4;初始化实验系统中8259的ICW4
MOVAL,01H;非自动结束EOI
OUTDX,AL
MOVDX,MY8259_OCW1;初始化实验系统中8259的OCW1
MOVAL,0FCH;打开IR0和IR1的屏蔽位
OUTDX,AL
QUERY:
MOVAH,1;判断是否有按键按下
INT16H
JNZQUIT;有按键则退出
MOVDX,MY8259_OCW3;向8259的OCW3发送查询命令
MOVAL,0CH
OUTDX,AL
INAL,DX;读出查询字
TESTAL,80H;判断中断是否已响应
JZQUERY;没有响应则继续查