实 验 报 告
课 程 名 称
实 验 名 称
实 验 日 期
学 生 专 业
学 生 学 号
学 生 姓 名
教 师 姓 名
成 绩
南京理工大学机械工程学院
实验三 8254定时/计数器应用实验
一、实验目的
1、掌握8254的工作方式及应用编程;
2、掌握8254典型应用电路的接法。
二、实验设备
PC机一台,TD-PIE实验装置一套,示波器一台。
三、实验内容
1、计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1 +’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M’。
2、定时应用实验。编写程序,应用8254的定时功能,产生一个1 ms的方波。
1、计数应用实验
编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK 1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符‘M’。
实验步骤:
(1) 实验接线如图4-2所示;
(2) 编写实验程序,经编译、链接无误后装入系统;
(3) 运行程序,按动KK1+产生单次脉冲,观察实验现象;
(4) 改变计数值,验证8254的计数功能。
实验程序清单:
A8254 EQU 06C0H ;8254计数器0的端口地址
B8254 EQU 06C2H ;8254计数器1的端口地址
C8254 EQU 06C4H ;8254计数器2的端口地址
CON8254 EQU 06C6H ;8254控制字寄存器的端口地址
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE, SS:SSTACK
START : PUSH DS
MOV AX, 0000H
MOV DS,AX
MOV AX,OFFSET IRQ7
MOV DS:3CH,AX
MOV AX,SEG IRQ7
MOV DS:3EH,AX
POP DS
CLI
POP DS
;初始化主片8259,其端口地址为20H和21H
MOV AL,11H
OUT 20H,AL ;ICW1
MOV AL,08H
OUT 21H,AL ;ICW2
MOV AL,04H
OUT 21H,AL ;ICW3
MOV AL,01H
OUT 21H,AL ;ICW4
MOV AL,6FH ;OCW1
OUT 21H,AL
;初始化8254
MOV DX,CON8254
MOV AL, 11H ;计数器0,方式0
OUT DX,AL
MOV DX,A8254
MOV AL, 04H ;给计数器0送初值
OUT DX,AL
STI
AA1: JMP AA1
;中断服务程序
IRQ7: MOV AX,014DH
INT 10H ;显示字符M
MOV AX,0120H
INT 10H
MOV AL, 20H
OUT 20H ,AL ;中断结束命令
IRET
CODE ENDS
END START
2、定时应用实验
编写程序,将8254的计数器0设置为方式3,用信号源1MHz作为CLK0时钟,OUT0输出波形为1 ms方波。
实验步骤:
(1)接线图如图4-3所示;
(2)根据实验内容,编写实验程序,经编译、链接无误后装入系统;
(3)运行实验程序,用示波器测试OUT0输出,验证程序功能。
实验程序清单
A8254 EQU 06C0H
B8254 EQU 06C2H
C8254 EQU 06C4H
CON8254 EQU 06C6H
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START:MOV DX,CON8254
MOV AL, 37H ;8254控制字,计数器0,方式3
OUT DX,AL
MOV DX,A8254
MOV AL, 00H ;给计数器0送初值
OUT DX,AL
MOV AL, 10H
OUT DX,AL
AA1: JMP AA1
CODE ENDS
END START
六、思考题
1、在将计数初值赋给8254后,马上就可以启动并进行定时或计数吗?
答:不是,计数的开始还得看门控信号,在写入初值后若门控信号有效(软件触发为高电平有效,硬件触发为上升沿有效)则开始计数,否则等待有效门控信号的到来才开始计数
2、若CLK0输入1.925MHz的时钟,能否在OUT0实现输出30ms的定时脉冲?
答:30*1925=57750<65535 所以用二进制写初值方式可以实现,若用十进制方式写初值则不能实现(十进制最大计数初值为0,即10000)
实验四 8255并行接口实验
一、实验目的
1、学习并掌握8255的工作方式及其应用;
2、掌握8255典型应用电路的接法。
二、实验设备
PC机一台,TD-PITE实验装置一套。
三、实验内容
1、基本输入输出实验。
本实验系统中,8255的端口地址分别为0640H,0642H,0644H以及0646H。编写程序,使8255的A口为输入,接拨动开关,B口为输出,接发光二极管;要求只要开关拨动,发光二极管的显示就发生相应改变。
2、流水灯显示实验。
编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
四、实验原理
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A, B, C三个并行接口,用+5 V单电源供电,能在以下三种方式下工作:方式0——基本输入/输出方式、方式1——选通输入/输出方式、方式2——双向选通工作方式。8255的内部结构及引脚如图5-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图5-2所示。
五、实验步骤
1、基本输入输出实验
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。用一组开关信号接入端口A,端口B输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述:
(1) 实验接线图如图5-3所示,按图连接实验线路图;
(2) 编写实验程序,经编译、连接无误后装入系统;
(3) 运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
实验程序清单
SSTACK SEGMENT STACK
DW 32 DUP (?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,0646H
MOV AL, 90H ;8255的工作方式控制字
OUT DX,AL
AA1: MOV DX,0640H
IN AL,DX
CALL DELAY
MOV DX,0642H
OUT DX,AL
JMP AA1
;延时子程序
DELAY: PUSH CX
MOV CX,0F00H
AA2: PUSH AX
POP AX
LOOP AA2
POP CX
RET
CODE ENDS
END START
2、流水灯显示实验
使8255的A口和B口均为输出,数据灯D7àDO由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图5-5所示。实验步骤如下所述:
(1) 按图5-5连接实验线路图;
(2) 编写实验程序,经编译、链接无误后装入系统;
(3) 运行程序,观察LED灯的显示,验证程序功能;
(4) 自己改变流水灯的方式,编写程序。
实验程序清单
SSTACK SEGMENT STACK
DW 32 DUP (?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
STRAT: MOV DX,0646H
MOV AL,80H
OUT DX,AL
MOV BX,0180H
AA1: MOV DX,0640H
MOV AL,BL
OUT DX,AL
CALL DELAY
MOV DX,0642H
MOV AL,BH
OUT DX,AL
CALL DELAY
ROR BL,1
ROL BH,1
JMP AA1
DELAY: PUSH CX
MOV CX,0F00H
AA2: PUSH AX
POP AX
LOOP AA2
POP CX
RET
CODE ENDS
END START
第二篇:微机原理及应用参考答案
参考答案
第一章 计算机中的数制和码制
第二章 计算机概述
一、填空题
1. 8
2. 2
3. 1024
4. 25.5、11001.1、00100101.0101B
5. 1000010B、42H、66H
6. 41.625、29.AH
7. 10001101B
8. 11001001、11001010
9. -128 ~ +127
10. 系统软件、应用软件
11. 电子管、超大规模集成电路
二、单选题
1. A 2. C 3. D
4. C 5. A 6. C
三、分析简答题
1. 8086 CPU的总线根据其中信息传送的类型可分为几种?哪几种?
答:8086 CPU的总线根据其中信息传送的类型可分为三种种,
分别是:数据总线、地址总线和控制总线
2. 写出-25的原码、反码、补码,并将补码转换成十六进制数(设机器字长为8位)。
答:X=-25=-11001B
X原码:10011001B
X反码:11100110B
X补码:11100111B = E7H
3. 举例说明什么是机器数,什么是真值?
答:将符号数值化了的数称为机器数。
如:-18=-10010B(真值);机器数为:10010010B
第三章 半导体存贮器
一、填空题
1. ROM、RAM
2. 6个
3. 8、4
二、单选题
1. A 2. B 3. D 4. B
5. C 6. C 7. B
三、分析简答题
1. 在对存储器芯片进行片选时,全译码方式、部分译码方式和线选方式各有何特点?
答:①全译码方式:存储器芯片中的每一个存储单元对应一个唯一的地址。译码需要的器件多;
②部分译码方式:存储器芯片中的一个存储单元有多个地址。译码简单;
③线选:存储器芯片中的一个存储单元有多个地址。地址有可能不连续。不需要译码。
四、硬件接口设计题
1. 答:(1)
(2) 存储器类型为RAM 总容量为 4K×8
地址范围: 0# 2000H-27FFH
1# 2800H-2FFFH
2. 答:(9分)
(1) 存储器类型:RAM
该系统的存储器容量为:6K×8位(或:6K字节)
(2) 1#芯片的地址范围:1000H ~ 17FFH
2#芯片的地址范围:0800H ~ 0FFFH
3#芯片的地址范围:0000H ~ 07FFH
3. 1)1K×4
2)2K×8或2KB
3)地址分配范围
第一组 : A19~ A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
最小地址 0 ~ 0 0 0 0 0 0 0 0 0 0 0 00000H~
最大地址 0 ~ 0 1 1 1 1 1 1 1 1 1 1 003FFH
第二组: 0 ~ 1 0 0 0 0 0 0 0 0 0 0 00400H~
0 ~ 1 1 1 1 1 1 1 1 1 1 1 007FFH
第四章 微型计算机及微处理器的结构和组成
一、填空题
1. BIU、EU、指令的译码和指令执行
2. 4、16、16、6、20
3. 8、16
4. 1、2
二、单选题
1. B 2. B
三、分析简答题
1. 8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?
答:执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、
DX一般作为通用数据寄存器。SP为堆栈指针存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。
2. 8086/8088 CPU内部包含有哪6个专用寄存器?它们的主要功能是什么?
答:有CS、DS、ES、SS、IP、PSW
CS(代码段寄存器):用来存放当前代码段的基地址。
DS(数据段寄存器):用来存放供程序使用的数据的一段存储区的基地址。
ES(附加段寄存器):附加的数据段的基地址,
SS(堆栈段寄存器):堆栈段的基地址。
IP:16位寄存器。指示代码段存储区域中下一条指令的段内偏移量。
PSW:标志寄存器,用来指示微处理器的状态并控制其操作。
3. 8086CPU状态标志位有哪些?说明其符号、名称和含义
答:(SF):符号标志位,本次运算结果的最高位为1时,SF=1,否则SF=0
(ZF):全零标志位,本次运算结果的为0时,ZF=1,否则ZF=0
(AF):辅助进位标志位,本次运算中低4位向最4位有进位或借位时,AF=1,否则AF=0
(PF):奇偶校验标志位,本次运算结果低8位中有偶数个“1”时,PF=1,否则PF=0
(CF):进位标志位,本次运算中最高位有进位或借位时,CF=1,否则CF=0
(OF):溢出标志位,本次运算过程中产生溢出时,OF=1,否则OF=0
4. 执行下面两个数相加:
1010 0011 0100 1101
+ 0011 0010 0001 1001
1101 0101 0110 0110
分析其结果对下列标志位有何影响:(6分)
(SF)= 1 (ZF)= 0 (AF)= 1
(PF)= 1 (CF)= 0 (OF)= 0
第五章 8086/8088CPU的引脚功能、系统组成及时序
一、填空题
1. 16、20、分时复用
2. 锁存地址
3. 系统中只有一个处理器,CPU提供全部的控制信号;高电平
4. FFFF0H
5. 逻辑地址、物理地址
6. 物理地址
7. 段基址、偏移地址、12345H
8. 段寄存器、20
9. 0000H:0400H;0020H:0200H
10. 1M
11. 高8位、低8位
二、单选题
1. B 2. B 3. B 4. A 5. B
6. C 7. D 8. B 9. A 10. C
11. D 12. A 13. B 14. B 15. C
三、分析简答题
1. 8086对存储器的管理为什么采用分段的办法?最大段和最小段的存储空间分别是多大?20位的物理地址是如何形成的?
答:8086CPU是一个16位的结构,内部寄存器及数据总线均为16位,16位地址只能寻址64KB空间。无法送出外部所需的20位物理地址。因此采用分段管理办法,来形成超过16位的存储器物理地址,扩大对存储器的寻址范围 (1MB,20位地址)。
最大段:64KB 最小段:16B
当CPU访问内存时,段寄存器的内容(段基址)自动左移4位(二进制),与段内16位地址偏移量相加,形成20位的物理地址。
2. 简述8086CPU最小工作方式含义。
答:8086CPU的最小工作方式是指:系统中只有一个微处理器,即8086CPU,该方式构成的为单机系统,系统中所需要的控制信号全部由CPU提供,实现和存储器及I/O接口电路的连接,无需总线控制器8288的参与。
3. 说明逻辑地址和物理地址的含义,两者之间有何关系?已知逻辑地址3000H:2345H,写出段地址、物理地址、偏移地址。
答:逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成。偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。
物理地址是8086芯片引线送出的20位实际的地址码,用来指出一个特定的存储单元。
物理地址= 段基址*10H+偏移地址
段地址 3000H、偏移地址 2345H、物理地址 3000H*10H+2345H=32345H
4. 计算题:
某微机系统中内存的首地址为3400H,末地址为67FFH,求其内存容量并以K表示。
答:内存容量=末地址-首地址+1=67FFH-3400H+1=3400H(字节)=13KB
5. 8086/8088为什么采用地址/数据引线复用技术?
答:考虑到芯片成本,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。
第六章 8086/8088CPU寻址方式及指令系统
一、填空题
1. 操作码、操作数
2. 00FEH、1000H
3. 最高地址端
4. 0FF2H、0056H
5. 0214H、24514H、0306H、24306H
6. 1、2000H
7. 1
8. 0FFH、00H
9. DX
二、单选题
1. A 2. C 3. D 4. A 5. C
6. B 7. A 8. B 9. D 10. A
11. B 12. D 13. B 14. C 15. C
16. C 17. D 18. C 19. B
三、分析简答题
1. 写出至少3种指令,使AX寄存器置零
MOV AX,00 SUB AX,AX XOR AX,AX AND AX,00H
2. 用单条指令或程序片段,实现下述功能
(1)XOR AX,0FF00H OR AX,000FH
(2)MOV CL,4 ROR AL,CL(或ROL AL,CL)
(3)XCHG AX,BX
3. 堆栈存储区由哪两个寄存器管理?简述数据压栈和弹栈的过程。
答:堆栈存储区由两个寄存器管理:堆栈指针(SP)和堆栈段寄存器(SS)。当一个字数据被压入堆栈时,SP首先减2,然后对栈顶存储单元进行16位字的写操作;其高 8位数据被放在SP-1单元中,低8位数据被放在 SP-2单元中。当数据从堆栈中弹出时,低8位从SP单元移出,高8位从SP+1单元移出,然后SP+2。
4. 举例说明与数据有关的寻址方式有哪些?
答:
1、
2、
3、立即寻址、寄存器寻址
、直接寻址
、寄存器间接寻址
、寄存器相对寻址
、基址加变址寻址、相对基址加变址寻址;例子略。
5. 输入输出的寻址方式有哪几种?举例说明
答:有两种:直接端口寻址,如 IN AL,05H;
间接端口寻址,如 MOV DX,05H IN AL,DX
6. 答:MOV指令是将源操作数即内存单元的内容传送到目的操作寄存器中;而LEA为取偏移量指令,它是将源操作数所在内存单元的偏移地址取出送目的寄存器;
MOV AX,TABLE ;AX=3412H
LEA AX,TABLE ;AX=0020H
7. 分别指出下列指令中的源操作数的寻址方式。
(1)直接寻址
(2)立即寻址
(3)寄存器寻址
(4)基址加变址
(5)相对基址加变址寻址
(6)寄存器相对寻址
(7)寄存器间接寻址
(8)段内间接寻址
(9)直接端口寻址
(10)间接端口寻址
8. 指出下列指令的错误
(1)源、目的操作数长度不匹配
(2)立即数不能做目的操作数
(3)CS不能做目的操作数
(4)SI、DI不能同时出现在一个[]中
(5)源、目的操作数长度不匹配
(6)源、目的操作数不能均为存储器操作数
(7)立即数不能直接送至段寄存器
(8)IN指令中目的操作数不能用BL(只能用AL或AX)
(9)IP不能做目的操作数
(10)DX不能间接寻址,可改为 MOV SI,[BX]
(11)PUSH指令的操作数必须为16位(即:按字操作)
9. 设8086/8088CPU的SS=1050H,SP=0008H,AX=1234H,当执行指令:PUSH AX后, 寄存器SS、SP、AX内容分别是什么?画图说明1234H在内存中的存放情况。
SS=1050H SP=0006H AX=1234H
(10506H)=34H (10507H)=12H
10. 假设(DS)=2000H,(BX)=1256H,(SI)=528FH;位移量TABLE=20A1H,
(232F7H)=3280H,(264E5H)=2450H,则;
(1) IP = 1256H
(2) IP = 3280H
(3) IP = 2450H
11. 已知8086 CPU各寄存器和有关内存单元内容如下:指出执行下列指令后AX寄存器的内容:
(1) AX= 1200H (2) AX= 43EFH (3) AX= 3412H
(4) AX= BC9AH (5) AX= 8765H
第七章 汇编语言程序设计
一、填空题
1. ‘d’
2. 第一个AND是逻辑指令,第二个AND 是逻辑与操作符
3. 0FFFFH
4. 03H
5. 同一代码段内、不同代码段
二、单选题
1. A 2. A 3. D 4. B 5. A
三、分析简答题
1. 汇编语言中的伪指令与执行指令有何不同?
答:伪指令的功能主要用于完成变量定义、段定义等,变量名称后不能带‘:’,它仅仅在汇编过程中告诉汇编程序应如何汇编,而不生成机器代码,即由汇编程序进行处理;执行指令可以完成数据传送、各种运算、字符串处理、程序控制等功能,标号后要跟‘:’,这种指令由汇编程序翻译成对应的机器代码,最终由CPU执行处理。
2. 试举例说明一条汇编语句可以有哪几部分组成?各部分之间采用何种分隔符(定界符)相隔离?
答:略。
3. 指出下面程序片段中的错误。
MYDATA SEGMENT
A DB 12 24 34 错误1:多个操作数之间必须用“,”分开
B: DW ‘12’ 错误2:变量后面不能带冒号“:”
MYDATA ENDS
MYCODE SEGMENT
ASSUME DS:MYDATA,CS:MYCODE
MOV DS,MYDATA 错误3:立即数不能直接送进段寄存器
MOV AH,A
MOV AL,B 错误4:源、目的操作数字长不一致
MOV CX,A 错误5:源、目的操作数字长不一致
MOV AX,B
MOV IP,B 错误6:MOV 指令中IP不能做操作数
4. 改正下面程序片段中的错误或指出错误原因。
DATA SEGMENT
A DB 12、24、34 错误1:多个操作数之间用“,”分开
B DW ‘12’, ‘ABCD’ 错误2:‘ABCD’改为‘AB’,‘CD’
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
MOV DS,DATA 错误3:立即数不能直接送进段寄存器
MOV DX,OFFSET A 错误4:DX不能用于间接寻址,可改为BX
MOV AL,[DX+2] 错误5:DX不能用于间接寻址,可改为BX
MOV BL,CX 错误6:源、目的操作数字长不一致
5. 指出下面程序片段中的错误。
A1:DB ? 错误1:变量后面不能带冒号“:”
A2 DW 10
K1 EQU 1024
MOV AX,80
MOV K1,AX 错误2:K1为立即数,不能做目的操作数
MOV AL,A2 错误3:源、目的操作数字长不一致
MOV BX,A1 错误4:源、目的操作数字长不一致
MOV A1,K1 错误5:A1为字节变量,K1超出的范围
6. 假设某程序段中的数据定义如下:
(1)
(2) 变量DA1、DA2、DA3占用字节数分别为:6、2、1;
COUNT=9 表示数据段的长度为9个字节
7. 假设某程序段中的数据定义如下:
A1占24个字节
A2占5个字节
A3占4个字节
L的值为33
L表示的意义:变量A1、A2、A3所占的字节总数
8. 对下面两个数据段,请分析偏移地址为10H和11H的两个字节中的数据是一样的吗?为什么?
答:不一样. 分别是72H, 04H和04H, 72H.
因为字存储时低8位存放在低字节,高8位存在高字节。
9. 若STR是字符串的首地址,指出下列程序的功能,并将语句加上注解。
LEA BX,STR ;取STR的偏移量放到BX中
MOV CX,20 ;_设置循环次数________
LP: CMP [BX],‘*’
JNZ NEXT ;BX所指单元内容不为‘*’,则转移至NEXT
MOV [BX],‘$’ ;将BX所指单元用‘$’替代
NEXT: INC BX ;BX加1,指向下一个单元
LOOP LP ;CX-1不等于0则转移至LP处,继续循环
HLT
程序的功能:将STR开始的前20个字符中的‘*’用‘$’替代
10. 填入适当指令或指令的一部分,完成指定功能。
10. MAX: MOV BX, 2000H
M0V AL,[BX]
M0V CX, 63H(或99)
LOOP1: INC BX
CMP AL,[BX]
JAE LOOP2
MOV AL,[BX]
LOOP2: DEC CX
JNZ LOOP1
M0V [2100H] ,AL
11. 指出下列程序的功能,并将有分号(;)的语句加上简要注解
BUF DB 100 DUP(?)
MOV BX,OFFSET BUF ; 取BUF的偏移地址,设置地址指针BX
MOV CL,64H
LP: MOV BYTE PTR[BX],0 ; 将BX所指向的内存单元清0
INC BX ; BX内容加1,指向下一个内存单元
DEC CL ; CL内容减1
JNZ LP ;若计数器CL的内容不为0则转向LP 继续循环
程序的功能:将BUF单元开始的100个字节的存储单元全部清0
12. 分析填空
MOV BL,09H ;执行后 BL=___09H______
MOV AL,05H ;执行后 AL=___05H______
ADD AL,BL ;执行后 AL=___0EH______
DAA ;执行后 AL=___14H______
BL=___09H______
13. 分析填空
MOV AX,00H ;执行后 AX= 00H
PUSH AX ;执行后 AX= 00H
POP BX ;执行后 BX= 00H
MOV AX,3F5FH ;执行后 AL= 5FH
MOV CX,4
ROR AL,CL ;执行后 AL= 0F5H
AND AL,0FH ;执行后 AL= 05H
14. 分析填空
假设(BL)=0E3H,变量VALUE中存放的内容79H,确定下列各条指令单独执行后的结果。
(1)BL=9AH
(2)BL =FBH
(3)BL =1CH
(4)BL =00H
(5)BL =C6H
15. 阅读程序回答问题
(1)该程序的功能是 计算BLOCK 数据元素中奇数的个数,并存入RESULT中 。
(2)程序执行后,RESULT单元的内容是 5(奇数的个数) 。
(3)第3行汇编后COUNT= 10(BLOCK数组元素的个数 。
(4)* 处的完整指令应是 MOV AX,DATA 。
(5)** 处的完整指令应是 MOV SI,OFFSET BLOCK ,该指令也可以用 LEA SI,BOLCK 指令代替
四、程序设计题
1. 内存中有X、Y两个数:X=32,Y=-78 利用汇编语言编写完整的程序,计算这两个数之和,并将结果存入内存S,即:S=X+Y
参考程序:
DATA SEGMENT
X DB 32
Y DB -78
S DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,X
ADD AL,Y
MOV S,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
2. 编程检测从外设端口71H输入的字节数据,若该数据≤20,则向73H端口送0H;若该数据>20,则向73H端口送0FFH。请写出完整的汇编源程序。
参考程序如下所示:
CODE SEGMENT
ASSUME CS:CODE
START:IN AL,71H
CMP AL,20
JNG K1
MOV AL,0FFH
JMP K2
K1:MOV AL,00H
K2:OUT 73H,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
3. 编程检测80H端口输入的字节数据,若为正,将BL清0;若为负,将BL置为FFH。请写出完整的汇编源程序。
参考程序如下所示:
CODE SEGMENT
ASSUME CS:CODE
START:IN AL,80H
TEST AL,80H
JZ APOS
MOV BL,0FFH
JMP EXIT
APOS:MOV BL,00H
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END START
4. 内存中有X、Y两个数组:X=32、-43、76,Y=-78、127、-128 利用汇编语言编写完整的程序,计算这两个数组之和,即S(i)=X(i)+Y(i)
参考程序:
DATA SEGMENT
X DB 32,-43,76
Y DB -78,127,-128
S DB 3 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV BX,00H
MOV CX,3
AGAIN:MOV AL,X[BX]
ADD AL,Y[BX]
MOV S[BX],AL
INC BX
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START
5. 在BLOCK开始有一个字节型数组,共有15个元素,利用汇编语言编写完整的程序,计算这个数组中奇数的个数,并将结果存入内存SUM单元。
DATA SEGMENT
BLOCK DB 15 DUP (?)
SUM DB 00
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI, OFFSET BLOCK
MOV CX,15
CON:MOV AL,[SI]
TEST AL,01H
JZ NEXT
INC SUM
NEXT:INC SI
LOOP CON
MOV AH,4CH
INT 21H
CODE ENDS
END START
6. 在BUF开始有一个字节型数组,共有50个元素,利用汇编语言编写完整的程序,将该数组全部元素清零。
DATA SEGMENT
BUF DB 50 DUP (?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI, OFFSET BUF
MOV CX,50
CON:MOV [SI],00H
INC SI
LOOP CON
MOV AH,4CH
INT 21H
CODE ENDS
END START
7. 在BUF开始有一个字节型数组,共有100个元素,利用汇编语言编写完整的程序,计算这个数组中负数的个数,并将结果存入内存COUNT单元。
DATA SEGMENT
BUF DB 100 DUP (?)
COUNT DB 00
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI, OFFSET BUF
MOV CX,100
CON:MOV AL,[SI]
TEST AL,80H
JZ NEXT
INC COUNT
NEXT:INC SI
LOOP CON
MOV AH,4CH
INT 21H
CODE ENDS
END START
第八章 中断处理
一、填空题
1. 内部中断、外部中断,可屏蔽中断、非屏蔽中断
2. 256、4
3. INTR、NMI、是否可被屏蔽
4. 00008H
5. INTR、IF=1
6. 中断请求、中断是开放的、当前指令结束后
7. 64
二、单选题
1. C 2. A 3. B 4. A 5. D
三、分析简答题
1. 8086可屏蔽中断请求输入线是什么?“可屏蔽”的涵义是什么?
答:可屏蔽中断请求输入线为INTR;“可屏蔽”是指该中断请求可经软件清除标志寄存器中IF位而被禁止。
2. 计算机使用中断有什么好处?
答:(1)解决快速CPU与慢速外设之间的矛盾,使CPU可以与外设同时工作,甚至可以与几个外设同时工作。
(2)计算机实现对控制对象的实时处理。
(3)计算机可以对故障自行处理。
3. 答:除法出错,不可屏蔽中断,可屏蔽中断,单步中断。
4. 什么是中断类型码、中断向量、中断向量表?在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系?
答:处理机可处理的每种中断的编号为中断类型码。
中断向量是指中断处理程序的入口地址,由处理机自动寻址。
中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。
8086系统中,中断类型码乘4得到向量表的入口,从此处读出4字节内容即为中断向量。
5. 写出两种8086中断向量表的建立方法。
设中断类型号为80H(00H~FFH均可)
a. MOV AX,0 ;向量表段地址
MOV ES,AX
MOV DI,80H*4 ;向量表地址送DI
MOV AX,OFFSET INTER1
CLD
STOSW
MOV AX,SEG INTER1
STOSW
b. b. MOV AX,0 ;向量表段地址
MOV DS,AX
MOV SI,80H*4 ;向量表地址送SI
MOV AX,OFFSET INTER1
MOV [SI],AX
MOV AX,SEG INTER1
MOV [SI+2],AX
6. 说明8086 CPU中断和调用子程序过程的异同。
相同点:二者都是在需要时,用户用相应的指令实现
不同点: 调用子程序时,指令已经指明子程序的入口地址,而中断则需要根据指令中提供的中断类型号,查中断向量表才能得到中断服务程序的入口地址;调用子程序时,系统只是保护断点处的地址,而软中断,系统不仅保护断点处的地址,而且还保存PSW寄存器的内容。
第九章 输入/输出方法及常用的接口电路
一、填空题
1. 统一编址、独立编址、独立编址
2. 数据信息、状态信息、控制信息
3. 程序控制方式、中断方式、DMA方式
4. 3、8
5. 3种、2种
6. 64K、存储器地址空间、1M
7. 输入要缓冲、输出要锁存
二、单选题
1. C 2. B 3. A 4. A
5. A 6. C 7. D 8. A
三、分析简答题
1. 计算机对I/O端口编址时采用哪两种方法?在8086CPU中一般采用哪种编址方法?
答:统一编址(或存储器映象寻址)
I/O独立编址(单独编址)
8086CPU中一般采用I/O独立编址
2. 设计计算机接口要遵循的原则是什么?为什么?
答:输出要锁存,输入要缓冲。
因为计算机的运行速度比较快,输出数据通常要经过锁存才能被外设读取;外设的数据线通过缓冲器与CPU的数据线相连接,从而保证CPU在读取一个外设数据时不会因其它外设的存在而出错。
3. 微机输入/输出的主要设备有哪些?至少写出三种
答:键盘、鼠标、扫描仪、显示器、打印机等
四、硬件接口及程序设计题
1. INTEL 8255A接口芯片
答:(1)A口作为输入口,B口作为输出口
(2)初始化:
A口作为输入口,B口作为输出口,均工作于方式0,则控制字为:90H(不唯一)
参考程序片段:
…….
MOV AL,90H
OUT 63H,AL
IN AL,60H
OUT 61H,AL
2. 根据下面的接口电路图,回答下列问题:
答:(1) 查询式输入接口电路图
(2) U1:锁存器
U2:三态缓冲器(或三态门)
(3)1.
2. M /
3. 地址线A15~A0
4.
3. 根据下面的接口电路图,回答下列问题:
答:(1)查询式输出接口电路图
(2) U1:锁存器(
U2:三态缓冲器(或三态门)
(3) 电路图中的1、2、3、4、5、6应接到何处?写出符号。
1.
2. M
3. 地址译码器输出
注:1.、2.、3.次序可以颠倒
4.
5. M
6.地址译码器输出