微机原理编程题集合

更新时间:2023-12-08 11:19:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微机原理编程题

1. 分支程序设计

①.编写一段程序,已知BUF1单元中有一带符号字节数据X,BUF2中有一带符号字节数据Y,根据以下函数关系编写程序求Z的值,结果存入RESULT 单元。Z=|X-Y|;

DATA SEGMENT BUF1 DB 05H BUF2 DB 02H RESULT DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BUF1 MOV BL,BUF2 SUB AL,BL JNC GREAT NEG AL

GREAT:MOV RESULT,AL EXIT: MOV AH,4CH INT 21H CODE ENDS

END START

②.编写一段程序,已知BUF单元中有一无符号字节数据X,假设为8,根据以

下函数关系编写程序求Y的值,结果存入RESULT 单元。Z=5X X<10,X-5 X>=10;

DATA SEGMENT BUF DB 8 RESULT DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BUF CMP AL,10 JAE GRE MOV BL,AL

ADD AL,AL ADD AL,AL ADD AL,BL JMP DONE GRE: SUB AL,5

DONE: MOV RESULT,AL MOV AH,4CH INT 21H

CODE ENDS

END START

③.在内存单元BUF中存放一个带符号字节数据X,假定为-2,试根据以下函数

关系编写程序求Y的值,结果存入RESULT 单元。Y=1 X>0,0 X=0,-1 X<0;

DATA SEGMENT BUF DB -2 RESULT DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV AX,DATA MOV DS,AX MOV AL,BUF CMP AL,0 JGE L1 MOV AL,-1 JMP L3 L1:JZ L2

MOV AL,1 JMP L3 L2:MOV AL,0

L3:MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS

END START

2. N个数中求最大值、最小值.假定N=10,已知原始数据存放在BUF开始的内存单元中,将结果存入MAX,MIN内存单元中。

DATA SEGMENT

BUF DB 3,5,7,8,5,3,9,7,13,1 COUNT EQU $-BUF

MAX DB ? MIN DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV AX,DATA MOV DS,AX

MOV CX,COUNT-1 MOV AL,BUF MOV MAX,AL MOV MIN,AL LEA SI,BUF AGAIN:

MOV AL,[SI+1] CMP AL,MIN JGE S1

MOV MIN,AL S1: CMP AL,MAX JLE S2

MOV MAX,AL S2: INC SI

LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS

END START

3. 编写程序求1+2+3+……+N<100时最大的N值,将N值送NUM单元中,同时将1+2+3+……+N的和送到SUM单元中。

DATA SEGMENT NUM DB ? SUM DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,0 MOV BL,0 AGAIN:INC BL ADD AL,BL

CMP AL,100 JB AGAIN SUB AL,BL DEC BL

MOV NUM,BL MOV SUM,AL MOV AH,4CH INT 21H CODE ENDS

END START

4. 统计字符,正数,负数,零的个数。

①.若自STRING单元开始存放一个字符串,以'$'结尾,试编写程序,

统计字符串的长度,并将结果存入COUNT单元。 DATA SEGMENT

STRING DB 'abcdefg$' COUNT DW ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,STRING MOV CX,0 NEXT: MOV AL,[SI] CMP AL,'$' JZ DONE INC CX INC SI JMP NEXT

DONE: MOV COUNT,CX MOV AH,4CH INT 21H CODE ENDS

END START

②.自BUF单元开始存放10个带符号字节数据,将其中的正数、负数和零选出

来,并统计其个数,分别存入PLUS、MINUS和ZERO单元中。 DATA SEGMENT

BUF DB 5,-2,0,-1,4,0,-4,8,0,-7 PLUS DB ? MINUS DB ? ZERO DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:DATA,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,10 AGAIN:MOV AL,[BX] INC BX AND AL,AL JS M1 JZ M2 INC PLUS JMP NEXT M1: INC MINUS JMP NEXT M2: INC ZERO JMP NEXT NEXT: LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS

END START 5. 求压缩BCD码的和。已知从BUF1和BUF2单元开始,存放两个各为10个字节的BCD数,求这两个数的和,并将结果存入BUF3单元中。 DATA SEGMENT

