收藏 分销(赏)

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

上传人:pc****0 文档编号:9009649 上传时间:2025-03-11 格式:DOC 页数:10 大小:1.83MB 下载积分:10 金币
下载 相关 举报
微机原理与接口技术考试——编程题.doc_第1页
第1页 / 共10页
微机原理与接口技术考试——编程题.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
刘书收集整理 某应用系统以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 2000H 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 = 2000H , AL= 58 (3AH) , DS= 2000H , CX= 0 , (20106H)= 64 (40H) , (2010FH)= 03H , (20111H)= 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 QQ:353659166
展开阅读全文

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


开通VIP      成为共赢上传

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

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服