当前位置:首页 >> 理学 >>

《微机原理及应用》期末自测题 答案版


《微机原理及应用》期末自测题
一、基本概念与术语
1、8086 是( 16 )位计算机。8086 地址线有( 20 )条,可直接寻址的空间最大为 ( 1M ) 。 2、总线周期是指( 进行一次总线操作的时间 ) 。基本总线周期有( 4 )T 状态。 Tw 状态是指( 等待周期 ) 。 3、 8086CPU 允许的 I/O 地址线最多可达 ( 16 ) 条, 最大寻址 I/O 空间为 ( 64K ) 。 4、8086CPU 由( 总线接口部件 BIU,执行部件 EU )两部分组成,其功能为( 总 线接口部件 BIU,负责控制存储器与 I/O 端口的信息读写,包括指令获取与排队、操作数存 取等。执行部件 EU 负责从指令队列中取出指令,完成指令译码与指令的执行行。 ) 。其中 8086CPU 中标志寄存器的作用是( 记录指令运行的状态标志和控制标志 ) ,指 令队列的作用是( 完成指令的获取和排队 ) ,20 位地址加法器的作用是( 将执行单元提 供的 16 位非重定位地址重定位为 20 位的存储器物理地址, 用于存储器接口访问总线上实际 的物理存储器 ) 。代码段物理地址由 CPU 的( CS,IP )两个寄存器确定。堆栈段物理 地址由 CPU 的( SS,SP )两个寄存器确定。 5、8086 中断源有( 系统外部中断,内部中断两 )个。8086 中断服务程序入口地址 由( 中断向量表 )组成。中断类型号为 20H,其中断向量为( 80H ) 。 6、I/O 指令 IN/OUT,传送数据的寄存器为( AL,AX ) ,间接寻址时使用寄存器 ( DX ) ,其中 IN AL,DX 的含义是( 将 DX 中的数据写入到 AL 中 ) 。OUT 60H,AL 的含义是( 将 AL 读出到地址为 60H 的端口中 ) 。 7、一片 8259A 可以管理( 8 )级中断;3 片 8259A 可以管理( 16 )级中断。 8、硬件中断是(外部引发,随机的,执行总线周期,中断类型码由中断控制器提供) , 软件中断是(内部引发,确定的,不执行总线周期,中断类型确定 )软件中断优先级与硬 件中断优先级相比, ( 软件中断 )的级别高。 9、在中断服务程序结束前,为正确返回,必须设置一条指令( IRET ) 。在子程序 调用结束前,为正确返回,必须设置一条指令( RET ) 。 10、若中断控制器 8259 的中断请求寄存器 IRR 状态为 10100000B,说明( IR5,IR7 引脚上有中断请求 ) 。ISR 状态为 10100000B 说明( 出现了中断嵌套 ) 。 11、可编程定时器 8253 的地址有( 16 )个。共有( 3 )独立定时通道。工作 方式有( 6 )个。 12、并行接口 8255 有( 4 )个数据端口,有( 3 )种工作方式。 13、假设 8253 的端口地址为 40H~43H,那么控制端口地址为( 43H ),通道 0、1、 2 的端口地址为( 40H,41H,42H ) 。 14、假设 8255 的端口地址为 330H~333H,那么控制端口地址为( 333H ) ,端口 A、 B、C 的地址为( 330H,331H,332H ) 15、定时器 8253 的门控信号 GATE 作用是( 门控输入端,用于外部控制计数器 的启动或停止计数的操作 ) ,CLK 端的作用是( 计数器的时钟脉冲输入端,用于 输入定时脉冲或计数脉冲信号 ) ,OUT 端作用是( 定时器的输出端 ) 。 16、初始化定时器 8253 需要先写( 控制字 ) ,后写( 定时初值 ) 。 17、伪指令的作用是( 指出汇编程序应如何对源程序进行汇编,如何定义变量,分 配存储单元,以及指示程序的开始和结束 ) , ( 不 )产生机器代码。

