微机原理期中试题答案

  • 格式:doc
  • 大小:71.00 KB
  • 文档页数:2

A卷
1
2007— 2008 学年第 一 学期
《微机原理及应用》课程期中测试试卷答案
注意:1、本试卷共 4 页; 2、考试时间120分钟
3、姓名、学号必须写在指定地方 阅卷负责人签名:
题 号 一 二 三 四 五 六 七 八 总 分
得 分

一、填空题 (30×1=30分)
1、调用程序、子程序传送参数的方法通常有寄存器、内存和堆栈三种方法。
2、下述机器数形式可表示的数值范围是(请用十进制形式写出):单字节无符号整数0~255;单字节有
符号整数-128~+127。
3、乘法指令MUL的指令格式只有一个源操作数,若源操作数的类型属性为字节,则乘积在AX中,
若源操作数的类型属性为字,则乘积的高16位在 DX 中,低16位在 AX 中。
4、请给出标志寄存器中标志位OF、IF、SF、ZF、PF、CF的说明: OF 溢出、IF 中断、SF 符号、
ZF 零、PF 奇偶、CF 进位。
5、寄存器间接相对寻址的有效地址是寄存器的内容与相对地址位移量代数和。
6、指令XLAT通常用于查表操作,在使用该指令前,应把表首的偏移首地址送入BX,待转换的
代码在表中的序号送AL。
7、对于指令 MOV AX,[BX]执行前(DS)=1000H,(BX)=11H,则源操作操作数的物理地址为
10011H 。设主存中的部分存储单元的物理地址及存储数据如下表所示,则前述指令执行后的
AX中数据为 0A7F 。
1000F 10010 10011 10012 10013
3AH 45H 7FH 0AH FCH
8、 8086/8088CPU共有 20 根地址线,I/O端口最大允许数是 65536 个。

9、8086/8088的_____/MXMN引脚接 高 电平时,处于最小工作模式。
10、为下述情况各举一例。
⑴寄存器与存储单元内容相加送寄存器 ADD AL, [BX] 。
⑵寄存器互送 MOV AX, BX 。
⑶将标志寄存器进栈 PUSHF 。
⑷立即数与寄存器内容相加送寄存器 ADD AX, 1234H 。
⑸用伪指令将48H、5AH存入字节数据区ARRAYB
ARRAYB DB 48H , 5AH 。

二、简答题(10+5+15=30分)
1.指出下列指令所用到的寻址方式(10分)
指令 目的操作数寻址方式 源操作数寻址方式
MOV AX,1000H 寄存器寻址 立即寻址
MOV AX,DS:[1000H] 寄存器寻址 直接寻址
MOV AX,DX 寄存器寻址 寄存器寻址
MOV [BX],AL 寄存器间接寻址 寄存器寻址
MOV [BX+SI+5],AX 基址变址相对寻址 寄存器寻址
MOV [BP],BX 寄存器间接寻址 寄存器寻址
MOV AX, [DI+10] 寄存器寻址 寄存器间接相对寻址
MOV AX,[SI] 寄存器寻址 寄存器间接寻址
MOV AX,[BX+BP] 寄存器寻址 基址变址寻址
LODSB 隐含寻址 隐含寻址

2、阅读如下程序段,回答提出的问题。(5分)
MOV AX,3456
XCHG AX,BX
MOV AX,3456
SUB AX,BX
JE DONE
KK: ADD AX,BX
...
DONE:
设“KK”标号所在指令在内存中物理地址为51010H;“DONE”标号所在指令在内存中的
物理地址为512A0H,且(CS)=5000H,则
该程序执行完 “JE DONE” 指令后,AX=( 0000H ), ZF=( 1 ), IP=( 12A0H )

3、按要求编写程序段(只需要写出核心语句)
1)写出两条使AL中内容为0的指令 (2分)
MOV AL,00H
XOR AL,AL

2)使BL寄存器中高、低四位互换 (3分)
MOV CL,4
ROL BL,CL 或 ROR BL,CL

3)统计AX中“1”的个数,结果放在BL中(用移位指令实现)。(5分)

阅卷人 得分
阅卷人 得分































.




.










线


.












A卷
2

答案一: MOV BL ,00H LOOP1: SHL AX,1 JNC NEXT ;最高位不是1 INC BL ;BL的数据加1 NEXT: JZ DONE; ;AX中数据为0,则结束 JNZ LOOP1 DONE: HLT 答案二: MOV BL ,00H MOV CX,16;循环16次 LOOP1: SHL AX,1 JNC NEXT ;最高位不是1 INC BL ;BL的数据加1 NEXT: LOOP LOOP1 4)两个16位带符号数分别存放于X1和X2变量中,求X1/X2,商和余数分别放在Y1和Y2中;如果除数为0,则商和余数都置为0。(5分) 答: MOV AX, X1 CWD ;位扩展 MOV BX,X2 IDIV BX MOV Y1,AX MOV Y2,DX 三、程序设计题 (15×2=30分) 1.编写汇编程序完成以下功能:DEST和SOURCE是数据段中定义的长度为100个字节的两个变量。找出第一个不相同的字节,找到后(假设一定能找到),则将SOURCE中的这个数送AL中,并将这个数相对于SOURCE数据区第一个元素的位置记录在BL中。(只需要写出核心代码,推荐不使用串操作指令) 答: MOV BL,00H LEA SI,SOURCE ;源数据区首地址送SI LEA DI,DEST ;目的数据区首地址送DI MOV CX,100 NEXT: MOV AL,[SI] ;取第一个数据于BL中 CMP AL,[DI] ;比较两个数据
JNZ DONE;
INC SI
INC DI
INC BL
LOOP NEXT

DONE:HLT
2. 试编制一程序,找出数据区DA中带符号数的最大数,并将结果保存于MAX变量中。
要求写出所有代码,包括伪指令部分。(假定DA区数据为字节,且一共有500个数据)
答:
DATA1 SEGMENT
MAX DB ?
DA DB -1,2,3,100,99,…
DATA1 ENDS

STACK1 SEGMENT STACK
DB 100 DUP(?)
STACK1 ENDS

CODE1 SEGMENT
ASSUME CS:CODE1,DS:DATA1,SS:STACK1
START: MOV AX,DATA1
MOV DS,AX
MOV AL,-255 ;AL中放置最小的整数
LEA BX, DA ;设置初始地址指针
MOV CX,500 ;循环次数
LOOP1: CMP AL,[BX] ;比较两数大小
JGE NEXT
MOV AL,[BX] ;将大数放于AL中
NEXT: INC BX ;地址指向下一个数
LOOP LOOP1 ;循环
MOV AL,Y ;保存结果
CODE1 ENDS
END START

阅卷人 得分