16 32位微机原理、汇编语言及接口技术第十一章课后习题答案.doc

上传人:rrsccc 文档编号:9240711 上传时间:2021-02-11 格式:DOC 页数:11 大小:30KB
返回 下载 相关 举报
16 32位微机原理、汇编语言及接口技术第十一章课后习题答案.doc_第1页
第1页 / 共11页
16 32位微机原理、汇编语言及接口技术第十一章课后习题答案.doc_第2页
第2页 / 共11页
16 32位微机原理、汇编语言及接口技术第十一章课后习题答案.doc_第3页
第3页 / 共11页
16 32位微机原理、汇编语言及接口技术第十一章课后习题答案.doc_第4页
第4页 / 共11页
16 32位微机原理、汇编语言及接口技术第十一章课后习题答案.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《16 32位微机原理、汇编语言及接口技术第十一章课后习题答案.doc》由会员分享,可在线阅读,更多相关《16 32位微机原理、汇编语言及接口技术第十一章课后习题答案.doc(11页珍藏版)》请在三一文库上搜索。

1、16 32位微机原理、汇编语言及接口技术第十一章课后习题答案 导读:就爱阅读网友为您分享以下“16 32位微机原理、汇编语言及接口技术第十一章课后习题答案”资讯,希望对您有所帮助,感谢您对的支持!习题 11.4习题 11.6连接只改 PAPB,其余不变 只要把涉及输出到端口 A 的代码改为输出到端口 B 即可。 PC7 做选通信号,为输出,即 C 端高部分为输出 PC2 为 Busy,为输入,即 C 端低部分为输入 C 端整个定为方式 0 B 端输出,方式 0 A 端任意,这里为方式 0 输出 假设 8255A 端口 A、B、C 和控制端口地址分别为 FFF8H、FFFAH、FFFCH 和 F

2、FFEH。 ;8255A 的初始化 mov dx,0fffeh ;控制端口地址:FFFEH mov al,10000001B ;方式控制字:10000001=81H out dx,al ;B 端口方式 0 输出,C 端口上方式 0 输出、下方式 0 输入, ; 端口任意(方式 0,出) mov al,00001111B ;端口 C 的复位置位控制字,使 PC71 out dx,al ;使 PC71, 即置 STROBE*=1 (只有输出数据时才为低脉冲) ;输出打印数据子程序,入口参数 AH=打印数据 ;查询 printc proc push ax push dx prn: mov dx,0f

3、ffch ;读取端口 C in al,dx ;查询打印机状态 and al,04h ;00000100,PC2BUSY0? jnz prn ;PC21,打印机忙,则循环等待 ;打印子程序:输出printcmov dx,0fffAh mov al,ah out dx,al ;打印子程序:打印 mov dx,0fffeh mov al,00001110B out dx,al nop nop mov al,00001111B out dx,al ;打印子程序:返回 pop dx pop ax ret endp;PC20,打印机不忙,则输出数据 ;将打印数据从端口 B 输出 ;从 PC7 送出控制低脉

4、冲 ;置 STROBE*0 ;产生一定宽度的低电平 ;置 PC7=1,即 STROBE*=1 ;最终,STROBE*产生低脉冲信号习题 11.7方式 1 输出下: 端口 A 的 ACK*即 PC6,OBF*即 PC7,INTR 即 PC3 对应端口 B 的 ACK*即 PC2,OBF*即 PC1,INTR 即 PC0 数据端口变换为 PB mov dx,0fffeh mov al,84h out dx,al mov al,04h ;使 INTEB(PC2)为 0,禁止中断out dx,al mov cx,counter ;打印字节数送 CX mov bx,offset buffer ;取字符串

5、首地址 call prints ;调用打印子程序 prints proc push ax ;保护寄存器 push dx print1: mov al,bx ;取一个数据 mov dx,0fffah out dx,al ;从端口 B 输出 mov dx,0fffch print2: in al,dx test al,02h ;检测(PC1)为 1 否? jz print2 inc bx loop print1 pop dx pop ax ret prints endp习题 11.8L0L3 对应 PC4PC7,L 亮否可以通过给 PC4PC7 置位复位实现,即 C 端口的高部分 为输出; 根据