二、简单应用与简答题
1、简述微型计算机的组成。 微型计算机是由微处理器、存储器、输入/输出接口电路和系统总线构成的裸机系统。 2、总线分为哪几种类型?微型计算机采用总线结构有什么优点? 分为地址总线,数据总线与控制总线三类,又称三总线。 微型计算机的三总线结构是一个独特的结构。采用总线结构,系统中各功能部件之间的 相互关系,变成了各功能部件面向总线的单一关系。一个部件只要符合总线标准,就可以连 接到采用这种总线标准的系统中,使系统功能得到扩展。 3、8086 CPU 在内部结构上由哪几部分组成?其功能是什么? 8086 的内部结构分成两部分。总线接口部件 BIU,负责控制存储器与 I/O 端口的信息 读写,包括指令获取与排队、操作数存取等。执行部件 EU 负责从指令队列中取出指令,完 成指令译码与指令的执行行。 4、8086 的总线接口部件由那几部分组成? 其功能是什么? 8086 的总线接口部件主要由下面几部分组成:4 个段寄存器 CS/DS/ES/SS,用于保存各 段地址; 一个 16 位的指令指针寄存器 IP,用于保存当前指令的偏移地址; 一个 20 位地 址加法器,用于形成 20 位物理地址;指令流字节队列,用于保存指令;存储器接口,用于内 总线与外总线的连接。 5、8086 的执行单元(部件)由那几部分组成?有什么功能? 8086 的执行单元部件主要由下面几部分组成:控制器、算数逻辑单元、标志寄存器、 通用寄存器组。 (1)控制器,从指令流顺序取指令、进行指令译码,完成指令的执行等。 (2)算数逻辑单元 ALU,根据控制器完成 8/16 位二进制算数与逻辑运算。 (3)标志寄存器,使用 9 位,标志分两类。其中状态标志 6 位,存放算数逻辑单元 ALU 运算结果特征;控制标志 3 位,控制 8086 的 3 种特定操作。 (4)通用寄存器组,用于暂存数据或指针的寄存器阵列。 6、简述 8086CPU 的流水线思想,与传统计算机有何不同。 在 8086CPU 中,指令的提取与执行分别由总线接口部件 BIU 与执行部件 EU 完成, 两个 单元重叠并行工作,这种机制称为流水线,这种工作方式有力的提高了 CPU 的工作效率。传 统的计算机一般按照取指令、指令译码与执行指令的串行步骤工作。 7、8086 和 8088 是怎样解决地址线和数据线的复用问题的? ALE 信号何时处于有效电平? 8086/8088 采用时间分隔技术与地址锁存技术,通过地址锁存允许信号 ALE 锁存 CPU 送出的地址,有效解决地址线和数据线的复用问题。 ALE 在 T1 状态有效,将 CPU 送出的 20 位地址锁存。 8、计算机对 I/O 端口编址时通常采用哪两种方法?在 8086/8088 系统中,用哪种方法对 I/O 端口进行编址? 对端口编址的两种方法。计算机对内存和 I/O 端口统一编址;计算机对内存和 I/O 端口

分别进行编址。 在 8086/8088 系统中用计算机对内存和 I/O 端口独立编址。 9、一般的 IO 接口电路安排有哪三类寄存器?它们各自的作用是什么? (1)安排数据寄存器、状态寄存器、控制寄存器。 (2)数据寄存器:存放 CPU 与外设之间传送的数据信息。 状态寄存器 : 存放当前外设所 处的工作状态。控制寄存器: 存放 CPU 通过接口向外设传送控制信息。 10 简述 CPU 与外设进行数据交换的几种常用方式与特点。 CPU 与外设之间的数据传输有以下三种方式:程序方式、中断方式、DMA 方式。 (1)程序方式又分为无条件传送方式和条件传送方式两种方式,接口简单。无条件传送方 式用于简单外设,如 LED 显示器。条件传送方式用于外设较少、需要联络信号的情形。 (2)中断传送方式需要专门的中断控制电路。CPU 利用率高,速度快,用于外设较多的实 时系统。 (3)DMA 方式需要专用硬件电路。外设直接和存储器进行数据传送,效率高,适合大量、 快速数据传送,例如硬盘读写等。 11、简述条件传送方式的工作过程,主要适用的场合。 条件传送数据有三个环节: (1)CPU 从接口中读取状态字。 (2)CPU 检测状态字的对 应位是否满足“就绪”条件,如不满足,则回到前一步读取状态字。 (3)如状态字表明外设 已处于就绪状态,则传送数据。 主要用于需要联络信号(如选通信号)的外设较少的系统。 12、8086 CPU 响应中断的条件?8086 CPU 响应中断后自动完成的任务是什么? (1)有中断源发出的中断请求信号,并保存在中断请求触发器中,直至 CPU 响应此中 断请求之后才清除。 (2)开放总中断。 (3)在现行指令结束后响应中断。 关中断,断点保护,形成中断入口地址。即获得中断服务程序的入口地址,从而进入中 断服务程序。 13、软件中断有哪些特点?硬件中断有那些特点? 软件中断是由 CPU 内部事件引起的中断,是确定的 ;与硬件无关,不执行中断响应周 期;除单步中断外,软件中断(内部中断)不可屏蔽;优先级高于硬件中断(外部中断) 。 硬件中断由外部事件引起,是随机的,需要执行总线周期,中断类型码由中断控制器提供 。 14、 什么是中断向量?它放在哪里?对应于类型号 1CH 的中断向量在哪里?如 1CH 中断程 序从 5110H :2030H 开始,则中断向量应怎样存放? 中断向量是中断处理子程序的入口地址,它放在中断向量表中。 由 1ch*4=70H 知中断向量存放在 0000:0070 处。 由于中断处理入口地址为 5110H:2030H,所以 2030H 应放在 0070H,0071H 两个存储 单元,5110H 应放在 0072H、0073H 这 2 个单元。 15、简述定时器/计数器芯片 8253 的主要功能。说明 OUT、CLOCK 与 GATE 信号的作用。 (1)具有 3 个独立的 16 位定时/计时器,采用二进制计数时最大计数范围为 0~65535, 采用 BCD 码计数时, 最大计数值为 0~9999 (2) 每个定时/计数器都有自己的时钟输入 CLK,

