微机原理课后习题答案.pdf_第1页
微机原理课后习题答案.pdf_第2页
微机原理课后习题答案.pdf_第3页
微机原理课后习题答案.pdf_第4页
微机原理课后习题答案.pdf_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 学习指导:学习指导: 1. 掌握十六进制、二进制、掌握十六进制、二进制、BCD(十进制数) 、(十进制数) 、ASCII 码码 2. 掌握有符号数(补码、原码) 、无符号数计算机的表示方法以及表示范围掌握有符号数(补码、原码) 、无符号数计算机的表示方法以及表示范围 3. 掌握补码运算掌握补码运算 4. 了解计算机基本组成及工作原理了解计算机基本组成及工作原理 5. 了解新技术了解新技术 6. 了解计算机主要性能指标了解计算机主要性能指标 2、完成下列数制之间的转换。 (1)01011100B=92D (3)135D=10000111B (5)10110010B=262Q=B2H 3、组合型 BCD 码和非组合型 BCD 码有什么区别?写出十进制数 254 的组合型 BCD 数和非 组合型数。 答: 组合型 BCD 码用高四位和低四位分别对应十进制数的个位和十位, 其表示范围是 099; 非组合型 BCD 码用一个字节的低四位表示十进制数,高四位则任意取值,表示范围为 09。 组合型:254=(001001010100)BCD 非组合型:254=(00000010 00000101 00000100)BCD 7、计算机为什么采用补码形式存储数据?当计算机的字长 n=16,补码的数据表示范围是多 少? 答: 在补码运算过程中,符号位参加运算,简化了加减法规则,且能使减法运算转化为加 法运算,可以简化机器的运算器电路。+32767 -32768。 9、设计算机字长 n=8,求下列各式的X+Y补和X-Y补 ,并验证计算结果是否正确。 (1)X=18,Y=89 X+Y补=00010010+01011001=01101011B=107D 正确 X-Y补=10111001B=00010010+10100111=(-71D)补 正确 (2)X=-23,Y=-11 X+Y补=11101001+11110101=11011110B=(-34D)补 正确 X-Y补=11101001+00001011=11110100B=(-12D)补 正确 (3)X=18,Y=-15 X+Y补=00010010+11110001=00000011B=(3D)补 正确 X-Y补=00010010+00001111=00100001B=(33D)补 正确 (4)X=-18,Y=120 X+Y补=11101110+01111000=01100110B=(102D)补 正确 X-Y补=11101110+10001000=01110110B=(123D)补 由于 X-Y=-138 超出了机器数 范围,因此出错了。 13、微型计算机的主要性能指标有哪些? 答:CPU 字长、存储器容量、运算速度、CPU 内核和 IO 工作电压、制造工艺、扩展能力、软 件配置。 第二章 学习指导:学习指导: 1 了解了解 8086 微处理器的基本组成及工作原理微处理器的基本组成及工作原理 2 掌握通用寄存器掌握通用寄存器(AX、BX、DX、CX、SI、DI、SP、BP)段寄存器段寄存器(CS、SS、DS、ES)标标 志寄存器(状态标志位和控制标志位志寄存器(状态标志位和控制标志位含义)含义)作用作用 3 掌握逻辑地址、物理地址以及它们之间的关系掌握逻辑地址、物理地址以及它们之间的关系 物理地址物理地址=段基址段基址 x16+偏移地址偏移地址 4 掌握逻辑地址和物理地址表示形式掌握逻辑地址和物理地址表示形式 2000:0100,20100 5 存储器地址存储器地址的表示图的表示图 2-5 6 主要引脚主要引脚 RD、WR、M/IO、INTR、INTA、NMI、HOLD、HLDA 2、8086 标志寄存器包含哪些标志位?试说明各标志位的作用。 答:进位标志:CF;奇偶校验:PF;辅助进位:AF;零标志:ZF;符号标志:SF;溢出标志: OF。 5、逻辑地址与物理地址有什么区别?如何将逻辑地址转换为物理地址? 答:物理地址是访问存储器的实际地址,一个存储单元对应唯一的一个物理地址。逻辑地址 是对应逻辑段内的一种地址表示形式, 它由段基址和段内偏移地址两部分组成, 通常表示为 段基址:偏移地址。 物理地址=段基址*10H+偏移地址。 6、写出下列逻辑地址的段基址、偏移地址和物理地址。 (1)2314H:0035H (2)1FD0H:000AH 答: (1)段基址:2314H;偏移地址:0035H;物理地址:23175H。 (2)段基址:1FD0H;偏移地址:000AH;物理地址:1FD0AH。 8、设(CS)=2025H, (IP)=0100H,则当前将要执行指令的物理地址是多少? 答:物理地址=(CS)*10H+(IP)=20350H 9、设一个 16 字的数据区,它的起始地址为 70A0H:DDF6H(段基址:偏移地址) ,求这个 数据区的首字单元和末字单元的物理地址。 答:首字:70A0*10H+DDF6H=7E7F6H 末字单元地址=起始地址+(字数-1)*2=7E7F6H+(16-1)*2=7E814H。 13、80486CPU 内部由哪些主要部件构成?有哪几种工作模式? 答: (1)总线接口单元、指令预取单元、指令译码单元、控制单元,整数运算单元,浮点运 算单元,段预存储器管理单元,高速缓冲单元。 (2)实地址模式、保护虚拟地址模拟、虚拟 8086 模式 14、80486CPU 存储器最大可寻址空间是多少?虚拟存储空间是多少?两者有何区别? 答:最大可寻址空间是 4GB,虚拟存储空间是 64TB。前者为实地址,虚拟存储空间为外部 存储管理器。 第三章 学习指导: 1. 掌握掌握寻址方式寻址方式 立即寻址:立即寻址:MOV AL,89H; 寄存器寻址:寄存器寻址: MOV AL,BL; 直接寻址:直接寻址: MOV AX,2000H;MOV AX,ARAE 寄存器间接寻址:寄存器间接寻址:MOV AX,BX(BP、SI、DI) 相对寄存器间接寻址:相对寄存器间接寻址:ADD 10HSI,AL 基址加变址寻址;基址加变址寻址;ADD BXDI,AX 相对基址加变址寻址;相对基址加变址寻址;ADD 100HBXDI,AX 2掌握指令:传送类指令、算术运算指令、逻辑运算和移位指令掌握指令:传送类指令、算术运算指令、逻辑运算和移位指令、条件转移类、条件转移类 4、指出下列指令中的源操作数和目标操作数的寻址方式。 (1)MOV BX,1000H 源操作数:立即寻址 ;目标操作数:寄存器寻址 (2)MOV AL,BX 源操作数:寄存器间接寻址; 目标操作数:寄存器寻址 (5)MOV DI+1000H,BX 源操作数:寄存器寻址;目标操作数:寄存器相对寻址 (6)MOV 1000H,CX 源操作数:寄存器寻址 ;目标操作数:直接寻址 5、设(DS)=2000H、 (ES)=2100H、 (SS)=1500H、 (BX)=0100H、 (BP)=0040、 (SI)=00A0H、 (DI)=0120H,在指令 MOV AX,src 中,求用下列表示源操作数 src 的有效地址 EA 和物理 地址 PA 各是多少? (1)100HBX EA=(100H+0100H)=0200H ; PA=2000*10H+0200H=20200H (2)ES:BX+DI EA=0100H+0120H=0220H ;PA=2100*10H+0220H=21220H (3)BP EA=0040H ; PA=1500*10H+0040H=15040h (4)ES:BX+10H EA=0100H+0010H=0110H ;PA=21000H+0110H=21110H 6、指出下列指令中的错误,并改正。 (1)MOV BL,30A0H 操作数不匹配 改:MOV BX,30A0H (2)MOV 0010H,AL 立即数不可以作为目标操作数 改:MOV AX,0010H (3)XCHG AL,BX 操作数类型不匹配 改:XCHG AX,BX (4)MOV AX,3456H 立即数送入存储器需要说明 改:MOV WORDPTR AX,3456H (5)PUSH AL 堆栈以字为操作单元 改:PUSH AX (6)POP CS POP 不可以用 CS 为目标操作数 改:POP AX (7)MOV DS,1000H 立即数不能直接送入段寄存器 改:MOV AX,1000H MOV DS,AX (8)MOV BX,1000H 存储器不可以相互传送 改:MOV AX,1000H MOV BX,AX (9)LDS (BX) ,1000H LDS 使用时期目标为 16 位通用寄存器 改:LDS BX,1000H (10)LEA BX,CX LEA 源操作数为存储器 改:LEA BX,CX 7、已知(AX)=4A0BH,1020H单元中的内容为 260FH,写出下列每条指令单独执行后的结 果。 (1)MOV AX,1020H ; (AX)=1020H (2)XCHG AX, 1020H ; (AX)=260FH (3)MOV AX,1020H ; (AX)=260FH (4)LEA AX,1020H ; (AX)=1020H 10、设一个堆栈段共有 100H 个字节单元,堆栈的起始地址为 1250H:0000H,若在堆栈中存 有 5 个字数据,问: (1)栈顶的物理地址多少? (2)栈底的物理地址是多少? (3)当前 SS 和 SP 的内容是多少? (4)若弹出两个数据,SP 的内容是多少? 答: 栈底:12600H 栈顶:12600-A=125F6H SS:1250H:0000H SP: 1250H:00F6H (4)弹出两个数据后,SP 内容,00F6+4=00FAH 则,SP:1250H:00FAH 11、编程完成下列程序段,根据运算结果置标志位 OF、SF、ZF、AF、PF、CF,并分析程序 执行结果是否正确?为什么?(n=8) (2)122-64 (4)-68+(-72) 答: (2)程序:MOV AL,120 MOV BL,64 SUB AL,BL 计算结果:00111010 OF=0 SF=0 ZF=0 AF=0 PF=1 CF=0 (4)程序: MOV AL,-68 MOV BL,-72 ADD AL,BL 计算结果:01110100 有溢出 OF=1 SF=0 ZF=0 AF=1 PF=1 CF=1 17、判断下列指令格式的对与错,并解释错在哪里。 (1)ADD 25H,AX 错;目标操作数不可以为立即数 (2)INC BX,1 错;INC 只有目标操作数 (3)MUL AL,BL 错;乘法指令目标操作数是隐含的 (4)SUBB AL,3 错;减法指令是 SUB (5)DAA AL 错;DAA 后无操作数 (6)NEG CX,0 错;NEG 后只有目标操作数 (7)CMP BX,1000HBX+SI 对 22、写出下列程序段执行后的结果。 MOV CL,4 MOV AL,87 MOV DL,AL AND AL,0FH OR AL,30H SHR DL,CL OR DL,30H (AL)= 37H , (DL)=35H 27、试用 CMP 指令和条件转移指令实现下列判断 (1)AX 和 CX 中的内容为无符号数: 若(AX)(CX)则转至 BIGGER 符号执行;若(AX)(DX)则转至 BIGGER 符号执行;若(BX)(DX)则转至 LESS 符号执行。 答: (1)CMP AX,CX JA BIGGER JB LESS (2)CMP BX,DX JG BIGGER JL LESS 第四章 学习指导:学习指导: 伪指令:数据定义伪指令伪指令:数据定义伪指令 DB、DW、DUP、程序框架、程序框架、简单程序设计(找数、简单程序设计(找数某一个位某一个位 置数、最大数、最小数、绝对值。变换的数(一个数变换置数、最大数、最小数、绝对值。变换的数(一个数变换 16 进制数、变换为十进制数)进制数、变换为十进制数) 显示(一个数、一串数)统计等显示(一个数、一串数)统计等 8、按下列的要求写出段定义格式。 (1)数据段的位置从 0E000H 开始,在该段中定义的 5 个字节数据,3 个字数据,2 双字数 据,要求字节数据从偏移地址 0000H 开始,字数据从偏移地址 0010H 开始,双字数据从偏 移地址 0020H 开始。 (2)堆栈段定义 100 个字节 (3)代码段的开始位置给有关段寄存器赋值,在程序结束时能够返回 DOS。 答:DATA SEGMENT ORG 0000H D1 DB 00H,01H,02H,03H,04H ORG 0010H D2 DW 0000H,0010H,0020H ORG 0020H D3 DD 3 DUP() DATA ENDS STACK SEGMENT STACk DB 100 DUP STACK ENDS CODE SEGMENT CODE ASSUME CS:CODE,DS:DATA START : CODE ENDS ENDS START 10、 定义数据段,画出数据存储示意图,并说明该数据段共有多少个字节单元。 DATA SEGMENT D1 DB 12,0,A,-6 D2 DW 1234H,65H D3 DB 3 DUP(3,0,5) DATA ENDS 共有 17 个存储单元如下图: 12、定义数据段如下,画出数据存储示意图,并说明变量 X1 和 X2 所对应的 逻辑地址各是多少? DATA SEGMENT AT 10A0H ORG 0010H X1 DB 22,33, ORG $ + 0020H 0CH 00H 41H FAH 34H 12H 65H 00H 03H 00H 05H 03H 00H 05H 03H 00H 05H X2 DB AB12CD DATA ENDS 10A00H 10A10H 10A32H X1 逻辑地址:10A0H:0010H X2 的逻辑地址:10A0H:0032H 13、定义数据段如下,写出执行以下指令后的结果。 DATA SEGMENT DA1 DW 2437H ,14A2H DA2 DB ABCD DA3 DD 10 DUP (?) DATA ENDS (1)MOV BX,DA1 ; (BX)=2437H (2)MOV SI,OFFSET DA1 ; (SI)=0000H (3)MOV AL, TYPE DA1 ; (AL)=2 (4)MOV AL,DA2+02H ; (AL)=C=43H (5)MOV AL,LENGTH DA3; (AL)=10 (6)MOV AL,SIZE DA3; (AL)=10 14、程序中数据段定义的数据如下: DATA SEGMENT NAMES DBGOOD MORNING! DW 2050H,78H,3080H DATA ENDS 请指出下列指令序列执行后累加器中的结果是多少? (1) MOV BX,OFFSET NAMES MOV AL,BX+03H (2) MOV BX,12 MOV SI,3 MOV AX,NAMESBX+SI (3) MOV BX,12 . . . 16H 21H 41H 42H 31H 32H 43H 44H MOV SI,3 LEA AX,NAMESBX+SI 答: (1)BX+03H对应的是 “D” 因此结果是 44H (2)78H (3)LEA 将源操作数的逻辑地址送到目标操作数,因此 0FH 18、编写程序,将 MBUF 为起始单元的 5 个数按相反次序传送到 NBUF 开始的存储单元中。 答:DATA SEGMENT MBUF DB 1,2,3,4,5 COUNT EQU $-MBUF NBUF DB 5 DUP(?) DATA ENDS STACK SEGMENT PARA STACK DB 20H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET MBUF MOV CX,5 LOP1: PUSH BX INC BX DEC CX JNZ LOP1 MOV BX,OFFSET NBUF MOV CX,5 LOP2:POP BX INC BX DEC CX JNZ LOP2 MOV AX,4CH INT 21H CODE ENDS END START 20、编写程序,将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一数 据段的两个缓冲区中,并在屏幕上显示正数和负数的个数(数据自定) 。 答: DATA SEGMENT SHU DB 2,4,-9,-10,5,-2,-2,4,5,7;源数据块,共有十个数,六个正数,四个负数 COUNT EQU $-SHU ZS DB 10 DUP(?);给正数预留 10 个字节的空间 ORG 0020H ;调整数据位置 FS DB 10 DUP(?) XZ DB NUMBER OF XZ:,$ ;显示在屏幕上的字符串 XF DB NUMBER OF XF:,$ DATA ENDS STACK SEGMENT STACK DW 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX ;数据段装入 MOV BX,OFFSET SHU MOV DI,OFFSET ZS MOV SI,OFFSET FS MOV CX,COUNT LOP1: MOV AL,BX CMP AL,0 JG SZ ;大于 0 跳转到 SZ 中 MOV SI,AL INC SI ;负数送到缓冲区 FS 中 JMP C1 SZ: MOV DI,AL ;正数送到缓冲区 ZS 中 INC DI C1: INC BX DEC CX JZ SHUCHU ;ZF 标志位为 1,cx 为 0 ,跳到 SHUCHU 执行 JMP LOP1 ;cx 不为 0,循环 SHUCHU: MOV DX,OFFSET XZ MOV AH,09H INT 21H ;输出字符串 SUB DI,OFFSET ZS ;正数的个数 ADD DI,30H MOV DX,DI MOV AH,02H INT 21H ;转为 ASCII 码输出 MOV DX,OFFSET XF MOV AH,09H INT 21H SUB SI,OFFSET FS ;负数的个数 ADD SI,30H MOV DX,SI MOV AH,02H INT 21H ;转为 ASCII 码输出 MOV AH,4CH INT 21H ;返回 DOS CODE ENDS END START 21、编写程序,从内存 BLOCK 开始,存放着 10 个字节的有符号数,从这些数种找出绝对值 最大的数,存在 MAX 中。 DATA SEGMENT BLOCK DB 2,8,9,18,-14,-12,5,12;源数据 共有 8 个数,绝对值最大数为 18 COUNT EQU $-BLOCK ;数据长度 ORG 0020H MAX DB ? ;最大数据 DATA ENDS STACK SEGMENT STACK DB 100 DUP (?) STACK ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA,SS:STACK START: MOV AX, DATA MOV DS, AX ;装入数据段基址 MOV AL, 0H ;初始 AX LEA BX, BLOCK MOV CX, COUNT LOP1: MOV DL, BX CALL CP ;调用比较子程序 INC BX ;递推 DEC CX JNZ LOP1 ;循环 LEA BX, MAX ;取最大值存储区地址 MOV BX, AL ;移入最大值 MOV AH, 4CH INT 21H ;返回 DOS CP PROC ;比较 AL 和 DL,将较大的数存入 AL. 入口参数: AL, DL 出口参数: AL CMP DL, 0 JG POSITIVE ;DL 为正数 NEG DL ;求相反数 POSITIVE: CMP AL, DL ;比较 AL 和BX中的大小 JG EXIT ;AL 大于 DL 则跳转 MOV AL, DL ;将 DL 移入 AL EXIT: RET ;退出 CP ENDP CODE ENDS END START 第五章 学习指导:掌握存储器扩展学习指导:掌握存储器扩展 1KB=1024 个字节个字节,128KB 等等 5-7 若用 1024*1b 的 RAM 芯片组成 16K*8b 的存储器,,需要多少芯片?在地 址线中有多少位参与片内寻址?多少位用做芯片组选择信号? 解: 先进行位扩展,一组芯片需要 8 片 再进行字扩展,需要 16 组芯片. 所以共需要 16*8=128 片 1024=1K,需要 10 位参与片内寻址 16=24,需要 4 位做选择信号. 5-8 试用 4K*8b 的 EPROM2732 和 8K*8b 的 SRAM6264,以及 74LS138 译码器,构成 一个8KB的ROM,32KB的 RAM 存储系统,要求设计存储器扩展电路,并指出每片存 储芯片的地址范围. 解: 型号 6264 6264 6264 2732 2732 A15A13 000 000 001 010 011 A12 1 0 A11A0 000 111 000 111 地址范围 0000H0FFFH 1000H1FFFH 2000H3FFFH 4000H5FFFH 6000H7FFFH 8000H9FFFH100 6264 片选 译码 片内译码 芯片 5# 4# 3# 2# 1# 6# 5-9 用 EPROM2764(8K*8b)和 SRAM6264(8k*8b)各一片组成存储器,其地址 范围为 FC000FFFFFH, 试画出存储器与 CPU 的连接图和片选信号译码电路 (CPU 地址线 20 位,数据线 8 位) 。 1111 1100 0000 0000 0000 1111 1101 1111 1111 1111 1111 1110 0000 0000 0000 1111 1111 1111 1111 1111 5-10 现有存储芯片:2K*1b 的 ROM 和 4K*1bde RAM,若用它们组成容量为 16KB 的 存储器,前 4KB 为 ROM,后 12KB 为 RAM,问各种存储芯片分别用多少片? 解: 4KB=4K*8b 需要 2*8=16 片 12KB=12K*8b 需要 3*8=24 片 第六章 学习指导: 1. 掌握掌握 8259 初始化编程初始化编程 2. 了解内部结构工作原理了解内部结构工作原理 3. 掌握掌握 IRR、IMR、ISR、PR 4. 掌握掌握 ICW2、OCW1、OCW2 含义含义 5. 了解中断处理过程了解中断处理过程 6. 掌握中断向量表相关含义掌握中断向量表相关含义 6-3 CPU 响应中断时的处理过程是什么?在各个处理环节主要完成哪些操作? 解:中断处理过程通常由中断请求、中断响应、中断处理和中断返回四个环节完成。 (1)中断请求:中断源需要进行中断服务时,由硬件产生一个中断信号 INTR 发给 CPU 且 保持到 CPU 响应。 (2)中断响应:CPU 在当前指令执行结束后采样查询 INTR,若中断请求信号有效且允许响 应 INTR 中断(IF=1) ,则向请求设备送回低电平有效的中断响应信号INTR,自此系统自动进 入中断响应周期,并由硬件自动完成内容入栈,清除 TF 和 IF 标志、断点(中断返回之后将 要执行的指令地址)入栈,取中断服务程序的入口地址等一系列操作,继而转去执行中断服 务程序。 (3)中断处理:执行中断的主体部分。不同的中断请求源,其中断处理的内容是不同的。 需要根据中断请求源所要完成的功能, 编写相应的中断服务程序存入内存。 等待中断响应后 调用执行。 (4)中断返回:又中断服务程序中的中断返回指令 IRET 完成。执行该指令时,将压入对战 的断点和标志位弹出,使 CPU 转向被中断的现行程序中继续执行。 6-10 中断向量表用来存放什么内容?它占用多大的存储空间?存放在内存的哪个区域? 可以用什么方法写入或者读取中断向量表的内容? 答:中断向量表用来存放中断服务程序的偏移地址和段基址。占用 1KB 内存。最低端的 1KB RAM 区,地址范围是 000H3FFH。 写入方法:1、 用传送指令直接装入。 2、 DOS 功能调用: INT 21H (AH)=25H (AL)=中断类型号 (DS:DX)=中断服务程序的入口地址 读出方法:1、 用传送指令直接读。 2、 DOS 功能调用:INT 21H (AH)=35H (AL)=中断类型号 出口参数: (ES:BX)=中断服务程序的入口地址 6-19 某系统使用两片 8259A 管理中断,从片的 INT 连接到主片的 IR2 请求输入端。设主片 工作于边沿触发、特殊完全嵌套、非自动结束和非缓冲方式,中断类型号为 70H,端口地址 为 80H 和 81H;从片工作与边沿触发、完全嵌套、非自动结束和非缓冲方式,中断类型号为 40H,端口地址为 20H 和 21H。要求: (1)画出主、从片级联图 (2)编写主、从片初始化程序 解: 电路图参见教材 P179 图 6-21, 主片CS由 A19-A1=0000 0000 0000 1000 000 和 M/IO给出低 电平,从片CS由 A19-A1=0000 0000 0000 0010 000 和 M/IO给出低电平。 主片 8259A MOV AL,11H(00010001B) OUT 80H, AL ;定义 ICW1 MOV AL, 70H(01110000B) OUT 81H, AL ;定义 ICW2 MOV AL, 04H(00000100B) OUT 81H, AL ;定义 ICW3 MOV AL, 11H(00010001B) OUT 81H, AL ;定义 ICW4 MOV AL, FBH(11111011B) OUT 81H, AL ;定义 OCW1 (开放从片 IR2 的请求) IN AL, 81H AND AL, 11111011 OUT 81H, AL 从片 8259A MOV AL,11H(00010001B) OUT 20H, AL ;定义 ICW1 MOV AL, 40H(01000000B) OUT 21H, AL ;定义 ICW2 MOV AL, 02H(00000010B) OUT 21H, AL ;定义 ICW3 MOV AL, 01H(00000001B) OUT 21H, AL ;定义 ICW4 6-20 某系统由 8259A 的 IR2 引入外设中断请求(跳变信号有效) ,要求当 CPU 响应 IR2 请求 时,输出显示字符串“*” ,并中断 10 次退出,试编写主程序和中断服务程序。 解: 设 8259A 的 I/O 地址为 20H,21H,中断类型号 0AH,从 IR2 引入 DATA SEGMENT MESS DB *,OAH,ODH,$ INTA00 EQU 0020H INTA01 EQU 0021H DATA ENDS STACK SEGMENT STACK DB 100H DUP (?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN:MOV AX,DATA MOV DS,AX MOV DX,INTA00 ;8259A 初始化 MOV AL,13H ;写 ICW1 OUT DX,AL MOV DX,INTA01 MOV AL,08H ;写 ICW2 OUT DX,AL MOV AL,01H ;写 ICW4 OUT DX,AL PUSH DS MOV AX,SEG INT-P ;设置中断矢量 MOV DS,AX MOV DX,OFFSET INT-P MOV AL,0AH MOV AH,25H INT 21H POP DS MOV AL,0FBH ;写中断屏蔽字 OCW1 OUT DX,AL MOV DX,INTA00 MOV AL,20H ;写中断结束方式 OCW2 OUT DX,AL MOV BX,10 WAIT1: STI ;开中断 JMP WAIT1 ;等待中断 INT-P:MOV AX,DATA ;中断服务程序入口 MOV DS,AX MOV DX,OFFSET MESS ;输出指定字符串 MOV AH,09H INT 21H MOV DX,INTA00 ;写 OCW2,送中断结束命令 EOI MOV AL,20H OUT DX,AL DEC BX ;控制 10 次循环 JNZ NEXT MOV DX,INTA01 ;读屏蔽寄存器 IMR IN AL,DX OR AL,04H ;屏蔽 IR2 请求 OUT DX,AL STI ;开中断 MOV AX,4C00H ;返回操作系统 INT 21H NEXT: IRET ;中断返回 CODE: ENDS END MAIN 第七章 学习指导:学习指导: 1. 掌握掌握 8255、8254、8250 初始化编程初始化编程 2. 掌握芯片工作方式掌握芯片工作方式 3. 掌握掌握 8255 端口端口 A,B,C 作为输入和输出口的作为输入和输出口的程序程序应用应用 4. 掌握掌握 8254 计算和定时器的程序应用计算和定时器的程序应用 5. 8250 查询发送和接收程序查询发送和接收程序 6. 掌握掌握 DAC0832 在输出口输出几种方式、在输出口输出几种方式、ADC0809 在输入口输入方式的应用在输入口输入方式的应用 7. 一些接口基本原理一些接口基本原理 3、CPU 与 IO 接口设备数据传送的控制方式有哪几种?它们各有何特点? 答: (1)查询方式:不需要额外的硬件支持,但由于 CPU 与外设工作的不同步,致使 CPU 利用率低,适用于工作不太繁忙的系统中。 (2)中断方式:CPU 与外部设备并行工作 (3)DMA 方式:数据传送过程中,由 DMA 控制器参与工作,不需要 CPU 的干预,对批量 数据传送效率高。 6、设 8255A 的 A 口工作于方式 1 输出,B 口工作于方式 0 输入,试编写初始化程序(设端 口地址为 40H43H) 答:MOV DX ,43H MOV AL ,10100010 OUT DX,AL 7.使用 8255A 作为开关和 LED 指示灯电路的接口.要求 8255A 的 A 口连接 8 个开关,B 口连 接 8 个 LED 指示灯,将 A 口的开关状态读入,然后送至 B 口控制指示灯亮、灭。试画出接 口电路设计图,并编写程序实现。 程序实现: 设 8255 的地址:0FFE0H0FFE3H DATA SEGMENT DB 100H DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE ,DS DATA START:MOV AX,DATA MOV DS,AX MOV AL,10010000 ; A 口方式 0 输入 B 口方式 0 输出 MOV DX,0FFE3H OUT DX,AL MOV DX, 0FFE0H IN AL,DX ;读取 A 口开关状态 INC DX NOT AL OUT DX,AL ;输出 B 口驱动 LED,开关闭合则 LED 亮 RET CODE ENDS END START 10、利用 8254 的通道 1,产生 500Hz 的方波信号。设输入时钟频率 CKL1=2.5MHz,端口地 D0 34 D1 33 D2 32 D3 31 D4 30 D5 29 D6 28 D7 27 PA0 4 PA1 3 PA2 2 PA3 1 PA4 40 PA5 39 PA6 38 PA7 37 PB0 18 PB1 19 PB2 20 PB3 21 PB4 22 PB5 23 PB6 24 PB7 25 PC0 14 PC1 15 PC2 16 PC3 17 PC4 13 PC5 12 PC6 11 PC7 10 RD 5 WR 36 A0 9 A1 8 RESET 35 CS 6 U1 8255 D0-D7 RD WR A0 A1 RESET A 1 B 2 C 3 E1 4 E2 5 E3 6 Y0 15 Y1 14 Y2 13 Y3 12 Y4 11 Y5 10 Y6 9 Y7 7 U2 74LS138 A2 A3 A4 S1 S2 S3 S4 S5 S6 S7 S8 R1R6R7R2R3R4R5R8 VCC D1 D2 D3 D4 D5 D6 D7 D8 12 U3A 7406 34 U3B 7406 56 U3C 7406 89 U3D 7406 1011 U3E 7406 1213 U3F 7406 12 U4A 7406 34 U4B 7406 VCC VCC 址为 FFA0HFFA3H,试编写初始化程序。 答:端口地址:FFA0H-FFA3H 计数器 1 的控制字:01110110B=76H 计数常数=2.5M/500=5000 初始化程序: MOV AL,76H MOV DX,0FFA3H OUT DX,AL MOV AX,5000 MOV DX,0FFA1H OUT DX,AL ;写入计数器 1 的低字节 MOV AL,AH OUT DX,AL ;写入计数器 1 的高字节 11、某系统使用 8254 的通道 0 作为计数器,记满 1000,向 CPU 发中断请求,试编写初始化 程序(端口地址自设) 。 答:设 8254 端口地址:40H-43H 计数器 0 的控制字:00110000B=30H 计数常数=1000 初始化程序: MOV AL,30H OUT 43H,AL MOV AX,1000 OUT 40H,AL ;写入计数器 0 的低字节 MOV AL,AH OUT 40H,AL ;写入计数器 0 的高字节 12、采用 8254 的通道 0 产生周期为 10ms 的方波信号,设输入时钟频率为 100kHz,8254 的 端口地址为 38H-3BH,试编写初始化程序。 答:8254 端口地址:38H-3BH 计数器 0 的控制字:00110110B=36H 计数常数=100K*10ms=1000 初始化程序: MOV AL,36H OUT 3BH,AL MOV AX,1000 OUT 38H,AL ;写入计数器 0 的低字节 MOV AL,AH OUT 38H,AL ;写入计数器 0 的高字节 15、什么是波特率?假设异步传输的一帧信息由 1 为起始位,7 位数据位、1 为校验位和 1 位停止位构成,传送的波特率为 9600,则每秒钟能传输字符的个数是多少? 答:波特率是指数据传送的速率,含义是指每秒钟传二进制数的位数,单位用 bps 或波特表 示每秒可传送的字符个数。 9600/(1+7+1+1)=960 16、一个异步串行发送器,发送的字符格式为:1 位起始位、7 位数据位、1 位奇偶校验位 和 2 位停止位,若每秒传送 100 个字符,则其波特率为多少? 答:100*(1+7+1+2)=1100bps 19、设某系统使用一片 8250 进行串行通信, 要求波特率为 2400, 8 位数据位,2 位停止位, 偶校验,对接收缓冲器满开中断,试编写初始化程序。 答:设 8250 端口地址:3F8H-3FEH XTAL1=1.8432MHz,BAUD=2400 除数寄存器:1.8432M/(2400*16)=48=30H 3F8H 线路控制寄存器:10011111B=1FH 3FBH 中断允许寄存器:00000001B=01H 3F9H 初始化程序: MOV DX,3FBH MOV AL,80H OUT DX,AL ;置线路控制寄存器 DLAB=1 MOV DX,3F8H MOV AX,30H OUT DX,AL ;除数寄存器低 8 位 INC DX MOV AL,AH OUT DX,AL ;除数寄存器高 8 位 MOV DX,3FBH MOV AL,1FH OUT DX,AL ;8 位数据位 2 停止位 偶校验 MOV DX,3FCH MOV AL,03H OUT DX,AL ;MODEM MOV DX,3F9H MOV AL,01H OUT DX,AL ; 中断允许寄存器 21、设计一个应用系统,要求:8255A 的 A 口输入 8 个开关信息,并通过 8250 以串行的方 式循环,将开关信息发送出去。已知:8255 的端口地址为 100H-103H,8250 输入的基准时 钟频率为 1.8432MHz,传输波特率为 2400,数据长度为 8 位,2 位停止位,奇校验、屏蔽全 部中断,端口地址为 108H10EH,采用查询方式传送。要求: (1)设计该系统的硬件连接电路(包括地址译码电路) ; (2)编写各芯片的初始化程序 (3)编写完成上述功能的应用程序。 答: (1) (2)8255 初始化程序: MOV DX,103H MO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论