6、K0K3(PC0PC3) ,确定 L0L3(对应 PC4PC7)亮否,所以 C 端低部分为输入; 又 C 端的 8 位都被正常使用,所以 A 端口和 B 端口均为方式是 0 ;写入方式字 mov al,100001b ;81h mov dx,控制口地址 ;0fffeh out dx,al ;加入下一段更好,使 L0L3 全亮 mov al,0fh mov dx,端口 C 地址 ;0fffch out dx,al ;PC4PC7 为高,经反向驱动为 0,与阳极间形成通路,LED 亮 ;控制程序段 mov dx,端口 C 地址 ;0fffch in al,dx ;读入 PC0PC3 mov cl,

7、4 shl al,cl ;左移 4 位,PC0PC3PC4PC7 out dx,al ;控制 PC4PC7。 因为有反向驱动,PC0 为 0,对应 PC4 为 0,二极管左右均为高,不发光,符合题目要 求。习题 11.10当按下或释放一个键时,往往会出现按键在闭合位置和断开位置之间跳几下才稳定到闭 合状态的现象就是机械按键的抖动 方法解决 硬件:消抖电路 软件:程序延时,以避开抖动的时间习题 11.11重键指两个或多个键同时闭合 简单情况:不予识别,认为是错误的按键 通常情况:只承认先识别出来的键 连锁法:直到所有键都释放后,读入下一个键 巡回法:等被识别的键释放以后,就可以对其他闭合键作识别

8、,而不必等待全部键释放 正常的组合键:都识别出来习题 11.12最初设置行线端口为端口 B(输出) 、列线端口为端口 A(输入) ,三个端口和控制 端口对应地址为 218H21BH 端口 A、B 工作在方式 0 ;设置端口 B 为行(输出) ,端口 A 为列(输入) mov al,90h ;1 00 10 0 90H mov dx,21BH out dx,al ;第 1 段:是否有键按下 key1: mov al,00 mov dx,219h ;假设 219h 表示行线端口 out dx,al ;使所有行线为低电平 mov dx, 218h ;假设 218h 为列线端口 in al,dx ;读

9、取列值 cmp al,0ffh ;判定是否有列线为低电平 jz key1 ;无闭合键,循环等待 call delay ;有,延迟 20ms 清除抖动 ;第 2 段:识别按键(反转法) key2: mov al,00 mov dx,219h ;设置行线接输出端口,列线接输入端口 out dx,al ;设置行线全为低 mov dx,218h in al,dx ;读取列值 cmp al,0ffhjz key2 ;无闭合键,循环等待 push ax ;有闭合键,保存列值 push ax ;行列反转,设置端口 B 为行(输入) ,端口 A 为列(输出) mov al,82h ;1 00 00 1 82H

10、 mov dx,21BH out dx,al ;设置行线接输入端口,列线接输出端 mov dx,218h pop ax out dx,al mov dx,219h in al,dx pop bx mov ah,bl ;第 3 段:查找键代码 mov si,offset table mov di,offset char mov cx,64 cmp ax,si jz key4 inc si inc si inc di loop key3 jmp key1 ;第 4 段:等待按键释放 mov al,di call delay ;行列值表和键代码表 ;键盘的行列值表 dw 0fefeh dw 0fdf

11、eh dw 0fbfeh ;键盘的键代码表 db db ;输出列值 ;读取行值 ;组合行列值 ;此时,al行值,ah列值 ;table 为键行列值表 ;char 为键代码表 ;CX键的个数 ;与键值比较 ;相同,说明查到 ;不相同,继续比较,行值,列值两个,所以加 2key3:;全部比较完,仍无相同,说明是重键 ;获取键代码送 AL ;判断按键是否释放,没有则等待 ;按键释放,延时消除抖动 ;后续处理key4:table;键 0 的行列值(键值)高 8 为列值,低 8 为行值 ;见 key2 末尾 ;键 1 的行列值 ;键 2 的行列值 ;其他键的行列值 ;键 0 的代码值 ;键 1 的代码值