定时的输出 OUT 和门控信号 GATE(3)每个定时/计数器均可以按二进制或 BCD 码计数, 计数频率可达 2MHz(4)每个定时/计数器都有 6 种工作方式,通过编程设置,计数器可做 计数用,也可做定时用(5)所有输入和输出电平都与 TTL 兼容 OUT 是计数器的输出端,用于计数信号输出,CLOCK 是计数器的时钟脉冲输入端,用 于输入定时脉冲或计数脉冲信号,GATE 是门控输入端,用于外部控制计数器的启动或停止 计数的操作 16、 8253 内部有几个独立通道?8253 有几种工作方式?初始化 8253 的步骤是什么?若 8253 端口地址为 200H-203H,对应的端口是哪个? 8253 内部有 3 个独立通道, 8253 有,6 种工作方式, 初始化 8253 的步骤是: 选择计数器, 确定计数器数据的读写格式,确定计数器的工作方式,确定计数器计数的数制,写入计数初 值, 若 8253 端口地址为 200H-203H, 计数器 0,1,2 和控制字寄存器端口的地址分别为 200H, 201H,202H 和 203H 17、并行接口 8255 有几个数据端口?若端口地址为 300H-303H,对应的端口是哪个?怎样 初始化 8255? 并行接口 8255 有 4 个数据端口,若端口地址为 300H-303H,对应的端口是,:端口 A、 B、C 和控制端口的地址分别为 300H,301H,302H 和 303H

18、假设 8255A 的端口 A 工作于方式 0,外设需要提供两个联络信号,一个为输出选通, 一个为外设就绪信号输入,试选择端口并说明理由。 若 8255A 的端口 A 工作于方式 0 输出,外设需要提供两个联络信号,把端口 C 的高 4 位某位,例如 PC7 规定为输出口,用来输出选通信号;而把端口 C 的低 4 位规定为输入口, 例如用 PC0 用来读入外设的状态。就是这样,利用端口 C 来配合端口 A 和端口 B 的输入/ 输出操作。 19、中断控制器 8259 的主要功能?简述 8259 的工作过程。 中断控制器 8259 具有 8 级优先权管理,可用 9 片扩展为 64 级中断系统, 接受中断请求, 提供中断类型号,具有屏蔽与开放中断的功能,可编程选择不同工作方式 8259 的工作过程: (1). 有请求输入时,将 IRR 相应位置位; (2). 经 IMR 屏蔽电路处理后(IRR 与 IMR 相与) ,送 PR; (3). PR 检测出最高的中断请求位,并经嵌套处理考虑是否发送 INT; (4). 若可发 INT 信号,则控制逻辑将 INT 信号送给 CPU 的 INTR 引脚 (6). 若 CPU 处在开中断,则在当前指令完成后,发两个 INTA 信号; (7). 8259A 接到第一个 INTA 信号后,使 ISR 位置位,IRR 相应位复位; (8). CPU 启动另一个响应周期,输出第二个 INTA 脉冲,8259A (9). 向数据总线送出中断类型码;同时,CPU 取出此向量乘以 4, (10). 得到中断服务程序的入口地址; (11). 中断响应周期完成,CPU 执行中断服务程序,8259A 工作 (12).在自动结束 AEOI 或普通结束 EOI 模式下,使 ISR 清 0。

