ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:52.27KB ,
资源ID:28562298      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28562298.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理第9章习题与答案.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理第9章习题与答案.docx

1、微机原理第9章习题与答案习题一、选择题1.对8255A的C口执行按位置位/复位操作时,写入的端口地址是_。A. 端口A B.端口B C. 端口C D. 控制口答案:D 2.要将8255A的3个8位的I/O端口全部设定为方式0的输入,其设置的方式控制字为_。答案:D 3.当8255A的A口工作在方式1,B口工作在方式1时,C口仍然可按基本的输入输出方式工作的端口线有_条。答案:B4.当8255A端口PA、PB分别工作在方式2、方式1时,其PC端口引脚为_。答案:C5.如果8255A的端口A工作在双向方式,这时还有_根I/O线可作其他用。答案:A4PC7全部为输出线时,表明8255A的A端口工作方

2、式是_。答案:A7.8255A中既可以作为数据输入、输出端口,又可以提供控制信息、状态信息的端口是_。A. 端口A B.端口B C. 端口C D. 控制口答案:C8. 8255A的端口A和端口B工作在方式1输出时,与外部设备的联络信号将使用_信号。A. INTR B. C. INTE D. IBF答案:B二、填空题1. 当8255A的A口工作于方式1输入,B口工作于方式0时,C口的_位可以作为输入输出口使用。答案:5位2.若要求8255A的A、B口工作在方式1,作为输入,C口作为输出,则输入8255A控制口的控制字为_。答案:B6H3.若8255A的端口B工作在方式1,并为输出口,置位PC2的

3、作用为_。答案:允许端口B输出中断4.当数据从8255A的端口C往数据总线上读出时,8255的几个控制信号、A1、A0、分别是_。答案:0 1 0 0 15. 8255A在方式0工作时,端口A、B和C的输入输出可以有_种组合。答案:16三、问答题8255A和外设之间有几个数据端口?在结构上有什么区别?答案:3个数据端口这3个端口与外设的数据接口都是8位,但功能不完全相同。A口有3种工作方式,B口有2种工作方式,C口有1种工作方式。C口可以分两部分使用,常用来配合A口和B口工作,C口的高四位PC7 PC4常用来配合A口工作,C口的低四位PC3 PC0常用来配合B口工作。各端口在结构上有所不同:端

4、口A包含1个8位的数据输入锁存器,1个8位的数据输出锁存器;端口B包含1个8位的数据输入缓冲器,1个8位的数据输出锁存器;端口C包含1个8位的数据输入缓冲器,1个8位的数据输出锁存器。2.8255A的地址信号线是什么?共占用几个端口地址?答案:地址信号端A1、A0,有4种组合:A1A000,选中端口A的寄存器;A1A001,选中端口B的寄存器;A1A010,选中端口C的寄存器;A1A011,选中控制字寄存器。3.A口工作于方式0,输入,B口工作于方式1,输出,C口的PC1作为输出联络口,PC2作为输入联络口,8255A占用的4个端口地址为80H 83H,编写初始化程序,画出端口地址的译码电路。

5、答案:控制字:1 001 0 1 00 94HMOV AL, 94HOUT 83H, AL4.8255A的A口和B口都工作于方式0,PC6作为输入联络口,PC2作为输出联络口。当检测到PC6为“1”时,A口输出数据46H,并且PC2输出“1”。设8255A的4个端口地址为108H 10EH,试编写以上操作程序段。答案:控制字:1 00 0 1 00 0 88H A口方式0输出 C口高4位输入PC2输出1 0 000 010 1 05HMOV DX, 10EHMOV AL, 88HOUT DX, AL ;控制字DEC DXNEXT: IN AL , DXTEST AL, 40H ;测试PC6JZ

6、 NEXT ;为0,继续查询MOV DX, 108HMOV AL, 46HOUT DX, AL ;A口输出MOV AL, 05HMOV DX, 10EHOUT DX, AL ;PC2输出5.如题图9.1所示电路,当A口连接的开关闭合时,相应的B口连接的发光二极管亮。(1)写出8255A的4个端口地址;(2)编写程序完成以上操作。题图9.1 硬件电路连接答案:地址:208H20BH控制字:1 00 1 0 0 00 A口发生0输入 B口方式0输出MOV DX , 20BHMOV AL, 90HOUT DX, ALMOV DX, 108HIN AL, DX ;读A口INC DXOUT DX, AL