BUF1 DB 01H,01H,01H,01H,01H,01H,01H,01H,01H,01H BUF2 DB 03H,03H,03H,03H,03H,03H,03H,03H,03H,03H BUF3 DB 11 DUP(?) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV AX,DATA MOV DS,AX MOV CX,10 LEA SI,BUF1 LEA DI,BUF2 LEA BX,BUF3 AGAIN:

MOV AL,[SI] ADC AL,[DI] DAA

MOV [BX],AL

2.8259A的全嵌套方式和特殊全嵌套方式有什么差别?各自用在什么场合? 答:在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么,也会给响应从而实现一种对同级中断请求的特殊嵌套。在全嵌套方式中,只有当更高级的中断请求来到时,才会进行嵌套,当同级中断请求来到时,会响应。特殊全嵌套方式一般用在8259A级连的系统中。 3.什么叫总线?微机中的总线可分为哪几级?

答:总线(BUS)就是计算机各部件之间传送信息的公共通道。在微机中,有内部总线和外部总线两类:内部总线是指CPU内部之间的连接;外部总线是指CPU与其他部件之间的连接。日常所说的总线一般指的是外部总线,按其功能的不同,分为3种:数据总线(DB)、地址总线(AB)、控制总线(CB)。 4.简述为什么8253的方式0可作为中断的请求。

答:写入控制字后,OUT输出端变为低电平。当写入计数初值后,计数器开始减1计数。在计数过程中OUT一直保持为低电平,直到计数到0时,OUT输出变为高电平。此信号可用于向CPU发出中断请求。

5.8259A的全嵌套方式和特殊全嵌套方式有什么差别?各自用在什么场合? 答:在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么,也会给响应从而实现一种对同级中断请求的特殊嵌套。在全嵌套方式中,只有当更高级的中断请求来到时,才会进行嵌套,当同级中断请求来到时,会响应。特殊全嵌套方式一般用在8259A级连的系统中。

6.DMA控制器的基本组成包括哪些部件?各自作用如何?

答: DMA控制器在硬件结构上具有以下基本部件: 地址寄存器:其作用是接收CPU预置的存储器起始地址以及在传送过程中自动修改地址,以指出下一个要访问的存储单元。字节计数器:其作用是接收CPU预置的数据传送的总字节数以及在传送过程中控制传送过程何时结束,为此,该字节计数器应具有自动减1功能。控制寄存器:其作用是接收CPU的命令,以决定DMA传送方向,传送方式,如是输出(从内存到外设备)还是输入(从外设到内存);传送一个数据还是一批数据等。状态寄存器:用来反映DMA控制器及外设备的当前工作状态等。内部定时与控制逻辑。

7.8086系统中,当对SS和SP寄存器的值进行修改时,有什么特殊规定?这样做的原因是什么?

答: 凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。

8.动态RAM为什么要进行刷新?刷新过程和读操作比较有什么差别?

答:1.因为动态RAM是利用电容的存储作用来保存信息的,但电容由于放电或泄漏,电荷保存时间较短(约2ms),若不及时补充电荷会使存放的数据丢失,因此需定时刷新以补充所需要的电荷。

2.刷新过程是由刷新逻辑电路定时完成的,且每次对所有模块的一行同时刷新,数据不输出,数据总线处于高阻状态。读过程是随机的,每次选中一个存储单元(8位),且数据输出到数据总线上。

9.通常解决中断优先级的方法有哪几种?各有什么优缺点?

答:1.有软件查询方式、简单硬件方式——菊花链法、专用硬件方式三种。 2.软件查询方式的优点是节省硬件,缺点是中断响应时间长;简单硬件方式的优

点是中断响应时间短,硬件较简单,缺点是优先级固定,变动起来很麻烦;专用硬件方式优点是对优先级可编程修改,中断管理非常方便,缺点是硬件复杂的多,好在有专用的中断控制器。

本文来源:https://www.bwwdw.com/article/8x3t.html

Top