A 卷 1
《微机原理及应用》课程期中测试试卷答案
注意:1、本试卷共 4 页; 2、考试时间120分钟
一、填空题 (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 。设主存中的部分存储单元的物理地址及存储数据如下表所示,则前述指令执行后的8、 8086/8088CPU 共有 20 根地址线,I/O 端口最大允许数是 65536 个。 9、8086/8088的_____
/MX MN 引脚接 高 电平时,处于最小工作模式。 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:A DD 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分)
答案一:
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中。(只需要写出核心代码,推荐不使用串操作指令)
答:
A卷 2