微机原理汇编与接口技术习题附标准答案习题附标准答案

上传人:012****78 文档编号:141742530 上传时间:2020-08-12 格式:DOC 页数:17 大小:4.95MB
返回 下载 相关 举报
微机原理汇编与接口技术习题附标准答案习题附标准答案_第1页
第1页 / 共17页
微机原理汇编与接口技术习题附标准答案习题附标准答案_第2页
第2页 / 共17页
微机原理汇编与接口技术习题附标准答案习题附标准答案_第3页
第3页 / 共17页
微机原理汇编与接口技术习题附标准答案习题附标准答案_第4页
第4页 / 共17页
微机原理汇编与接口技术习题附标准答案习题附标准答案_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《微机原理汇编与接口技术习题附标准答案习题附标准答案》由会员分享,可在线阅读,更多相关《微机原理汇编与接口技术习题附标准答案习题附标准答案(17页珍藏版)》请在金锄头文库上搜索。

1、微机原理、汇编与接口技术第八章习题答案8.1端口地址为380H383H4个A端口基本输入、B端口基本输出的方式控制字为90H,方式控制字寄存器的端口地址为383H。矚慫润厲钐瘗睞枥庑赖。初始化程序段如下:MOV AL, 90HMOV DX, 383HOUT DX, AL8.2 MOV DX, 383HMOV AL, 80H ;3个端口基本输出的方式控制字80HOUT DX, ALMOV AL, 0EH;PC7置“0”的置位/复位字0EHOUT DX, ALMOV AL, 9;PC4置“1”的置位/复位字09HOUT DX, AL8.3 stacksegment stack stackdw 32

2、 dup(0)stackendsdatasegmentBUFDB 0data endscodesegmentstartpro farassume ss: stack, cs: code, ds: datapush dssub ax,axpush axMOV ES,AX;ES为中断向量表的段地址 0000Hmov ax,datamov ds,axMOV DX,383H ;A端口方式1输入MOV AL,0B0HOUT DX,ALMOV AL,9 ;PC4置1,允许A端口中断OUT DX,ALMOV AX,SEG IS8255 ;填写中断向量表MOV ES:01C6H,AXMOV AX,OFFSET

3、 IS8255MOV ES:1C4H,AXMOV DX,380H;A端口的端口地址送DXIN AL,0A1H ;修改中断屏蔽字,允许IQR9中断INDAL,0FDHOUT 0A1H,ALJMP $IN AL,0A1H ;恢复中断屏蔽字,禁止IRQ9中断OR AL,02HOUT 0A1H,ALretIS8255:IN AL,DX;读键值MOV BUF,AL;存键值MOV AL,61H ;指定EOI命令OUT 0A0H,ALMOV AL,62HOUT 20H,ALPOP AX ;修改返址INC AXINC AXPUSH AXIRETstart endpcodeendsend start8.4 控制

4、程序的框图stacksegment stack stackdw 32 dup(0)stackendsdatasegmentBUFDB 00H, 10H, 10H, 10H ;SEGPT表中位移量为10H处的显示代码为全灭聞創沟燴鐺險爱氇谴净。SEGPTDB 40H, 79H, 24H, 30H, 19H, 12H, 2,78HDB 0, 18H, 8, 3, 46H, 21H, 6, 0EH, 7FHKYTBLDB 17H, 27H, 2BH,2DH, 47H, 4BH, 4DH, 87H, 8BH残骛楼諍锩瀨濟溆塹籟。DB 8DH, 8EH, 4EH, 2EH, 1EH, 1DH, 1BHd

5、ataendscodesegmentstartproc farassume ss: stack, cs: cods, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV DX, 383HMOV AL, 81H;A口基本I/O出、PCH出、PCL入MOV DX, ALMOV DI, 0 ;存键入数的指针DISUP:MOV AH, 88H ;位选值, 从PCH输出, 1位为0, 3位为1酽锕极額閉镇桧猪訣锥。MOV BX, 0DISUP1:MOV CL, BUF BX;取一个显示数XOR AL, ALMOV CH, AL;将显示数扩展

