合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 思考题部分参考答案1 较为完善Word文件下载.docx
《合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 思考题部分参考答案1 较为完善Word文件下载.docx》由会员分享,可在线阅读,更多相关《合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 思考题部分参考答案1 较为完善Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
![合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 思考题部分参考答案1 较为完善Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/9275cb54-ee08-4f26-8c4e-a5a1a7bf6cfd/9275cb54-ee08-4f26-8c4e-a5a1a7bf6cfd1.gif)
2、编一程序把3000H-3009H中内容按从大到小排列;
如果是有符号数怎么改写程序。
硬件一静态存储器扩展实验
5.改变实验程序,按非规则字写存储器,观察实验结果。
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
STARTPROCFAR
ASSUMECS:
CODE
MOVAX,8000H;
存储器扩展空间段地址
MOVDS,AX
AA0:
MOVSI,0000H;
数据首地址
MOVCX,0010H
MOVAX,0000H
AA1:
INCSI
MOV[SI],AX
INCAX
;
INCSI
LOOPAA1
MOVAX,4C00H
INT21H;
程序终止
STARTENDP
CODEENDS
ENDSTART
6.改变实验程序,按字节方式写存储器,观察实验现象。
MOV[SI],AX
7.将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。
JMPAA1
硬件二8259中断控制实验
1.在中断中完成BCD码转换为二进制数。
将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起始的内存单元中,每次中断完成一个二位十进制数的BCD码转换。
实验步骤:
将四个二位十进制数的BCD码存入3500H~3507H中,即:
先键入E3500,然后输入0102030405060708.运行程序,按一次单次脉冲开关KK1+,查看3510内容,应为0ch。
再按一次单次脉冲开关KK1+,查看3511内容,应为22。
继续发中断,依次查看3512,3513内容。
.MODELTINY
IO8259_0EQU0260H
IO8259_1EQU0261H
.DATA
BUFFERDB8DUP(?
ReDisplayFlagDB0
.STACK100
.CODE
START:
MOVAX,@DATA
MOVDS,AX;
初始化数据段
MOVES,AX
PUSHDS
CALLWriIntver
CLI
POPDS
初始化主片8259
MOVDX,IO8259_0
MOVAL,13H
OUTDX,AL;
ICW1
MOVDX,IO8259_1
MOVAL,08H
ICW2
MOVAL,09H
ICW4
MOVAL,0;
OCW1
OUTDX,AL
MOVSI,3500H
MOVDI,3510H
STI
NOP
JMPAA1
WriIntverPROCNEAR
PUSHES
MOVAX,0
MOVES,AX
MOVDI,20H
LEAAX,MIR7
STOSW
MOVAX,CS
POPES
RET
WriIntverENDP
MIR7:
STI
XORAX,AX
MOVAL,[SI]
ADDAL,AL
MOVBL,AL
ADDAL,BL
ADDAL,[SI]
MOV[DI],AL
INCDI
MOVAL,20H
中断结束命令
IRET
2.在上述试验基础上,第五次中断结束中断,再按单次脉冲开关KK1+将无法进入中断服务程序。
.MODELTINY
IO8259_0EQU0260H
IO8259_1EQU0261H
.DATA
BUFFERDB8DUP(?
ReDisplayFlagDB0
counterDB06H
.STACK100
.CODE
START:
MOVDS,AX
MOVES,AX
PUSHDS
CALLWriIntver
CLI
POPDS
;
MOVDX,IO8259_0
MOVAL,13H
OUTDX,AL;
MOVDX,IO8259_1
MOVAL,08H
MOVAL,09H
MOVAL,0;
OUTDX,AL
MOVSI,3500H
MOVDI,3510H
STI
AA1:
JMPAA1
WriIntverPROCNEAR
PUSHES
MOVAX,0
MOVES,AX
MOVDI,20H
LEAAX,MIR7
STOSW
MOVAX,CS
POPES
RET
WriIntverENDP
MIR7:
DECcounter;
自减,5次
JNAAA3;
(待测试)
XORAX,AX
MOVAL,[SI]
ADDAL,AL
MOVBL,AL
ADDAL,BL
INCSI
ADDAL,[SI]
MOV[DI],AL
INCDI
MOVAL,20H
IRET
AA3:
NOP
JMPAA3
ENDSTART
3:
编写程序利用8254计数器0和计数器1分别作为8259IR6,IR7的中断请求信号;
将8255PA0接到发光二极管D0,8255PA7接到发光二极管D1;
使DO,D1闪动,D0每闪动10次D1闪动一次。
4、利用中断实现8255实验一(基本输入输出实验)
SAVE_ALDB?
MOVAX,@DATA
MOVDS,AX
MOVES,AX
初始化主片8255
MOVDX,0273H
MOVAL,90H
MOVCX,0
MOVDX,0271H;
给B口送亮灯信号
MOVAL,SAVE_AL
MOVDX,0270H;
从A口读入控制灯的信号
INAL,DX
MOVSAVE_AL,AL
CALLDELAY
MOVAL,20H;
zhongduan
DELAY:
PUSHCX;
延时
MOVCX,0F000H
AA2:
PUSHAX
POPAX
LOOPAA2
POPCX
RET
硬件三8255并行接口实验
1:
执行程序后,使发光二极管闪动。
CODE
MOVDX,0273H
MOVAL,80H
MOVBX,0000H
MOVDX,0270H
MOVAL,BH
NOTBH
MOVDX,0271H
MOVAL,BL
NOTBL
PUSHCX
RET
2:
执行程序后,使发光二极管高八位和低八位亮灭相反。
(X86文档)
MOVBX,00FFH
1、例子程序中只展示了8155的输入输出和读写数据RAM的功能,8155还有定时器/计数器的功能,有兴趣读者可以自己编写程序,通过8155来实现定时,当作定时器用时,如何接线?
2、若是要对PC口位操作,应该如何编写程序?
3、如何使用8155实现键盘扫描和LED显示?
(星研文档)
1、如何对8255的PC口进行位操作?
MOVAL,01H
OUTDX,AL
MOVAL,05H
MOVAL,07H
硬件四8254定时/计数器应用实验
将CLK0接到时钟源,使程序每隔一秒显示一次M。
2:
编写程序使8254计数器0工作于方式0,OUT0接到发光二极管,使其闪动。
(x86文档)
1、8253还有其它五种工作方式,其它工作模式下,硬件如何设计?
程序如何编写?
2、使用8253,编写一个实时钟程序。
.MODELTINY
.STACK100
MOVDX,0263H
MOVAL,37H
OUTDX,AL
MOVDX,0260H
MOVAL,53H
OUTDX,AL
MOVAL,19H
MOVAL,77H
MOVDX,0261H
MOVAL,60H
MOVAL,00H
MOVAL,0B7H
MOVDX,0262H
JMP$
ENDSTART