7、 ;写B口6如题图9.2所示电路,B口工作于方式1输出,作为CPU和打印机之间的并行接口电路。设8255A的端口地址为90H 93H,编写程序完成将RUF开始的1000个字节的数据打印。题图9.2 B口方式1输出答案:控制字 1 000 0 1 0 0 84H B口方式1输出允许B口中断,可以查询中断指示状态:PC2置1, 0 000 010 1MOV AL, 84HOUT 93H, AL ;写控制字MOV AL, 05HOUT 93H, AL ;写中断允许LEA SI , RUFMOV CX, 1000L1: MOV AL, SI ;将数据传送至AL OUT 91H, AL ;从A口输出数据

8、,使变为低电平L2: IN AL, 92H ;从C口读取状态字 ;打印机取走数据后,变为低电平,并将变为高电平 AND AL, 01H ;判断B口是否提出中断申请 JZ L2 ;如果没有,继续检测状态字 INC SI ; DEC CX JNZ L1 HLT习题3答案1. 指出下列指令的错误原因。(1) AND AX, DL ;类型不匹配(2) ADD CS, DX ;CS不能作为目的操作数(3) MOV AX, IP ;IP不能作为指令的操作数(4) MOV BPSI, SI ;两个操作数不能同时为内存操作数(5) SUB BPSI, ES:DX ;段超越前缀只能用在内存操作数之前(6) XC

9、HG AL, SIDI ;没有SIDI这种操作数形式(7) JGE AX ;条件转移指令的操作数只能是标号(8) PUSH DL ;对堆栈不能进行字节操作2. 用一条指令将BX清0。(请给出3种方法)方法1:MOV BX, 0 方法2:SUB BX, BX 方法3:AND BX, 0 ;将BX和0做与,可以将BX清零方法4:XOR BX, BX3. 写出实现下列功能的指令序列。(1) 判断AX的值,若AX等于0,则转到标号LABEL处。(请写出3种方法)方法1:CMP AX, 0 JZ LABEL ; 如果 ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果 ; 因此指令执行后