12、 ;其他键的代码值char习题 11.14.model small ;定义程序的存储模式 .stack ;定义堆栈段 .data ;定义数据段 .code mov ax,data;程序段起点 mov ds,ax ;设置 DS mov ah,01h ;ROM-BIOS int 16H 01H 号调用,出口 ZF=0,表示有键 ;按下,AX=接通扫描码+ASCII 码 int 16h jz key1 push ax ;ah 中存放接通扫描码 mov dl,al mov ah,2h int 21h pop ax; push ax mov al,ah xor ah,ah mov bl,100 div

13、bl push ax call HTOASC mov dl,al mov ah,2h int 21h pop ax mov al,ah xor ah,ah mov bl,10 div bl push ax call HTOASC mov dl,al mov ah,2h int 21h pop ax mov al,ah call HTOASC mov dl,alstart: key1:;alax/10 的商,百位,ah余数 ; ;求并显示扫描码百位;alax/10 的商,百位,ah余数 ; ;求并显示扫描码十位;求并显示扫描码百位、十位和个位mov ah,2h int 21h pop ax or

14、 ah,10000000B mov al,ah xor ah,ah mov bl,100 div bl push ax call HTOASC mov dl,al mov ah,2h int 21h pop ax mov al,ah xor ah,ah mov bl,10 div bl push ax call HTOASC mov dl,al mov ah,2h int 21h pop ax mov al,ah call HTOASC mov dl,al mov ah,2h int 21h mov ax,4c00h int 21h HTOASC proc and al,0fh cmp al,

15、9 jbe htoasc1 add al,37h ret htoasc1: add al,30h ret HTOASC endp;alax/10 的商,百位,ah余数 ; ;求并显示扫描码百位;alax/10 的商,百位,ah余数 ; ;求并显示扫描码十位;求并显示扫描码百位、十位和个位;将 AL 低 4 位表达的一位 16 进制数转换为 ASCII 码;是 af,加 37h 转换为 ascii 码 ;是 09,加 30h 转换为 ascii 码end start习题 11.15LEDtb db 3fh, 06h, 5bh, 4fh 66h, 6dh, 7dh, 07h 7fh, 6fh, 7

16、7h, 7ch 39h, 5eh, 79h, 71h习题 11.16C 为方式 0 输入,端口 fffah B 根据 C 选定,是位控制端口,方式 0 输出,端口 fff9h A 根据 C 选定,是段控制端口,方式 0 输出,端口 fff8h 8255A 方式控制字:10001001B=89h ,端口 fffbh ;程序段 TAB DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH ;LED 数码管 18 的显示段码 PB DB 1 ;位选定义 PC DB 0 ;开关状态暂存 MOV BX,0 MOV DS,BX MOV BX,OFFSET TAB ;段码表指针 MOV AL

17、,10001001B MOV DX,0FFFbH OUT DX,AL ;8255 方式设置 L1: MOV DX,0FFF9H MOV AL,PB OUT DX,AL ;位选通 CALL DELAY ROL PB,1 ;位选转换 MOV DX,0FFFaH IN AL,DX ;读开关状态 MOV PC,AL ;开关状态暂存 MOV CX,8 ;移位 8 次查询开关状态,同时按下最高位优先 L2: RCR PC,1 JC L3 MOV AL,8 SUB AL,CL ;获得开关位 XALT ;查表获得显示段码L3:MOV OUT LOOP JMPDX,0FFF8H DX,AL L2 L1;显示开关位习题 11.17DATA0 DATA7:8 位并行数据信号线,打印数据通过它们送至打印机 STROBE*:选通,用于使打印机接收数据的选通信号。负脉冲的宽度在接收端应大于 0.5m s BUSY:忙,表示打印机不能接收数据 ACK*:响应,打印机接收一个数据字节后就回送一个响应的负脉冲信号(脉宽约为 5m s ) 8 位数据的可靠输出通过选通 STROBE*、响应 ACK*和忙 BUSY 三个联络信号控制百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网,您的在线图书馆 11

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1