三、编程应用题
1、编程计算( (X+Y)*10)+Z)/X,X、Y、Z 都是 16 位无符号数,结果存在 RESULT 开始的

单元。 DATA SEGMENT RESULT DW 2 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;初始化 MOV BX,0 MOV AX,X ADD AX,Y JNC S0 MOV BX,1 S0: MOV DX,0 MOV CX,10 MUL CX ADD DX,BX ADD AX,Z ADC DX,0 MOV BX,X DIV BX LEA SI,RESULT MOV [SI],AX ADD SI,2 MOV [SI],DX MOV AH,4CH INT 21H CODE ENDS END START 2、将 BUF1 开始的 100 字节传送到 BUF2 开始的单元,然后从中检索字符“#” ,并将此单 元换成空格字符。 DATA SEGMENT BUF2 DB 100 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;初始化 MOV ES,AX LEA SI,BUF1 LEA DI,BUF2 MOV CX,100 CLD

REP MOVSB MOV CX,100 LEA BUF2 S: MOV AL,’#’ COM AL,[DI] JNZ COUN MOV AL,’ ’ MOV [DI],AL COUN: INC DI LOOP S MOV AH,4CH INT 21H CODE ENDS END START 3、编写一段程序,比较两个 5 字节的字符串 OLDS 和 NEWS,若相同,在 RESULT 置 0, 否则置 0FFH。 DATA SEGMENT OLDS DB 1,2,3,4,5 NEWS DB 1,2,3,4,'A' N = $-NEWS RESULT DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;初始化 MOV SI,OFFSET OLDS MOV DI,OFFSET NEWS MOV CX,N DON: MOV AL, [SI] CMP AL, [DI] JNZ NOEQU ;串不相等转 INC SI INC DI LOOP DON MOV AL,0 JMP OUTPUT NOEQU: MOV AL,0FFH OUTPUT: MOV RESULT,AL STOP: JMP STOP ;程序陷阱 CODE ENDS END START

4、累加数组中的元素,将和存于 SUM 开始单元,数据段定义如下 DATA SEGMENT ARRAY DW 10,10,12,4,5,6,7,8,9,10 COUNT DW ($-ARRAY)/2 SUM DW ?,? DATA ENDS ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,COUNT MOV BX,2 MUL BX MOV CX,AX MOV AX,0 LEA SI,ARRAY S: ADD AX,[SI] ADD SI,2 LOOP S LEA SI,SUM MOV [SI],AX MOV AH,4CH INT 21H CODE ENDS END START 5、编写程序完成求 1+2+3+??N 的累加和,直到累加和超过 1000 为止。统计被累加的 自然数的个数送 CN 单元,累加和送 SUM。 DATA SEGMENT CN DW ? SUM DW ? DATA ENDS ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,0 MOV AX,0 MOV BX,1 S: ADD AX,BX INC CX CMP AX,1000 JA OK INC BX JMP S OK: LEA SI,SUM

CODE

MOV [SI],AX LEA DI,CN MOV [DI],CX MOV AH,4CH INT 21H ENDS END START

6、从给定串中寻找最大值,并放到 MAX 单元,元素放在 BUFFER 开始的字节单元中。 DATA SEGMENT BUFFER DB 10,32,56,11,90,56,89,21 N EQU $-BUFFER MAX DB ? DATA ENDS ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,N-1 LEA SI,BUFFER S: MOV AL,[SI] CMP AL,[SI+1] JNA S1 XCHG [SI+1],AL XCHG [SI],AL S1: INC SI LOOP S MOV AL,[SI] LEA SI,MAX MOV SI,AL MOV AH,4CH INT 21H CODE ENDS END START 7、把 BUF 表中的字节元素按值的大小升序排列。数据段定义如下: BUF DB 10,32,56,11,90,56,89,21 N = $-BUF

DATA