10、AX内容不会受到破坏方法2:TEST AX, 0FFHJZ LABEL ; 如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。 ; 和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已; 经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏方法3:AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的JZ LABEL(2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。MOV AH, AL AND AL, 0FH ; AL高4位通过与清零,而低4位保持不变MOV CL, 4 SHR

11、 AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。TEST AX, 01H ;TEST做与运算,通过与来检测AX的最低位JNZ CONTINUE ;如果ZF = 1,说明AX的最低位是0,那么AX中的数是偶数,就跳转,否则, ;说明AX中的是奇数,而BX中的是偶数,符合结果要求,不用动了XCHG AX, BX CONTINUE : .4. 分析下列指令序列完成什么功能。MOV CL, 4SHL DX, CLMOV BL, AHSHL AX, CLS

12、HR BL, CLOR DL, BL答案:将DX.AX中的32位数整体逻辑左移4位。5. 给出下列各条指令执行后AL以及CF、OF、SF、和ZF的值。指令ALCFOFSFZF备注MOV AL, 100100/64HXOR AL, AL100/64H0010XOR后CF=OF=0,其余据结果设置MOV AL, -1-1/0FFH0010MOV指令不影响标志位INC AL00001INC不影响CF,其余据结果设置NOT AL0FFH0001NOT指令不影响标志位SHL AL, 10FEH1010SHL据移出的位设CF,据结果设SF,ZF,一位移动,据移位前后最高位是否变化设置,有变化OF = 1,

13、 无变化OF = 0CMP AL, 100FEH0010CMP指令根据结果设置6个标志位SUB AL, 7FH7FH0000SUB根据俄结果设置6个标志位SHL AL, 10FEH0110解释同上6. 比较AX,BX和CX中无符号数的大小,将最小数放入AX中。答案:CMP AX, BXJC BBB ; 如果AX = BX,跳转XCHG AX, BX ; 否则,交换AX和BX的值,将两者中的小值放到AX中去BBB:CMP AX, CX JC CCC ; 如果AX = CX,跳转XCHG AX, CX ; 否则,交换AX和CX的值,将两者中的小值放到CX中去CCC:INT 20H ;返回DOS7.

14、 变量定义伪指令与符号定义伪指令的主要作用是什么?答案:变量定义伪指令:主要用来为某种类型(比如字节型、字型)的内存单元的地址指定一个可以引用的名字标识。符号定义伪指令:其实就是定义一个宏替换常量,用定义的符号代表一个文本串或者一个数值,在程序中遇到定义的符号时用相应的文本串或者数值去替换。8. 设有下列段定义:DSEG SEGMENTX DW 1, 3DSEG ENDS给出下列两组指令序列分别执行后AX的值。(1) MOV AX, DSEG MOV DS, AX MOV AX, X+1(2) MOV AX, SEG X MOV ES, AX MOV AX, ES: X INC AX答案:(1

15、) (AX) = 2(2) (AX) = 2备注:这两小段程序实现的功能是相同的,都是给子类型的变量X的值加1。第二段程序采用了段超越方式来寻址操作数。9. 设有如下定义的数据段:DATA SEGMENT ORG 100V1 DW 2 DUP (20), $ + 10BUF1 DB 100, 5 DD 0BUF2 DW 1, 2, 2A9HLEN EQU BUF2 BUF1VA DW BUF1DATA ENDS则V1+1中存放的字节数据为 ( 0 ), V1+4中存放的字数据为( 114 / 72H ),VA的内容为 ( 106 / 6AH ),LEN的值为 ( 8 )。10. 在数据段定义的

16、两个变量S1和S2,要求设计一个完整的程序,将以S1为首地址的50个字节依次传送到以S2为首地址的内存单元中。datasg segments1 db 25 dup (12)s2 db 50 dup (0)datasg endscodesg segment assume cs : codesg, ds : datasgstart: mov ax, datasg mov ds, ax mov es, ax mov si, offset s1 mov di, offset s2 mov cx, 50 rep movsb mov ax, 4c00h int 21h codesg endsend sta

17、rt 11. 从键盘读入一个字符串(长度 50),统计其字母、数字及其他字符的个数。Fdatasg segmentbuff1 db 50 ;最大能容纳的字符个数count db (?) ;实际输入的字符个数buff2 db 50 dup (?) ;实际字符缓冲区letters db 0 ;输入的字母个数digits db 0 ;输入的数字个数others db 0 ;输入的其他字符的个数datasg endscodesg segment assume cs:codesg, ds:codesgstart: mov ax, datasg mov ds, ax mov dx, offset buff

18、1 ;为0AH号系统功能调用准备输入参数DS:DX指向输入缓冲区的首地址 mov ah, 0ah int 21h xor al, al mov ch, 0 mov cl, count ;CX中存放循环次数 mov si, offset buff2 ;为lodsb准备源地址,DS:SI指向实际的字符串地址 cldcheck: lodsb ;取一个数据到AL cmp al, A jc x1 cmp al, Z jnc x1 inc letters ;将字符串中的大写字母个数统计到letters变量中 jmp nextx1: cmp al, a jc x2 cmp al, z jnc x2 inc

19、letters ;将字符串中的小写字母个数统计到letters变量中 jmp nextx2: cmp al, 1 jc x3 cmp al, 9 jnc x3 inc digits ;将字符串中的数字字符统计到digits变量中 jmp nextx3: inc others ;统计其他字符个数next: loop check mov ax, 4c00h int 21hcodesg ends end start12. 设计一个程序,求10个无符号数中的最大值。并将最大值存入变量MAX中。datasg segmentarray db 20, 12, 16, 14, 13, 90, 45, 32,

20、67, 100 ;字节型数组max db 0datasg endscodesg segment assume cs:codesg, ds:datasgstart: mov ax, datasg mov ds, ax lea si, array ;数组首地址 mov cx, 10 ;数组元素个数 cld ;让地址值不断增大 lodsb ;将第一个数组元素放到AL中 mov max, al dec cxnext: lodsb ;取下一个数组元素到AL中 cmp al, max jc goon ;(al) = max 则 max中的值不变 mov max, al ;否则 max = (al)goon: loop next mov ax,4c00h int 21hcodesg ends end start

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1