收藏 分销(赏)

微机原理与接口技术考试——编程题样本.doc

上传人:天**** 文档编号:9900671 上传时间:2025-04-12 格式:DOC 页数:14 大小:1.83MB
下载 相关 举报
微机原理与接口技术考试——编程题样本.doc_第1页
第1页 / 共14页
微机原理与接口技术考试——编程题样本.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 某应用系统以8255A作为接口, 采集一组开关S7~S0 的状态, 然后经过一组发光二极管LED7~LED0显示开关状态,(Si闭合, 则对应LEDi亮, Si断开, 则对应的LEDi灭) 电路连接如下图3所示, 1).写出8255四个端口的地址。 2).写出8255工作方式控制字。 3).写出实现给定功能的汇编语言程序。 1) A口、 B口、 C口和控制口的地址分别是 330H、 331H、 332H和333H。 2) A口工作在方式0输入, B口工作在方式0输出, C口空闲, 因此其控制字是10010000b=90H 3) 程序如下: MOV AL, 90H ;置方式字 MOV DX, 333H ;置控制端口地址 OUT DX, AL L1: MOV DX, 331H ;置B口地址 IN AL, DX ;读开关状态( 1断, 0通) NOT AL ;状态取反 MOV DX, 330H ;置A口地址 OUT DX, AL ;输出( 1亮, 0灭) JMP L1 四、 以下为8088系统中以8255A 为输入设备和输出设备的查询方式接口电路的部分硬件图。( 18分) 1、 试述8088CPU和输入设备进行数据传送的工作过程。( 6分) 输入设备要将数据传送给CPU时, 先将数据输出给8255A的PA0-PA7, 然后经过ACK端输出脉冲信号将数据锁存于锁存器, 同时将触发器置1。 而CPU要不断查询设备的状态, 执行读8255A C口操作, 判断从C口读入数据的D1位是1还是0, 若为0表示设备未准备好, 则等待后再查询; 若为1表示设备已将数据送出, CPU 从 8255A的 A口读入数据, 然后经过PC 6输出负脉冲将状态触发器清0。之后重复以上的操作, 周而复始。 2、 以下是8088CPU将存于以BLOCK为首址的内存单元区域中100个数据依次传送给输出设备的程序段, 请在划线处填入内容。 BLOCK DB a1,a2,……a100 COUNT EQU $-BLOCK START: LEA SI, BLOCK ; 置数据单元首址指针 MOV CX , COUNT MOV DX, 383H ; 8255A初始化设置 MOV AL, 91H OUT DX, AL MOV DX, 383H ; 置PC7为低电平 MOV AL, 0EH OUT DX, AL AGAIN: MOV DX, 382H ; 查询输出设备状态 IN AL, DX TEST AL, 04H JNZ AGAIN MOV AL, [SI] ; 取数据传送给输出设备 INC SI MOV DX, 381H OUT DX, AL MOV DX, 383H ; 置PC7产生高电平 MOV AL, 0FH OUT DX, AL NOP NOP MOV AL, 0EH ; 置PC7为低电平 OUT DX, AL LOOP AGAIN RET 8255A方式控制字 8255A C口复位/置位控制字 1 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 D3 D2 D1 D0 A口方式 00 方式0 A口 C口下半口 01 方式1 0 输出 0 输出 000 PC0 0复位 1× 方式2 1 输入 1 输入 001 PC1 1 置位 B口 010 PC2 C口上半口 B口方式 0 输出 ∶ ∶ 0 输出 0 方式0 1 输入 111 PC7 1 输入 1 方式1 五、 分析以下汇编语言源程序, 根据要求在划线处填上适当内容: DATA SEGMENT AT H ORG 0100H TABLE DB 66, 76, 87, 89, 96, 79, 64, 62, 57, 49, 85, 75, 60, 77, 58 COUNT EQU $-TABLE  NUM1 DB 0 NUM2 DB 0 NUM3 DB 0 DATA ENDS STACK SEGMENT PARA STACK 'STACK' TOP DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK MAIN : MOV AX, DATA MOV DS, AX MOV SI, OFFSET TABLE MOV CX, COUNT LOP1: MOV AL, [SI] CMP AL, 85 JA HIGH CMP AL, 70 JBE LOW INC NUM2 JMP NEXT HIGH: INC NUM1 JMP NEXT LOW: INC NUM3 NEXT: INC SI LOOP LOP1 MOV AH, 4CH INT 21H CODE ENDS END MAIN (1) 画出数据段中数据定义语句实现的内存分配图。 (2) 执行程序后, 结果为: OFFSET TABLE = 0100H , SEGMENT NUM2 = H , AL= 58 (3AH) , DS= H , CX= 0 , ( 6H)= 64 (40H) , ( FH)= 03H , ( 1H)= 07H , 在以BLOCK为首址的内存区域中, 存放着一组无符号的字节数据, 数据个数存于COUNT单元中, 试编制程序段从中找出最大数和最小数, 并分别存放于MAX和MIN单元中。 程序段为: BLOCK DB a1,a2, ┉ an COUNT DB N MAX DB 0 MIN DB FFH LEA SI, BLOCK MOV CX, COUNT AGAIN: MOV AL, [SI] CMP AL, MAX JBE NEXT1 MOV MAX, AL NEXT1: CMP AL, MIN JAE NEXT2 MOV MIN, AL NEXT2: INC SI LOOP AGAIN HLT 在数据段中从0500H单元开始存放着100个带符号数(16位), 要求把其中的正数传送至1000H开始的存储区; 负数传送至1100H开始的存储区, 且分别统计正数和负数的个数, 并将正数和负数的个数分别存入1200H和1201H单元中。(要求: 写出完整程序并画出流程图) DATA SEGMENT ORG 0500H N0 DW X1, X2, …, X100 ; 自定义100个带符号数 COUNT EQU $-BUFFER/2 N1 DW 1000H ; 保存正数 N2 DW 1100H ; 保存负数 N3 EQU 1200H ; 保存个数 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA MAIN PROC START: MOV AX, DATA MOV DS, AX MOV CX, COUNT XOR DX,DX LEA SI,N0 ; 首地址→SI LEA BX,N1 LEA DI,N2 AGAIN: MOV AX, [SI] AND AX,AX JS NEXT1 ; 负转 MOV [BX],AX INC DH INC BX INC BX JMP NEXT2 NEXT1: MOV [DI],AX INC DI INC DI INC DL NEXT2: LOOP AGAIN ; 循环 MOV N3, DX ; N3←存正、 负数个数 MOV AH, 4CH INT 21H ; 返回DOS MAIN ENDP CODE ENDS END START 六. 接口题: 某8255的A口、 B口连接八个LED显示器(如图所示, 共阴极), 请设计一程序, 使这八个LED显示器DG0~DG7分别循环显示0~7, 每个LED每次只显示一秒钟(有1秒钟延时子程序”D1STIME”可调用)。(15分) 8255A工作方式控制字如下∶ D7 D6 D5 D4 D3 D2 D1 D0   特征位   A组方式   A口   C4~7   B组方式   B口   C0~3 LED数码管段码表( 共阴)   p g f e d c b a TAB 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 2 0 1 0 1 1 1 0 1 3 0 1 0 0 1 1 1 1 4 0 1 1 0 0 1 1 0 5 0 1 1 0 1 1 0 1 6 0 1 1 1 1 1 0 1 7 0 0 0 0 0 1 1 1 8 0 1 1 1 1 1 1 1 9 0 1 1 0 0 1 1 1 …… MOV DX,30FH MOV AL,80H OUT DX,AL L1: MOV CX,8 LEA SI,TAB MOV BL,0FEH L2: MOV AL,[SI] MOV DX,30CH OUT DX,AL MOV AL,BL MOV DX,30DH OUT DX,AL CALL D1STIME INC SI ROL BL LOOP L2 JMP L1 HLT 五、 ( 15分) 已知某8255A在系统中占用88~8BH号端口地址, 现欲安排其PA, PB, PC口全部为输出, PA, PB口均工作于方式0模式, 并将PC6置位, 使PC3复位, 试编写出相应的初始化程序。  五、 MOV  AL, 80H        OUT  8BH, AL            MOV  AL, ODH        OUT  8BH, AL      MOV  AL, 06H OUT  8BH, AL 四、 ( 15分) 用其它指令完成和下列指令一样的功能: (1) REP MOVSB (2) REP LODSB (3) REP STOSB (4) REP SCASB  (1) LOOP1: MOV AL,BYTE PTR [SI]  MOV ES:BYTE PTR [DI], AL  INC  SI  或: DEC SI  INC  DI  或: DEC DI  LOOP LOOP1 (2) LOOP1:  MOV AL, BYTE PTR [SI]  INC  SI  或: DEC SI  LOOP LOOP1 (3) LOOP1:  MOV ES:BYTE PTR [DI], AL  INC  DI  或: DEC DI LOOP LOOP1 (4) LOOP1:  CMP AL,ES:BYTE PTR [DI]  JE  EXIT  INC  DI  或: DEC DI LOOP LOOP1 EXIT:    五、 ( 15分) 根据下列要求编写一个汇编语言程序:: 代码段的段名为COD_SG 数据段的段名为DAT_SG 堆栈段的段名为STK_SG 变量HIGH_DAT所包含的数据为95 将变量HIGH_DAT装入寄存器AH, BH和DL 程序运行的入口地址为START DAT_SG  SEGEMNT   HIGH_DAT DB  95 DAT_SG  ENDS; STK_SG  SEGMENT   DW 64 DUP(?) STK_SG  ENDS; COD_SG  SEGMENT MAIN  PROC FAR ASSUME CS: COD_SG, DS: DAT_SG, SS: STK_SG START: MOV AX, DAT-SG   MOV DS, AX   MOV AH, HIGH_DAT   MOV BH, AH MOV DL, AH MOV AH, 4CH INT  21H MAIN  ENDP COD_SG ENDS   END  START  在1000H和1064H单元开始, 放有各为100字节的组合后的BCD数( 地址最低处放的是最低位字节) , 求它们的和, 且把和放在1100H开始的单元中。(要求写出完整程序) DATA SEGMENT ORG 1000H STRING1 DB nn, nn, … STRING2 DB nn, nn, … COUNT EQU $-STRI NG2 RESUT DB 101 DUP ( ) DATA ENDS STACK SEGMENT STACK DB 100 DUP(? ) STACK ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK BEGIN: MOV AX, DATA MOV DS, AX MOV CX, COUNT ; (100) LEA SI, STRING1 ; (1000H) XOR AX, AX AGAIN: MOV AL, [SI] ADC AL, [SI+64H] DAA MOV [SI+100H], AL INC SI LOOP AGAIN JNC END1 MOV [SI+100H], 1 END1: MOV AH, 4CH INT 21H CODE ENDS END BEGIN
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服