SEGMENT BUF DB 10,32,56,11,90,56,89,21 N EQU $-BUF DATA ENDS ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX MOV DX,N-1 S1: MOV BL,0 MOV CXDX LEA SI,BUF S2: MOV AL,[SI] CMP AL,[SI+1] JNA NO XCHG [SI+1],AL XCHG [SI],AL MOV BL,0FFH NO: INC SI LOOP S2 DEC DX CMP DX,0 JNE S1 MOV AH,4CH INT 21H CODE ENDS END START 8、类型号为 20H 的中断服务程序入口符号地址为 INT-5,试写出中断向量的装入程序片断。 CLI PUSH DS PUSH AX XOR AX,AX MOV DS,AX MOV AX,OFFSET INT-5 MOV WORD PTR [080H],AX MOV AX,SEG INT-5 MOV WORD PTR [082H],AX POP AX POP DS STI 9、设一个 8253 的计数器 0 产生周期为 20ms 的定时信号,计数器 1 产生周期为 100ms 的定 时信号。设外部时钟频率为 f=2MHZ,端口地址为 330H~333H。试对它进行初始化编程。 MOV AL,00110100B MOV DX, 333H OUT DX,AL MOV AX,40000 MOV DX, 330H OUT DX,AL

MOV OUT MOV MOV OUT MOV MOV OUT MOV OUT

AL,AH DX,AL AL,01110100B DX, 333H DX,AL AX,5 DX, 331H DX,AL AL,AH DX,AL

10、已知某 8253 占用 I/O 空间地址为 40H~43H,设定时器 0、定时器 1 工作于方式 3,外 部提供一个时钟,频率 f=2MHZ。要求定时器 1 连续产生 5ms 的定时信号,定时器 0 连续产 生 5 秒的定时信号。 MOV AL,00110110B OUT 43H,AL MOV AX,1000 OUT 40H,AL MOV AL,AH OUT 40H,AL MOV OUT MOV OUT MOV OUT AL,01110110B 43H,AL AX,5000 41HAL AL,AH 41H,AL

11、用 8255A 控制三个发光二极管依秩序循环显示。假设开关闭合时,点亮发光二极管, 开关断开时息灭二极管。 (1)画出原理图,并说明工作原理; (2)选择 8255 工作方式; (3) 编写 8255 初始化程序与控制程序。 见课本 P226 12、8255 连接一组开关与一组 LED 显示器,如图所示。开关状态用 LED 显示,若闭合, 则点亮。8255 端口地址为 310H~313H。 (1)选择 8255 工作方式;编写 8255 初始化程序与 控制程序。 见课本 P233

四、常用指令与读程序

1、8086 CPU 执行如下指令后的结果,以及标志 CF、ZF 的值。 MOV AL, 80H SUB AL, 10H ;(AL)=70H ADD AL, 89H ;(AL)=F9H,CF=0,ZF=0 2、CPU 执行如下指令后的结果。 MOV AX,1234H MOV BX,5678H PUSH AX POP CX AX=1234H, BX=5678H, CX=1234H 写出执行下列指令结果. MOV AX, TABLE MOV BX, OFFSET TABLE MOV CX, N MOV DX, LENGTH ZER AX=0 BX=1000H CX=8 DX=24 3、单独执行下列指令的结果 MOV AL,10110101B AL=10110101B AND AL,00011111B AL=00010101B OR AL,11000000B AL=11010101B XOR AL,00001111B AL=11011010B 4、单独执行下列指令的结果 假设(AL)=10101111B,CF=0,CL=4,写出分别执行下列指令后的结果以及标志位 CF、 ZF 的值。 SHL AL,CL AL=11110000B CF=0 ZF=0 SHR AL,CL AL=00001010B CF=1 ZF=0 ROL AL,CL AL=11111010B CF=0 ZF=0 6、读程序,写出结果。 MOV AL,5BH TEST AL,80H JZ LP MOV BL,1 JMP STOP LP: MOV BL,0 HLT 执行上述程序段后 AL=5BH BL=0

五、程序设计与完善
1、读程序,写出结果。 DATA SEGMENT ;数据段定义 BUF DB 8,2,3,4 ;定义一段字节存储空间,内容为 8,2,3,4 COUNT EQU $-BUF ;计算 BUF 的字节长度 DATA ENDS ;数据段定义

CODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;程序执行起始点 MOV DS,AX ;将数据段地址寄存器指向用户数据段 LEA SI,BUF ;BUF 偏移地址指向 SI MOV CX,COUNT ;设定循环次数 CALL ADDONE ;填空,调用子程序 ADDONE HLT ADDONE PROC NEAR ;子程序代码段定义 ADD BYTE PTR[SI],1 ;SI 中数据加 1,送回 SI INC SI ;SI 地址加 1 LOOP DON ;循环判断 RET ;返回主程序 ADDONE ENDP ;子程序代码段定义 CODE ENDS ;代码段定义 END START ;程序结束 (1)执行上述程序段后 BUF 存储区的内容为: 9,3,4,5 (2)给程序加上完整段定义。 (3)给程序加上注释,说该程序功能。 程序功能是将 BUF 中数据分别加 1,结果送回原存储空间



2、读程序并完善。 DATA SEGMENT ;数据段定义 AR1 DB 1,2,3,4,5,7 ;定义一段字节存储空间,内容为 1,2,3,4,5,7 N = $-AR1 ;计算 AR1 的字节长度 AR2 DB N DUP(0) ;定义 N 字节存储空间,内容为 0,0,0,0,0,0 DATA ENDS ;数据段定义 CODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;程序执行起始点 MOV DS,AX ;将数据段地址寄存器指向用户数据段 MOV CX,N ;设定循环次数 MOV SI,offset AR1 ;取 AR1 偏移地址送 SI 寄存器 MOV DI,offset AR2 ;取 AR2 偏移地址送 DI 寄存器 again: MOV AL,[SI] ;将 SI 中数据送入 AL MOV [DI],AL ;AL 内容送数据到 DI 所指单元 INC DI ;DI 所指地址加 1 INC SI ;SI 所指地址加 1 LOOP again ;循环 again MOV AH, 4CH ;返回 DOS INT 21H CODE ENDS ;代码段定义 END START ;程序结束

1)程序执行前,AR2 单元内容为:0,0,0,0,0,0 2)程序执行后,AR2 单元内容为: 1,2,3,4,5,7 3)给程序加上注释,说明程序功能; 将 AR1 内存单元中数据复制到偏移地址 AR2 中 4)给程序加上完整段定义。 3、 下面是程序主要片段: DATA SEGMENT ;数据段定义 BUF DB 0, 1,2,3 ;定义一段字节存储空间,内容为 0,1,2,3 COUNT = $- BUF ;计算 BUF 的字节长度 ASCII DB 0, 0,0,0 ;定义一段字节存储空间,内容为,0,0,0,0 DATA ENDS ;数据段定义 CODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;程序执行起始点 MOV DS,AX ;将数据段地址寄存器指向用户数据段 LEA SI, BUF ;BUF 偏移地址指向 SI LEA DI, ASCII ;ASCII 偏移地址指向 DI MOV CX, COUNT ;设定循环次数 DON: MOV AL,[SI] ;SI 地址内数据送入 AL ADD AL, 30H ;AL 中数据加 30H,转换为该数据的 ASCII 码 MOV [DI], AL ;AL 中数据送入 DI 所指地址中 INC SI ;SI 所指地址加 1 INC DI ;DI 所指地址加 1 LOOP DON ;循环 DON MOV AH, 4CH ;返回 DOS INT 21H CODE ENDS ;代码段定义 END START ;程序结束 (1)根据需要加上完整数据段段定义、代码段定义、程序结束等; (2)写出每行代码的注释,说明程序实现的功能。 程序的功能是将 BUF 存储空间数据装换为 ASCII 码存入 ASCII 所指偏移地址 完善程序,说明程序功能(15 分) 下面是程序主要片段: DATA SEGMENT ;数据段定义 BUF DW 1234H, 5678H ;定义一段字存储空间, 内容为 1234H, 5678H MAX DW ? ;定义一个字存储空间 DATA ENDS ;数据段定义 CODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;程序执行起始点

MOV DS,AX ;将数据段地址寄存器指向用户数据段 MOV SI, OFFSET BUF ;BUF 偏移地址指向 SI MOV AX,[SI] ;SI 所指地址数据送入 AX MOV BX, [SI+2] ;SI+2 所指地址数据送入 BX CALL SUBRUT ;调用子程序 SUBRUT JMP LP1 :转移到 LP1 SUBRUT PROC NEAR ;子程序代码段定义 CMP AX, BX ;比较 AX 与 BX 内数据大小 JA LP1 ;AX 中数据大于 BX 中数据转移到 LP1 XCHG AX,BX ;否则,交换 AX 与 BX 中数据 RET ;返回主程序 SUBRUT ENDP ;子程序代码段定义 LP1: MOV MAX, AX ;将 AX 中数据送入 MAX 所指偏移地址 MOV AH, 4CH ;返回 DOS INT 21H CODE ENDS ;代码段定义 END START ;程序结束 (1)根据需要加上完整数据段段定义、代码段定义、程序结束,初始化数据段等; (2)写出每行代码的注释,说明程序实现的功能。 程序功能是比较 BUF 中两数据大小,将大数送入 MAX 所指内存单元