6、为16位MOV DX, 382HOUT DX, AL;关显示,七段显示器的共阴极为高电平MOV SI, OFFSET SEGPT;七段显示代码表的偏移首地址ADD SI, CX;求得显示数的显示代码的偏移地址MOV AL, SI;取显示代码MOV DX, 380H;输出显示代码到A口OUT DX, ALMOV AL, AHMOV DX, 382H;输出显示数位到C口(PCH)OUT DX, ALCALL D1MS;1ms延时CMP AH, 11H;是最低数位吗?JE DECKY;是,转键盘扫描和键译码程序INC BX;否,指向下一位数的存储地址ROR AH, 1;移到下一个数位JMP DISU

7、P1DECKY:MOV AL, 7FHMOV DX, 380HOUT DX, AL;关显示,七段显示器的七段均为低电平MOV AL, 0F0HMOV DX, 382HOUT DX, AL;输出,使所有行线为低电平IN AL, DX;读入键盘列数据AND AL, 0FH;屏蔽无用位(D7D4)CMP AL, 0FH;有键按下吗?JE DISUP;无键按下,返回显示程序CALL D20MS;有键按下延时20ms,消除键抖动MOV CX, 4;行计数器MOV AH, 10HDECKY1:MOV AL, AHOUT DX, AL;设置选择的行为低电平IN AL, DX;输入列数据AND AL, 0F0

8、H;屏蔽无用位CMP AL, 0F0H;该行有键按下吗?JNE DECKY2;有,转键译码SHL AH, 1;无,扫描下一行LOOP DECKY1 ;所有行扫描完成了?否,扫描下一行JMP DISUP;是,转显示DECKY2:OR AL, AH;行和列数值合并为键码MOV BX, 0DECKY3:CMP AL, KYTBL BX;查键码表,找到按键吗?JE DECKY4;找到按键转DECKY4INC BX;没找到JMP DECKY3;循环查找DECKY4:MOV BUF DI, BL;存按键INC DICMP DI, 4;存满4位键入数吗?JNE DECKY5;未存满,不修改指针MOV DI,

9、 0;已存4位,修改指针DECKY5:IN AL, DX;检测键释放AND AL, 0FHCMP AL, 0FHJNE DECKY5;直到键释放CALL D20MS;消去键释放时的抖动等待20msJMP DISUPretstartendpD1MSPROC;延时1ms子程序RETD1MSENDPD20MSPROC;延时20ms子程序RETD20MS ENDPcodeendsend start8.5 stacksegment stack stackdw 32 dup(0)stackendscodesegmentstartproc farassume ss: stack, cs: codspush

10、dssub ax, axpush axmov ax, datamov ds, axMOV DX, 383HMOV AL, 90H;A口方式0入,B口和C口方式0出OUT DX, ALMOV DX, 380HIN AL, DX;从A口读入原码AND AL, AL;判原码的符号JNS DN;为正去DNAND AL, 7FH;为负,取其绝对值MOV DX, 382HOUT DX, AL;绝对值从C口输出NEG AL;将负数的绝对值求补DEC DXOUT DX, AL;负数的补码从B口输出RETDN: INC DX;正数直接从B口和C口输出OUT DX, ALINC DXOUT DX, ALretst

11、art endpcodeendsend start8.6 8.7设端口地址为380H383H。data segmentIBF DB 4,0 4 DUP(0)SEGPTDB 3FH,6,5BH,4FH,66H,6DH,7DH,7,7FH,6FHdata endscodesegmentstartproc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV DX,OFFSET IBFMOV AH,10INT 21HMOV DX,383HMOV AL,80HOUT DX,ALM

12、OV SI,2 AGAIN: MOV BL,IBFSIAND BX,000FHMOV AL,SEGPTBXDEC DXOUT DX,ALINC SICMP SI,5JC AGAINretstart endpcodeendsend start8.8 设8255的端口地址为384H387H控制程序如下:SEGPTDB 3FH,6,5BH,4FH,66H,7,7FH,6FH,6FH,76HMOV DX,387HMOV AL,90HOUT DX,ALMOV BH,0MOV CL,4MOV DX,384HIN AL,DXMOV BL,ALSHR BL,CLMOV AH,ALMOV AL,SEGPTBXINC DXOUT DX,ALMOV BL,AHAND BL,0FHMOV AL,SEGPTBXINC DXOUT DX,AL8.9stacksegment stack stackdw 32 dup(0)stackendscodesegmentstartproc farassume ss: stack, cs: codspush dssub ax, axpush axmov ax, datamov ds, axMOV DX,263HMOV AL,80HOUT DX,ALMOV AL, 0FHMOV DX,261HLOP:NOT ALOUT DX, ALCALL D2S

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号