汇编程序及接口技术实验报告2.docx
- 文档编号:9534468
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:40
- 大小:1.79MB
汇编程序及接口技术实验报告2.docx
《汇编程序及接口技术实验报告2.docx》由会员分享,可在线阅读,更多相关《汇编程序及接口技术实验报告2.docx(40页珍藏版)》请在冰豆网上搜索。
汇编程序及接口技术实验报告2
微机汇编程序及接口技术实验报告
专业:
电气自动化
学院:
机电工程学院
指导老师:
班级:
姓名:
学号:
实验时间:
实验地点:
xx大学xxx校区自控楼xx教室
●汇编程序实验:
一、实验目的
1、熟悉汇编程序调试过程
2、掌握算术运算指令运用
3、掌握分支程序的编程和调试方法
二、实验设备
80X86微型计算机
三、实验内容
1、编程并调试显示“HelloWord!
”字符串的汇编程序
TITLEHELLO
DATASEGMENT
STRDB'HelloWorld!
$'
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETSTR
MOVAH,9H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2、A、B、C、D、W是互不相等的在数据段中定义的16位有符号数,并假设加减运算不产生溢出。
编写一个完整段定义的汇编语言程序,计算W=(A+B)×(C—D)。
titleasmprogram1_1
DATASEGMENT
ADW1H
BDW3H
CDW4H
DDW2H
WDW2DUP(?
)
DATAENDS
;
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVAX,A
ADDAX,B
MOVBX,C
SUBBX,D
IMULBX
MOVW,AX
MOVW+2,DX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
调试验证结果:
W=(A+B)×(C—D)=(1H+3H)×(4H-2H)=8H,结果存于114F:
0008开始的的4个单元里。
3、设X、Y为在数据段中定义的有符号字变量。
编写一个完整段定义的汇编语言程序(包含必要的伪指令,给出必要的注释)完成以下操作:
若0 STACKSSEGMENTSTACK;DEFINESTACK DW128DUP(? ) STACKSENDS DATASSEGMENT XDW11H YDW22H DATASENDS CODESSEGMENT ASSUMECS: CODES,DS: DATAS START: MOVAX,DATAS MOVDS,AX SUBX,0 JNGL1 SUBY,1000 JAEL1 JMPL2 L1: MOVAX,2000 MOVBX,0 L2: MOVAX,0 MOVBX,2000 MOVAH,4CH INT21H CODESENDS ENDSTART 调试验证: 初始赋值X为11H,Y为22H,根据题目要求结果因为AX=0,BX=2000,调试结果 AX=0000,BX=07D0,符合要求。 4、编写汇编语言程序,将数据段中地址为BLOCK1的100个字变量数组拷贝到BLOCK2开始的区域,传送中要剔除其中为0的数据。 DATASSEGMENT BLOCK1DW100DUP(1000H) BLOCK2DW100DUP(? ) DATASENDS CODESSEGMENT ASSUMECS: CODES,DS: DATAS START: MOVAX,DATAS MOVDS,AX LEASI,BLOCK1 LEADI,BLOCK2 L1: MOVAX,,[SI] JZL2 MOV[DI],AX ADDDI,2 ADDSI,2 DECCX JNZL1 L2: ADDSI,2 DECCX JNZL1 MOVAH,4CH INT21H CODESENDS ENDSTART 调试验证: 如上图程序可以正常运行,BLOCK1中的数据存在097E: 0000开始的单元内,拷贝至BLOCK2,BLOCK2中的数据在095E: 00C8开始的单元内,如下图: 符合题目的功能要求。 5、编写汇编语言程序,计算首地址为BLOCK的200个有符号字变量数组的平均值,并将它存放在CX中。 STACKSSEGMENTSTACK DW128DUP(? ) STACKSENDS DATASSEGMENT BLOCKDW40DUP(0001H,0002H,0003H,0004H,0005H) DATASENDS CODESSEGMENT ASSUMECS: CODES,DS: DATAS START: MOVAX,DATAS MOVDS,AX LEASI,BLOCK MOVAX,0 MOVCX,200 L1: ADCAX,[SI] ADDSI,2 DECCX JNZL1 MOVBX,200 IDIVBX MOVCX,AX MOVAH,4CH INT21H CODESENDS ENDSTART 调试验证: BLOCKDW40DUP(0001H,0002H,0003H,0004H,0005H)初始定义的200个数据平均值为0003H,由上图看出程序能正常运行并且最后结果CX=0003H也正确。 符合题目要求的求均值功能。 ●微机原理及接口技术实验: 实验一8255并行接口实验 一、实验目的 1、学习并掌握8255的工作方式及其应用。 2、掌握8255典型应用电路的接法。 3、掌握程序固化及脱机运行程序的方法。 二、实验设备 Pc机一台,TD-PITE实验装置一套。 三、实验内容 基本输入输出实验。 编写程序,使8255的A口为输入,B口为输出,完成波动开关到数据灯的数据传输。 要求只要开关拨动,数据灯的显示就发生相应改变。 流水灯显示实验。 编写程序,使8255的A口和B口均为输出,数据灯D7-D0由左向右,每次仅亮一个灯,循环显示,D15-D8与D7-D0正相反,由右向左,每次仅点亮一个灯,循环显示。 四、实验原理: 并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。 CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。 8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作: 方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式6--双向选通工作方式。 8255的内部结构及引脚如图7-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图7-2所示。 图7-18255的内部结构和外部引脚 (a)工作方式控制字(b)c口按位置位/复位控制字 图7-28255控制字格式 8255实验单元电路图如下图所示: 图7-38255实验单元电路图 实验步骤 1.基本输入输出实验 本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。 用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。 实验步骤: (1)实验接线图如图7-4所示,按图连接实验线路图; 图7-48255基本输入/输出实验接线图 (2)编写实验程序,经编译、连接无误后装入系统; 实验源程序: ;========================================================= ;文件名: A82551.ASM ;功能描述: A口为输入,B口为输出,将读入的数据输出显示 ;IOY1 ;========================================================= SSTACKSEGMENTSTACK DW32DUP(? ) SSTACKENDS CODESEGMENT ASSUMECS: CODE,SS: SSTACK START: MOVDX,0646H MOVAL,90H OUTDX,AL AA1: MOVDX,0640H INAL,DX CALLDELAY MOVDX,0642H OUTDX,AL JMPAA1 DELAY: PUSHCX MOVCX,0F00H AA2: PUSHAX POPAX LOOPAA2 POPCX RET CODEENDS ENDSTART (3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。 (4)点击“调试”下拉菜单中的“固定程序”项,将程序固化到系统存储器中。 实验1总结: 拨动开关K0-K7,数据灯D0-D7就依次点亮。 2.流水灯显示实验 使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。 实验接线图如图7-5所示。 图7-58255流水灯实验接线图 实验步骤: (1)按图7-5连接实验线路图; (2)编写实验程序,经编译、链接无误后装入系统; ;========================================================= ;文件名: A82552.ASM ;功能描述: A口为输出,B口为输出,流水灯显示 ;========================================================= SSTACKSEGMENTSTACK DW32DUP(? ) SSTACKENDS CODESEGMENT ASSUMECS: CODE START: MOVDX,0646H MOVAL,80H OUTDX,AL MOVBX,8001H AA1: MOVDX,0640H MOVAL,BH OUTDX,AL RORBH,1 MOVDX,0642H MOVAL,BL OUTDX,AL ROLBL,1 CALLDELAY CALLDELAY JMPAA1 DELAY: PUSHCX MOVCX,0F000H AA2: PUSHAX POPAX LOOPAA2 POPCX RET CODEENDS ENDSTART (3)运行程序,观察LED灯的显示,验证程序功能; (4)自己改变流水灯的方式,编写程序。 实验2总结: 数据灯D7-D0由左向右,每次仅亮一个灯,循环显示,D15-D8与D7-D0正相反,由右向左,每次仅点亮一个灯,循环显示。 实验二8254计数/定时器实验 一、实验目的 1、掌握8254的工作方式及应用编程。 2、掌握8254典型应用电路的接法。 二、实验设备 PC机一台,TD-PITE实验装置一套。 三、实验内容 计数应用实验。 编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按“KK1+”5次后,产生一次计数中断,并在屏幕上显示一个字符“M”. 实验原理: 8254是Intel公司生产的可编程间隔定时器。 是8253的改进型,比8253具有更优良的性能。 8254具有以下基本功能: (1)有3个独立的16位计数器; (2)每个计数器可按二进制或十进制(BCD)计数; (3)每个计数器可编程工作于6种不同工作方式; (4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz); (5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容; (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。 计数初值公式为: 其中 是输入时钟脉冲的频率, 是输出波形的频率。 图6-1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。 8254的工作方式如下述: (1)方式0: 计数到0结束输出正跃变信号方式。 (2)方式1: 硬件可重触发单稳方式。 (3)方式2: 频率发生器方式。 (4)方式3: 方波发生器。 (5)方式4: 软件触发选通方式。 (6)方式5: 硬件触发选通方式。 图6-18254的内部接口和引脚 8254的控制字有两个: 一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。 这两个控制字共用一个地址,由标识位来区分。 控制字格式如表1所示。 表6-18254的方式控制字格式 表6-28254读出控制字格式 表6-38254状态字格式 8254实验单元电路图如下图所示: 图6-28254实验电路原理图 1.计数应用实验 编写程序,将8254的计数器0设置为方式0,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符“M”。 实验步骤: (1)实验接线如图6-2所示; (2)编写实验程序,经编译、链接无误后装入系统; ;========================================================= ;文件名: A82541.ASM ;功能描述: 通过对计数器0进行计数,计数初值为4, ;当计数满后,产生正跳变触发中断,中断 ;程序显示M(每按5次输出一个M) ;========================================================= A8254EQU06C0H B8254EQU06C2H C8254EQU06C4H CON8254EQU06C6H SSTACKSEGMENTSTACK DW32DUP(? ) SSTACKENDS CODESEGMENT ASSUMECS: CODE,SS: SSTACK START: PUSHDS MOVAX,0000H MOVDS,AX MOVAX,OFFSETIRQ7;取中断入口地址 MOVSI,003CH;中断矢量地址 MOV[SI],AX;填IRQ7的偏移矢量 MOVAX,CS;段地址 MOVSI,003EH MOV[SI],AX;填IRQ7的段地址矢量 CLI POPDS ;初始化主片8259 MOVAL,11H OUT20H,AL;ICW1 MOVAL,08H OUT21H,AL;ICW2 MOVAL,04H OUT21H,AL;ICW3 MOVAL,01H OUT21H,AL;ICW4 MOVAL,6FH;OCW1 OUT21H,AL ;8254 MOVDX,CON8254 MOVAL,10H;计数器0,方式0 OUTDX,AL MOVDX,A8254 MOVAL,04H OUTDX,AL STI AA1: NOP JMPAA1 IRQ7: MOVDX,A8254 MOVAL,04H OUTDX,AL MOVAX,014DH INT10H;显示字符M MOVAX,0120H INT10H MOVAL,20H OUT20H,AL;中断结束命令 IRET CODEENDS ENDSTART (3)运行程序,按动KK1+产生单次脉冲,观察实验现象; (4)改变计数值,验证8254的计数功能。 实验3总结: 每当KK1+按动5次后产生中断请求,在屏幕上显示字符“M”。 2.定时应用实验 图6-38254定时应用实验接线图 编写程序,将8254的计数器0设置为方式3,用信号源1MHz作为CLK0时钟,OUT0为波形输出1ms方波。 实验步骤: (1)接线图如图6-3所示; (2)根据实验内容,编写实验程序,经编译、链接无误后装入系统; ;========================================================= ;文件名: A82542.ASM ;功能描述: 产生1s方波,输入时钟为1MHz,使用计数器0和1 ;计数初值均为03E8H ;========================================================= A8254EQU0600H B8254EQU0602H C8254EQU0604H CON8254EQU0606H SSTACKSEGMENTSTACK DW32DUP(? ) SSTACKENDS CODESEGMENT ASSUMECS: CODE,SS: SSTACK START: MOVDX,CON8254;8254 MOVAL,36H;计数器0,方式3 OUTDX,AL MOVDX,A8254 MOVAL,0E8H OUTDX,AL MOVAL,03H OUTDX,AL MOVDX,CON8254;8254 MOVAL,76H;计数器1,方式3 OUTDX,AL MOVDX,B8254 MOVAL,0E8H OUTDX,AL MOVAL,03H OUTDX,AL AA1: NOP JMPAA1 CODEENDS ENDSTART (3)运行实验程序,用示波器测试OUT0输出,验证程序功能。 实验4总结: 示波器测试OUT0输出产生1s方波,输入时钟为1MHz,使用计数器0和1 ;计数初值均为03E8H 实验三中断特性及8259应用编程实验 一、实验目的 1.掌握8259中断控制的工作原理。 2.学习8259的应用编程方法。 3.掌握8259级联方式的使用方法。 二、实验设备 PC机一台,TD-PITE试验装置一套。 三、实验原理及内容 在Intel386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。 该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。 从片的INT连接到主片的IR2信号上构成两片8259的级联。 在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。 8259的内部连接及外部管脚引出如图5-1所示。 图5-18259内部连续及外部管脚引出图 表5-1列出了中断控制单元的寄存器相关信息。 表5-1ICU寄存器列表 初始化命令字1寄存器(ICW1)说明见图5-2所示。 图5-2初始化命令字1寄存器 初始化命令字2寄存器(ICW2)说明见图5-3所示。 图5-3初始化命令字2寄存器 初始化命令字3寄存器(ICW3)说明,主片见图5-4,从片见图5。 初始化命令字4寄存器(ICW4)说明见图5-6。 图5-6初始化命令字4寄存器 操作命令字1寄存器(OCW1)说明见图5-7。 图5-7操作命令字1寄存器 操作命令字2寄存器(OCW2)说明如图5-8所示。 图5-8操作命令字2寄存器 操作命令字3寄存器(OCW3)说明如图5-9所示。 图5-9操作命令字3寄存器 查询状态字(POLL)说明如图5-10所示。 图5-10程序状态字寄存器 在对8259进行编程时,首先必须进行初始化。 一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化命令字。 8259有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。 在初始化主片8259时,写入初始化命令字的顺序是: ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。 系统启动时,主片8259已被初始化,且4号中断源(IR4)提供给与PC联机的串口通信使用,其它中断源被屏蔽。 中断矢量地址与中断号之间的关系如下表所示: 1.8259单中断实验 实验接线图如图5-11所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。 图5-118259单中断实验接线图 实验步骤: (1)按图5-11连接实验线路; (2)编写实验程序,经编译、链接无误后装入系统; ;========================================================= ;文件名: INT1.ASM ;功能描述: 8259中断实验,中断源为主片8259的IRQ7 ;每产生一次中断输出显示一个字符7 ;========================================================= SSTACKSEGMENTSTACK DW32DUP(? ) SSTACKENDS CODESEGMENT ASSUMECS: CODE START: PUSHDS MOVAX,0000H MOVDS,AX MOVAX,OFFSETMIR7;取中断入口地址 MOVSI,003CH;中断矢量地址 MOV[SI],AX;填IRQ7的偏移矢量 MOVAX,CS;段地址 MOVSI,003EH MOV[SI],AX;填IRQ7的段地址矢量 CLI POPDS ;初始化主片8259 MOVAL,11H OUT20H,AL;ICW1 MOVAL,08H OUT21H,AL;ICW2 MOVAL,04H OUT21H,AL;IC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编程序 接口 技术 实验 报告