3、(习题 5.7, 教材 P145) 现有一输入设备,其数据端口的地址为 FFE0H,并于端口 FFE2H 提供状态,当其 D0 位为 1 时表明输入数据备好。采用查询方式进行数据传送的程序段,要求从该设备读取 100 个字节并输入到从 2000H 开始的内存中。按要求完善程序,写出完整段定义。 ;--------------------补充数据段定义-------------------;数据段段开始 ORG 2000H ; 定位到 2000H 单元 BUF 120 DUP(0) ; 定义输入缓存区 ;数据段段结束 ;--------------------补充代码段定义----------

START: MOV SI,offset BUF ;初始化数据区地址 MOV CX,100 ;---------------查询时输入----------------LL: MOV DX,0FFE2H ;状态口地址送 DX IN AX,DX ;读状态到 AL TEST AL,01H ;测试外设状态是否满足就绪?

JZ LL MOV DX,0FFE0H IN AX,DX CALL delay MOV [SI],AX INC SI LOOP LL MOV AH,4CH INT 21H DELAY PROC …… RET DELAY ENDP CODE ENDS END START

;不满足,继续读状态 ;就绪,准备输入数据 ;从输入端口读取数据 ;延时 ;存数据 ;准备接受下一个数据 ;数据没有输入完,继续

;程序略

;代码段定义结束


相关文章:
《微机原理及应用》考研复习题(四)参考答案
《微机原理及应用》考研复习题(四)参考答案 微机原理及应用》考研复习题(一、单项选择题(每小题 1 分,共 20 分) 单项选择题( 1.D 2. B 3. C 4.C 5...
《微机原理及应用》教材课后习题及答案
《微机原理及应用》教材课后习题及答案 - 《微机原理及应用》习题答案 第一章 ?1.11 请完成下列数制转换: (1) 将 174.66D 转换为对应的二进制和十六进制形式...
《微机原理及应用》考研复习题(五)参考答案.
《微机原理及应用》考研复习题(五)参考答案. - 《微机原理及应用》考研复习题(五)参考答案 一、填空题(共 26 分,每空 1 分) 1.答:217Q,8F 2.答:x ...
《微机原理及应用》习题答案
《微机原理及应用》习题答案 - 《微机原理及应用》习题答案 教材:《80X86/Pentium 微型计算机原理及应用》答案 第一章 1-3 (1) 01101110 (2) 10001101 1...
《微机原理及其应用》考试试题及答案
《微机原理及其应用》考试试题及答案 - 南京航空航天大学共 8+2 页第1页 一、选择题(20’) 1. 80X86 微处理器 Pentium III 属于__A__。 A...
电子98《微机原理及其应用》期末试卷B1
电子98《微机原理及其应用》期末试卷B1 - 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号 码填在题目后的括号内,每小题 1 分,共...
微机原理及应用试题库(附答案)
微机原理及应用试题库(附答案) - 《微机原理及应用》 试题库 1. 8086 和 8088 的引脚信号中, A.CLK B.INTR B C. MAIN A/B: A 时,VB≈VDD。 D...
电子科技大学17年6月考试《微机原理及应用》期末大...
电子科技大学17年6月考试《微机原理及应用》期末大作业参考答案 - 17 年 6 月考试《微机原理及应用》期末大作业 试卷总分:100 得分:100 一、 单选题 (共 50...
微机原理及应用期末试卷大全(有答案)
微机原理及应用期末试卷大全(有答案) - 武汉大学微机原理与接口技术考试试卷 一、填空题(每空 1 分,共 20 分) 1. 完成下列程序段,从 240H 端口读取数据,...
电科17年6月考试《微机原理及应用》期末大作业满分...
电科17年6月考试《微机原理及应用》期末大作业满分答案 - 17 年 6 月考试《微机原理及应用》期末大作业 试卷总分:100 得分:100 一、 单选题 (共 50 道试题...
更多相关标签: