汇编实验报告Word文件下载.docx
《汇编实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编实验报告Word文件下载.docx(39页珍藏版)》请在冰豆网上搜索。
步骤2:
汇编
步骤3:
连接
步骤4:
运行及调试
九、实验数据及结果分析:
(实验运行结果介绍或者截图,对不同的结果进行分析)
使用debug调试命令后得到的程序运行结果,可以通过追踪命令来显示程序的每一步的执行过程
部分程序源代码:
DATASEGMENT
ARYDB17,5,40,0,67,12,34,78,32,10
MAXDB?
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
BEGIN:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETARY
MOVCX,9
MOVAL,[SI]
LOP:
INCSI
CMPAL,[SI]
JAEBIGER
BIGER:
DECCX
JNZLOP
MOVMAX,AL
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
十、实验结论:
(联系理论知识进行说明)
成功实现了要求实验内容中取最大值的方法,并且能通过T,G,D等调试命令详细追踪到每一步程序的实现,能够让我们更加充分的了解汇编程序是怎样工作的。
十一、总结及心得体会:
通过本次实验我成功学习并掌握了简单的汇编程序的编译方法以及它的调试方法,可以更加清晰地了解到汇编程序的运行过程。
十二、对本实验过程及方法、手段的改进建议:
可以让我们尝试更多的汇编程序设计方法。
报告评分:
指导教师签字:
A2-411实验时间:
2016.5.26
A2-411
8259中断控制器实验
1.8259A的工作过程
中断源在中断请求输入端IR0-IR7上产生中断请求
涉及问题:
中断请求的触发方式有哪些?
中断请求被锁存在IRR中,并经IMR屏蔽,结果送优先权电路判优
IRR/IMR的数据是自动写入还是通过软件编程设定?
优先权电路检出优先权最高的中断请求位,设置ISR的对应位(置1)
中断判优的依据是什么?
ISR是自动写入还是通过软件编程设定?
8259A控制逻辑接受中断请求,向CPU输出INT信号
CPU接受INT信号,进入两个INTA中断响应周期,第一个周期通知8259A做好响应准备,第二个周期8259A将响应的中断类型号输出到DB上
CPU中断响应过程中的“配套操作”有哪些?
CPU读取该中断类型号,转移到相应的中断处理程序
如何通过中断类型号找到中断处理程序?
(后面详解)
2、8259A的命令字
ICW1/OCW2/OCW3复用同一个地址(A0=0);
剩下的命令字复用另一个地址(A0=1),在本系统中,复用地址分别是0FFE0H和0FFE1H,预置数类别顺序为先初始化命令字,再操作命令字,预置数设定顺序为下标顺序。
0FFE0H用于ICW1,OCW2和OCW3,0FFE1H用于ICW2,ICW3,ICW4和OCW1。
本次实验中,ICW3、OCW3不需要进行设定。
本实验只需要用一片8259A进行中断控制,中断源采用单脉冲信号,中断触发方式属于边沿触发,且8086/8088系统必须设定ICW4,因此ICW1=00010011B=13H
本系统中,设定使用中断类型8来服务IR7边沿触发产生的中断,所以ICW2=00001000B=08H(详细说明见第5页PPT)
对于单片8259A,不需要设定ICW3,而8086/8088系统需要确定ICW4。
因此跳过ICW3的设定直接设定ICW4。
在该实验中,我们使用全嵌套方式(最常用的也是默认的工作方式,只开放比当前中断优先级高的中断,且中断优先权的级别固定,按照IR0-IR7逐级次之。
)和普通EOI方式(一般的中断结束方式,在中断程序返回前,输出中断结束命令把ISR当前优先级最高的对应位清零)操作,因此ICW4=00001001B=09H(详细说明见第6页PPT)
对于OCW,假设使用OCW1来屏蔽除IR7外其它所有中断,这样OCW1=01111111B=7FH;
选用普通EOI,则OCW2=00100000=20H(详细说明见第7页PPT),流程图如下
3、实验参考电路及接线说明(8259部分)
SP插孔和8259A的IR7插孔相连(实验中可以选择任意一个或多个中断源)
连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与位于地址线A0引出孔所在位置下方的使能控制输出端G作对应连接。
8259的CS端连138译码器的Y0孔。
将8259的单元总线接口D0-D7,用8芯排线或8芯扁平线与数据总线单元D0-D7任一接口相连。
理解中断技术的基本原理
掌握8259中断控制器的基本原理
学会编写中断服务程序
掌握Dias实验箱及仿真软件的使用方法
编制程序,利用8259芯片的IRi作为中断源,产生多级中断,系统显示中断号,比如:
IR7作为中断源则显示7。
Dias实验箱及仿真软件
步骤1依照电路图链接线路
编写主程序
8259初始化编程
确定中断类型号和中断向量表
9、实验数据及结果分析:
图为实现了多级中断后,led数码管的变化情况。
源代码:
CODE,ES:
CODE
ORG3400H
H8:
JMPP8259
ZXKEQU0FFDCH
ZWKEQU0FFDDH
LEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H
BUFDB?
?
Port0EQU0FFE0H
Port1EQU0FFE1H
P8259:
CLI
CALLWP;
初始化显示“P.”
MOVAX,OFFSETINT8259
MOVBX,003CH
MOV[BX],AX
MOVBX,003EH
MOVAX,0000H
MOVAX,OFFSETINT8359;
;
MOVBX,0034H
MOV[BX],AX;
增加一个新的IR5内容
MOVBX,0036H
CALLFOR8259
movsi,0000h
STI
CON8:
CALLDIS
JMPCON8
------------------------------------
INT8259:
cli
MOVBX,OFFSETBUF
MOVBYTEPTR[BX+SI],07H
CMPSI,0007H
JZX59
XX59:
MOVAL,20H
MOVDX,Port0
OUTDX,AL
movcx,0050h
xxx59:
pushcx
calldis
popcx
loopxxx59
movcx,offsetCON8
IRET
X59:
MOVSI,0000H
CALLWP
JMPXX59
==============================
INT8359:
MOVBYTEPTR[BX+SI],05H
JZY59
YY59:
YYY59:
loopYYY59
Y59:
JMPYY59
FOR8259:
MOVAL,13H
MOVAL,08H
MOVDX,Port1
MOVAL,09H
MOVAL,5FH;
IRQ7;
RET
---------------------------
WP:
MOVBUF,08H;
MOVBUF+1,10H
MOVBUF+2,10H
MOVBUF+3,10H
MOVBUF+4,10H
MOVBUF+5,10H
--------------------------------
DIS:
MOVCL,20H
DIS1:
MOVAL,[BX]
PUSHBX
MOVBX,OFFSETLED
XLAT
POPBX
MOVDX,ZXK
MOVAL,CL
MOVDX,ZWK
PUSHCX
MOVCX,0100H
DELAY:
LOOP$
POPCX
CMPCL,01H
JZEXIT
INCBX
SHRCL,1
JMPDIS1
EXIT:
MOVAL,00H
--------------------------
ENDH8
成功实现了要求实验内容中8259的单级中断和多级中断的实现,成功通过LED灯显示了中断程序的相关过程,实现了8259的中断过程。
通过本次实验我成功学习并掌握了简单的8259中单级中断和多级中断的编译方法,更加充分的认识到了8259中断控制器的使用方法。
可以让我们尝试更多的关于8259中断程序设计方法。
2016.6.1
8253时钟中断计时实验
1、8253基本功能
具有三个相互独立的16位计数器通道
每个通道都可设定以6种工作方式之一进行计数/定时
每个计数器都可设为按二进制或BCD码计数
具有计数和定时功能,基于减1计数工作
定时器减为0后,可自动装入定时常数初值,并产生输出信号
在减1操作中,任何时刻计数器的值都可由CPU经计数输出寄存器读取
2、8253工作方式与功能
方式0:
计数结束产生中断输出(软件控制)
方式1:
重复触发的单稳输出(硬件控制)
方式2:
分频器(软件控制)
方式3:
方波发生器(软件控制)
方式4:
选通信号发生器(软件触发)
方式5:
选通信号发生器(硬件触发)
软件控制:
程序写入控制字和初值后就可计数
硬件控制:
写入控制字和初值后,由GATE信号启动计数。
3、有关8253芯片
8253基本工作方式就是对CLK时钟脉冲进行计数。
CLK脉冲可以是均匀的、连续的、周期精确的,也可以是不均匀的、断续的、周期不定的。
无论8253工作于何种方式,当计数器减1到0时,在OUT引脚上必定有电平或脉冲输出,OUT引脚输出的信号可以是方波、电平或脉冲等,由工作方式决定。
8253每个计数器都可以选择6种工作方式之一进行工作。
在控制字中进行设定。
二进制方式计数的最小值是0001H,最大值为0000H,即216=65536
二-十进制(BCD码)计数的最小值是0001H,最大值为0000H,即104=10000
回顾8259中断控制器芯片的使用方法
掌握8253可编程计数/定时器芯片的原理
结合使用8253、8259芯片,联合设计实现时钟中断计时实验
1.利用8253的多个通道产生周期为1s的方波信号(方式3),该信号作为8259芯片的中断源,用边沿触发方式产生中断(单级中断),在七段数码管上显示发生中断的次数,构成一个“秒表”(显示范围为0-9)。
8、实验步骤:
步骤1:
链接电路图
主程序、中断程序功能的设计
8253、8259芯片控制字,初始化顺序
时序控制
图为实现中断秒表计数器。
COUNTDB0
TIMEDB0
Port8253_0EQU0FFE0H
Port8253_1EQU0FFE1H
Port8253_2EQU0FFE2H
Port8253_3EQU0FFE3H
初始化显示“00”
;
设置中断服务
初始化
CALLSETTING8253
CALLSETTING8259
------------------INIT8259------------------
XORCOUNT,1
MOVCX,OFFSETCON8
INCTIME
CMPTIME,0AH;
10
JZRESET
X59DIS:
MOVCL,TIME
MOVBUF,CL
RESET:
MOVTIME,0;
TIME=0
JMPX59DIS
================设置8259==============
SETTING8259:
MOVAL,13H
MOVAL,7FH;
IRQ7
-------------数码管初始显示00xxxx--------------
MOVBUF,00H
-------------数码管显示-------------------
===========设置8253============
SETTING8253:
MOVDX,Port8253_3
MOVAL,036H;
控制字,10计数器2,11先写低8位,在写高8位,011方式3,1二进制计数
MOVDX,Port8253_0
MOVAL,00;
低8位
OUTDX,AL;
MOVAL,96H;
高8位
OUTDX,AL;
成功实现了要求实验内容中使用8253和8259中断控制器实现了LED秒表计数的方法。
通过本次实验我成功学习并掌握了简单的8253和8259中断控制的编译方法以及它的调试方法。
可以让我们尝试更多的8253汇编程序设计方法。
2016.6.8
8255A并行可编程接口芯片实验
8255的工作方式
方式0——基本输入/输出方式,不用联络信号,不用中断。
A组和B组都可以作为输入/输出,而且输出是锁存的.
方式1——选通输入输出方式,与方式0相比,它的主要特点是当A口、B口工作于方式1时,C口的某些I/O线被定义为A口和B口在方式1下工作时所需的联络信号线,这些线已经定义,不能由用户改变。
A口工作于方式1输出时,用PC3,PC6和PC7作联络线。
C口剩余的两个I/O线PC4和PC5工作于方式0。
该方式下输入输出均带锁存器。
实验题目1---实验箱参考连线
PC1的状态获取:
INAL,DX;
DX是PC口的地址
TESTAL,02H;
TEST做AND操作,但是不修改AL的值
JZJUMP;
PC1=0跳转,PC1=1顺序执行
掌握8255并行可编程芯片的使用和编译方法。
1.检测8255的PC1连接开关信号的控制位,当开关为高电平时,PA口和PB口连接的12只发光二极管按照二进制顺序加1的方式点亮(亮灯表示1,不亮表示0)。
A口和B口工作在方式0。
步骤1按图连接好电路图
设置A口输入,B口输出
循环,改变B口输出
如图所示,成功实现12只发光二极管按二进制加1的方式顺序点亮。
ORG32F0H
PAEQU0FFD8H
PBEQU0FFD9H
PCEQU0FFDAH
PCTLEQU0FFDBH
H3:
MOVAL,89H
MOVDX,PCTL
OUTDX,AL;
MOD:
0,
MOVBX,0FFFH
MOVDX,PC
JUMP:
INAL,DX
TESTAL,02H
JZJUMP
DECBX
MOVDX,PA
MOVAL,BL
INCDX
MOVAL,BH
CALLDELAY1
JUMP2:
JZJUMP2
JMPJUMP
DELAY1:
PUSHAX
MOVCX,0010H
DELY2:
CALLDELAY2
LOOPDELY2
POPAX
DELAY2:
MOVCX,1000H