微机原理报告.docx
《微机原理报告.docx》由会员分享,可在线阅读,更多相关《微机原理报告.docx(20页珍藏版)》请在冰点文库上搜索。
微机原理报告
信息科学与工程学院
微机实验报告书
课题:
微机原理与接口技术
班级:
通信
学号:
姓名:
指导教师:
二〇一〇年十二月
phnbriwn假日无线网密码
目录
一、绪论............................................................3
二、双色灯实验....................................................3
2.1实验要求,目的,..............................................3
2.2实验电路连线................................................4
2.3实验说明和实验步骤...........................................4
2.4实验源代码..................................................4
2.5实验结果分析及总结..........................................5
三、定时器/计数器实验...........................................5
3.1实验要求,目的,..............................................5
3.2实验电路连线.................................................6
3.3实验说明和实验步骤...........................................7
3.4实验源代码..................................................8
3.5实验结果分析及总结........................................10
四、软件实验........................................................
五、实验总结分析和感想..........................................11
六、参考文献.......................................................11
二、双色灯实验
2.1实验要求,目的
一.实验要求
编写程序,以8255为输出口,控制四个双色灯按要求发光。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
再转状态,东西绿灯通车,南北灯灯。
过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯
二、实验目的
1.学习单板方式下扩展简单I/O接口的方法以双色灯的使用。
2.进一步学习微处理器的编程技术。
2.2实验电路连线
8255的CS片选接至适配板上138译码处的200H~207H插孔。
2.3实验说明和实验步骤
1、因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一
个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通
车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,
东西仍然红灯。
再转状态,东西绿灯通车,南北灯灯。
过一段时间转状态4,东西绿灯闪几
次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1。
2、双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当
红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平
时,绿灯亮;两端都加高电平时,黄灯亮
2.4.实验源代码.
D1EQU10H
D2EQU200H
DATASEGMENT
PBDB?
DATAENDS
STACKSEGMENTSTACK
STADW50DUP(?
)
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
PUSHCS
POPDS
MOVDX,203H;设置为全输出
MOVAL,80H
OUTDX,AL
MOVDX,200H
MOVAL,00
OUTDX,AL;清LED
MOVDX,200H;全红
MOVAL,0F0H
OUTDX,AL
MOVBX,7fH
CALLDLY
BG:
MOVAL,01011010B;南北绿,东西红
OUTDX,AL
MOVBX,D2
CALLDLY
MOVCX,03H
XH1:
ANDAL,0F5H;绿灭
OUTDX,AL
MOVBX,D1
CALLDLY
ORAL,0aH;绿亮
OUTDX,AL
MOVBX,D1
CALLDLY
LOOPXH1
ORAL,0a0H;南北黄
OUTDX,AL
MOVBX,D1
CALLDLY
MOVBX,D1
CALLDLY
MOVAL,10100101B;南北红,东西绿
OUTDX,AL
MOVBX,D2
CALLDLY
MOVCX,03
XH2:
ANDAL,0FaH
OUTDX,AL
MOVBX,D1
CALLDLY
ORAL,05H
OUTDX,AL
MOVBX,D1
CALLDLY
LOOPXH2
ORAL,50H
OUTDX,AL
MOVBX,D1
CALLDLY
MOVBX,D1
CALLDLY
JMPBG
DLYPROCNEAR
PUSHCX
DDD:
MOVCX,2fffH
CCC:
LOOPCCC
DECBX
CMPBX,0
JNEDDD
POPCX
RET
DLYENDP
CODEENDS
ENDSTART
2.5实验结果分析及总结
一,实验结果是看到四个交通灯,按规律交替地变化,以东西南北两两交替地实现了交通控制的功能,
二,源代码编写分析:
先把10H和200H赋给两个端口,在数据段定义PB的空间,里面内为空,然后在堆栈段定义50个字节的内容,并把长度赋值给TOP。
在程序的正文部分,先向控制端口写方式控制字,然后通过A端口向外设输出信息,即使LED灯全灭。
然后分时段向外设写入灯的控制信息实现,双色灯的交替变化,00是全灭控制,01控制灯变红,02控制灯变绿,03控制变黄,最后通过延迟设计使等每隔几秒就亮和灭。
三、定时器/计数器实验
3.1实验要求,目的
一、实验要求
编程将8253定时器0设定为方式3,定时器1设定在方式2,定时器0输出作为定时
器1的输入,定时器1的输出接在一个LED上,运行后可观察到该LED在不停闪烁。
二、实验目的
了解8253定时器的硬件连接方法及时序关系。
掌握8253的各种模式编程及原理。
3.2实验电路连线
GATE0~GATE1连至电源+5V,CLK0接OUT1,OUT1用线连至一个发光管(L0),CLK1
接1MHZ,CS53片选孔用线连至译码处208~~20F这个孔。
3.3实验说明和实验步骤
四、实验说明
8253的工作频率为0~2MHZ,所以输入的CLK频率必须在2MHZ以下。
3.4实验源代码
;"自由扩展实验例程"8253定时器实验
CONTROLequ20bh
COUNT0equ208h
COUNT1equ209h
COUNT2equ20ah
codesegment
assumecs:
code
startprocnear
moval,36h;00110110B;计数器0,16位,方式3,二进制
movdx,CONTROL
outdx,al
movax,10000
movdx,COUNT0
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
moval,76h;01110110B;计数器1,16位,方式3,二进制
movdx,CONTROL
outdx,al
movax,100
movdx,COUNT1
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
jmp$
startendp
codeends
endstart
3.5实验结果分析及总结
实验结果清晰地显示了,每隔一个固定的时间灯就会亮一次的过程,可以说达到了预期的实验效果。
8253芯片实现定时功能,主要步骤是,先向芯片写入初始计数值,通过初始值控制时间的定时功能,第二步是向相应的端口写入方式控制字,以实现对芯片方式的控制,和中断结束的控制。
8253芯片主要的功能有计数和定时功能,必须要对8253芯片进行初始化编程才能实现相应的功能,主要两个内容一是:
方式控制字,二是:
写入计数初值。
这些内容的写入主要是向相应的端口写入。
另外要特别注意端口的选择,这需要根据A0,位来分析判断决定。
四、软件实验
与数据有关的寻址方式:
以MOV指令为例
•立即寻址MOVAX,3069H
•寄存器寻址MOVAL,BH
•直接寻址MOVAX,[2000H]
•寄存器间接寻址MOVAX,[BX]
•寄存器相对寻址MOVAX,COUNT[SI]
•基址变址寻址MOVAX,[BP][DI]
•相对基址变址寻址MOVAX,MASK[BX][SI]
•
(1)立即寻址方式*——操作数在指令中给出
•指令格式:
MOVAL,5
•MOVAX,3064H
•MOVAL,‘A’
•
(2)寄存器寻址方式*—操作数在指定的寄存器中
•MOVAX,BX
•MOVAL,BH
•MOVAX,3064H
•(3)直接寻址方式*—有效地址EA由指令直接给出
•例:
MOVAX,[2000H]
•EA=2000H,假设(DS)=3000H,那么PA=32000H
•(4)寄存器间接寻址*—EA在基址寄存器(BX/BP)
•或变址寄存器(SI/DI)中
•MOVAX,[BX]PA=16d(DS)+(BX)
•MOVAX,ES:
[BX]PA=16d(ES)+(BX)
•MOVAX,[BP]PA=16d(SS)+(BP)
•5)寄存器相对寻址方式*
•指令格式:
MOVAX,COUNT[SI]或
•MOVAX,[COUNT+SI]
•假设(DS)=3000H,(SI)=2000H,COUNT=3000H,
•则:
PA=35000H
•假设(35000H)=1234H,那么(AX)=1234H
•(6)基址变址寻址方式*
•指令格式:
MOVAX,[BX][DI]
•MOVAX,[BX+DI]
•MOVAX,ES:
[BX][SI]
•(7)相对基址变址寻址方式
•
•MOVAX,MASK[BX][SI]
•或MOVAX,MASK[BX+SI]
•或MOVAX,[MASK+BX+SI
数据传送指令:
通用数据传送指令
MOV、PUSH、POP、XCHG
累加器专用传送指令
IN、OUT、XLAT
地址传送指令
LEA、LDS、LES
标志寄存器传送指令
LAHF、SAHF、PUSHF、POPF
类型转换指令
CBW、CWD
例:
LEABX,[BX+SI+0F62H]
LDSSI,[10H]
LESDI,[BX]
movdx,100
inal,61h
andal,11111100b
sound:
xoral,2;101循环
out61h,al;ONOFFON循环
movcx,140h;脉宽
Wait1:
loopwait1
decdx
jnesound
例:
INAX,28H
MOVDATA_WORD,AX
例:
MOVDX,3FCH
INAX,DX
例:
OUT5,AL
换码指令:
XLAT或 XLATOPR
执行操作:
(AL)((BX)+(AL))
例:
MOVBX,OFFSETTABLE;(BX)=0040H
MOVAL,3
XLATTABLE(此处TABLE仅为提高可读性)
指令执行后(AL)=33H(‘3’的ASCII码)
算术指令:
加法指令
ADD、ADC、INC
减法指令
SUB、SBB、DEC、NEG、CMP
乘法指令
MUL、IMUL
除法指令
DIV、IDIV
十进制调整指令
DAA、DAS、
AAA、AAS、AAM、AAD
加法指令
加法指令:
ADDDST,SRC
执行操作:
(DST)(SRC)+(DST)
带进位加法指令:
ADCDST,SRC
执行操作:
(DST)(SRC)+(DST)+CF
加1指令:
INCOPR
执行操作:
(OPR)(OPR)+1
减法指令
减法指令:
SUBDST,SRC
执行操作:
(DST)(DST)-(SRC)
带借位减法指令:
SBBDST,SRC
执行操作:
(DST)(DST)-(SRC)-CF
减1指令:
DECOPR
执行操作:
(OPR)(OPR)-1
求补指令:
NEGOPR
执行操作:
(OPR)-(OPR)
比较指令:
CMPOPR1,OPR2
执行操作:
(OPR1)-(OPR2
例:
x、y、z均为双精度数,分别存放在地址为X,X+2;
Y,Y+2;Z,Z+2的存储单元中,用指令序列实现
wx+y+24-z,并用W,W+2单元存放w
MOVAX,X
MOVDX,X+2
ADDAX,Y
ADCDX,Y+2;x+y
ADDAX,24
ADCDX,0;x+y+24
SUBAX,Z
SBBDX,Z+2;x+y+24-z
MOVW,AX
MOVW+2,DX;结果存入W,W+2单元
逻辑指令:
逻辑运算指令
AND、OR、NOT、XOR、TEST
移位指令
SHL、SHR、SAL、SAR、
ROL、ROR、RCL、RCR
例:
屏蔽AL的第0、1两位
ANDAL,0FCH
例:
置AL的第5位为1
ORAL,20H
例:
使AL的第0、1位变反
XORAL,3
例:
测试某些位是0是1
TESTAL,1
JZEVEN
逻辑左移SHLOPR,CNT
逻辑右移SHROPR,CNT
算术左移SALOPR,CNT(同逻辑左移)
算术右移SAROPR,CNT
例:
(BX)=84F0H
(1)(BX)为无符号数,求(BX)/2
SHRBX,1;(BX)=4278H
(2)(BX)为带符号数,求(BX)×2
SALBX,1;(BX)=09E0H,OF=1
(3)(BX)为带符号数,求(BX)/4
MOVCL,2
SARBX,CL;(BX)=0E13CH
例:
(AX)=0012H,(BX)=0034H,把它们装配成(AX)=1234H
MOVCL,8
ROLAX,CL
ADDAX,BX
(3)(BX)=84F0H,把(BX)中的16位数每4位压入堆栈
MOVCH,4;循环次数
MOVCL,4;移位次数
NEXT:
ROLBX,CL
MOVAX,BX
ANDAX,0FH
PUSHAX
DECCH
JNZNEXT
串处理指令:
设置方向标志指令
CLD、STD
串处理指令串重复前缀
MOVSB/MOVSWREP
STOSB/STOSWREPE/REPZ
LODSB/LODSWREPNE/REPNZ
CMPSB/CMPSW
SCASB/SCASW
五、实验总结分析和感想
这次微机实验时间虽然较短但由于自己对微机的兴趣和自己的认真准备这次实验做得轻松,也许是因为是实验简单的缘故吧,不过从这次实验中学到了许多的东西包括汇编语言的应用和微机的基础硬件知识。
这次实验主要的实验内容是8253芯片和8255芯片的应用和利用汇编语言来实现编程控制实际的硬件电路的工作和状态,通过这两个实验的芯片对上述两个芯片有了进一步的了解和掌握,更加明确了学习相关理论知识的重要性和紧迫性。
今后不能死学书本上的知识,要多于实践,多于理解和逻辑掌握。
通过这两次微机实验的学习,我不仅学会了基本的汇编编程语言,也亲手实现了理解了一些微机理论的知识,明白很多东西并不像我们预期的那么难,只要把握好,一些看来不可能实现的东西其实可以做很好,不管做什么,最重要是要有信心。
六、参考文献
一,《微机原理与接口技术》.梁建武主编
二,《IBM—PC汇编程序设计》沈美明,温冬婵编著