微机原理期中考试卷子
1.微机系统所具有的物理地址空间是由地址总线数决定的,8086系统的物理地址空间为1M字节。
2.微机系统中采用的是三总线结构分别是地址总线、数据总线和控制总线三种总线。
3.在信息编码中,十进制数适用BCD编码,英文字符采用ASCll编码。
4.系统掉电后,存储器中的内容会丢失是随机读写存储器,存储器中的内容保持不变的是只读存储器。
5.8086系统中,标号是逻辑地址名,变量是物理 地址名。
6.伪指令是在汇编过程期间由汇编程序处理的操作。
7.逻辑地址是由段地址和偏移地址两部分构成。
8.接口数据传送控制方式分为三种方式:程序传送方式、中断传送方式、直接存储器(DMA)传送方式。
9.在8086中,保存下一条指令在现行代码段中偏移量的寄存器是IP寄存器,它是一个16位的寄存器。
二、简答题。
1.简述冯诺依曼的思想。
(1)计算机应包括运算器,存储器,控制器、输入、输出设备五大基本部分。
(2)计算机内部应采用二进制来表示指令和数据,每条指令一般具有一个操作码和一个地址码,其中操作码表示运算性质,地址码指出操作数在存储器中的地址。
(3)将编好的程序送入内存储器中,然后启动计算机工作,计算机无需操作人员干预,能自动逐条取出指令和执行指令。。
2.8086分段访问内存的思想。
所谓分段,就是可以根据需要把1M字节地址空间划分成若干逻辑段,每个逻辑端满足两个条件:(1)逻辑端开始地址必须是16位数,因为段寄存器长为16位。(2)逻辑段的最大长度巍峨64K,因为指针寄存器长为16位,那么1M字节空间最多划分成64K个逻辑段,最少也要划分16个逻辑段,逻辑段与逻辑段可以项链。分段方法不仅有利于实现寻址1M字节空间,也十分有利于对1M存储空间的管理。
3.简述指令队列的作用?
暂存预取指令
4.8086有几种寻址方式?并举例说明。
//(1)立即数寻址。例:mov AL,80H
//(2)寄存器寻址方式。例:INC CX MOV AX,CX
//(3)存储器寻址:
a、直接寻址:MOV AL,[1064H]
b、寄存器间接寻址:MOV AX,[SI]
c、寄存器相对寻址:MOV AX,[BX+1064H]
d、基址变址寻址:MOV AX,[BX+SI]
e、基址变址相对寻址:MOV AH,BX][SI]
f、基址变址相对寻址:MOV AX,[BX+SI+1234H]
5.简述直接寻址、相对寻址以及间接寻址的作用。
(1)直接寻址:操作数一般在存储器数据段中,隐含段寄存器DS,直接给出数据存放的地址,存取速度快。
(2)相对寻址:操作数有效地址EA是一个基址寄存器或变址寄存器的内容和志龙中的8位或16位偏移量相加之和。有效地址的两种分别组成。
(3)间接寻址:操作数有效地址。包含基址寄存器的内容或变址寄存器的内容。一中分量,可读性高。
三、计算题。
指出下列指令中存储器作数的寻址方式并写出物理地址的表达式。
(1)MOV CX,[BL]+10 寄存器间接寻址 CX=DS*10H+BL+10
(2)MOV CL,[SI] 寄存器间接寻址 CL=DS*10H+SI
(3)MOV DL,[2400] 直接寻址 DS*10H+2400
(4)MOV AL,[BP]+5 寄存器相对寻址 AL=SS*10H+BP+5
(5)MOV AH,[BX][DI]+12基址变址相对寻址 DS*10H+BI+DI+12
四、阅读程序。
阅读下列程序,说明本程序完成的功能,注意斜体字指令的作用,并将最终结果填入HIGHEST。
1. 功能:找到GRADES中的最大值给HIGHEST
2. HIGHEST中的值是:96
DATA
GRADES DB 69,87,96,45,75
HIGHEST DB ?
CODE
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV CX,5 :给CX计数器中赋值5
MOV BX,OFFSET GRADES :将GRADES的段内偏移地址给BX
SUB AL,AL :将AL中清零
AGAIN: CMP AL,[BX] :比较AL和BX中的数
JA NEXT :AL中的值大于BX中的数,则直接到NEXT
MOV AL,[BX] :不大于,则将BX中第一个数赋给AL
NEXT: INC BX :BX指向第二个数
LOOP AGAIN :CX位0时跳出循环
MOV HIGHSET,AL :将AL中的值赋给HIGHSET
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
五、程序设计。
将十进制数组cost每个元素加上15后,存入prices数组。
DATA SEGMENT
cost DB 20H,28H,15H,26H,19H
prices DB 5 DUP(?)
temp DB 15
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:SATCK
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET cost
MOV SI,OFFSET prices
MOV CI,5
NEXT:
MOV AL,[BX]
ADD AL,temp
MOV [SI],AL
INC SI
INC BI
LOOP NEXT
MOV AH,4C
INC 21H
MAIN ENDP
CODE ENDS
END MAIN
六、更改程序。
将下列数组GRADES的寻址方式改为基址相对寻址
MODE SAMLL
.STACK 64
.DATA
CRADES DB 69,87,96,45,75
ORG 0008
HIGHSET DB ?
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV CX,5 ;set up loop counter
MOV BX,OFFSET GRADES->MOV DI,0 ;BX points to GRADE data
SUB AL,AL ;AL holds highest grades found so far
AGAIN: CMP AL,[BX]->CMP AL,GRANDES[DI] ;compare next grade to hightest
JA NEXT ;jump if AL still highest
MOV AL,[BX]->MOV AL,GRADES[DI] ;else AL holds new highest
NEXT: INC BX ;point to next grade
LOOP AGAIN ;continue search
MOV HIGHEST,AL ;store highest grade
MOV AH,4CH
INT 21H ;go back to dos
MAIN: ENDP
END MAIN
七、程序设计。
将ASCII码47和25相加,将结果转换成ASCII码后保存
解:
DATA SEGMENT
A1 DB 04H,07H,'$'
A2 DB 02H,05H,'$'
SUM DB ' ',' ','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI, A1
LEA BX, A2
LEA DI, SUM
MOV CX,2
CLC
BEGIN:
INC SI
INC BX
INC DI
LOOP BEGIN
DEC SI
DEC BX
DEC DI
MOV CX,2
CLC
NEXT:;把两个数相加存入SUM中
MOV AL,[BX]
ADC AL,[SI]
AAA
MOV [DI],AL
DEC BX
DEC SI
DEC DI
LOOP NEXT
;;;;;;;;;;;;;;;;;;;;以下可注释;;;;;;;;;;;;;;;;;;;;;;;;;;;
;把SUM中的数字转换成ASCLL码
LEA DI,SUM
MOV CX,2
DEALRESULT:
ADD BYTE PTR [DI],30H
INC DI
LOOP DEALRESULT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LEA DX,SUM
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START