微机原理期末试题卷答案文档格式.docx
《微机原理期末试题卷答案文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理期末试题卷答案文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
ANDAL,0ACH
NOTAL
上述程序段运行后,AL=73H
在空白处添上适当的指令,使下面的程序段能实现既定功能:
1、把DA1数据区的非压缩BCD码依次转换为对应的ASCII码,存放在ASC开始的数据区
DA1DB03H,01H,09H,08H,04H,07H,06H,02H,00H,09H
CNTEQUASC-DA1
ASCDB10DUP(?
)
LEADI,ASC
MOVCX,CNT
L1:
MOVAL,[SI];
实现转换
ADDAL,30H
MOV[DI],AL
INCSI
INCDI
LOOPL1
2、以BUF为首址的字节单元中,存放了COUN个无符号数,下面程序段是找出其中最大数并送入MA)单元中。
DATASEGMENT
BUFDB5,6,7,58H,13H……
COUNTEQU$-BUF
MAXDB?
DATAENDS
I
MOVBX,OFFSETBUF;
初始化
MOVCX,OUNT-1
MOVAL,[BX]
LOP1:
INCBX;
完成最大数查找
CMPAL,[BX]
JAENEXT
NEXT:
DECCX
JNZLOP1
MOVMAX,AL
四、根据下面的数据段定义,填写数据区的存储分配图
给出各变量对应的偏移地址与初始值:
(8分)
6题的不做3、4、5题,反之亦然)
五、论述与问答题:
(共20分,第1、2题为必做题,其余为选做题,选做第
1、画出冯•诺依曼结构图;
给出计算机结构的三大要点;
简述其基本工作原理:
(5分)
1、计算机由运算器、控制器、存储器、输入设备和输出设备五部分组成;
2、程序和数据以二进制形式不加区分地依次存放在存储器中,存放位置由地址确定;
3、控制器根据存放在存储器中的指令序列
(即程序)工作,并由一个程序计数器(PC)控制指令的执行。
控制器主要由指令计数器PC、指令译码器、PAL等组成;
通过pc控制,自动、周而复始地完成取指、译码、执行的周期过程,从而实现对存放在存储器中的指令代码V的
顺序自动执行控制。
2、比照高级语言编程来讨论汇编语言编程,总结归纳出两者之间三个以上的不同点或共同点
(要是独立点,有对照,描述清楚)。
(3分)
答题要点:
1、完成一个具体功能模块的算法,两者是相同的。
2、通过定义数据区,分配存储地址来定义变量,存储地址的符号名就是高级语言中的变量。
3、寄存器可以作为临时变量使用,用完后又可以重新定义,这样可以不占用内存地址,而且执行速度快,这是高级语言不具备的。
4、汇编语言程序需要对寄存器进行分配使用,而且有一些特定用法,如乘除法的默认寄存器,循环计数器CX等。
寄存器一次定义使用未结束前不能再做另外用途,否则需要用堆栈保护。
而高级语言编程不需要。
5、汇编语言可以直接控制和检测计算机的硬件电路,最大限度的发挥硬件的功能,而且速度快、效率高,常用于硬件底层驱动程序和实时控制,这是高级语言无法做到的。
6、汇编语言可以最大限度的发挥编程的灵活性,编制出效率最高、速度最快的程序,所以常用于硬件底层驱动程序和系统核心程序,这是高级语言难于做到的。
7、……
3、(选做6题的同学不做此题)运算器在进行有符号数运算时,判断是否发生了算术溢出,一般采用哪三种方法判别?
在进行无符号数运算时,则使用什么标志判别无符号数运算是否溢出?
(4分)
1、采用双符号法,双符号位不一致时,发生算术溢出
2、次高位向最高位的进位与最高位向前进位不一致时,发生算术溢出
3、同号数运算前符号与结果符号不一致时,发生算术溢出
在进行无符号数运算时,使用进位标志进行判别,CY=1表示有溢出,CY=0表示没有有溢出。
4、(选做6题的同学不做此题)通过简述CPU控制执行一条指令的过程及步骤,诠释程序存储原理。
(4分)
答题要点:
机器语言、指令指针、指令地址、地址总线、存储器、数据总线、操作码、操作数、取指、译码、控制信号序列、时序、执行、结果处理、下一操作、完成启动下一指令周期
控制器主要由指令计数器PC、指令译码器、PAL等组成;
通过pc控制,自动、周而复始地完成取指、译码、执行的周期过程,从而实现对存放在存储器中的指令代码的顺序自动执行控制。
5、(选做6题的同学不做此题)总线的功能和作用是什么?
它的工作原则是什么?
(4分)
总线是一组同类信号传送的公共数据通道,通常是同类信号并行同时传送,它按分时共用原则为多种设备
分别服务
6、(选做本题的同学不做3、4、5题)编写一段程序,从键盘读入一个十六进制数(使用1号DOS功能调用,在AL中返回键盘按键的ASCII码),判断其合法性(0-9,A-F,不考虑a-f),不合法重读,合法将其转换成对应的二进制数,存放在AL中(0-F)。
参考程序:
INHEXPROC
MOVAH,01H
INT21H
SUBAL,30H
JBL1
CMPAL,9
JBEDONE
SUBAL,7H
CMPAL,0FH
JMPL1
DONE:
RET
INHEXENDP
DA1SEGMENT
TXTBDB“ThisaStoryabout……”;
一篇英语文章
NUMDW$-TXTB;
文章字节数
CHADB'
#'
;
查找字符
CHBDB‘$'
替换字符
COUNDW?
DA1ENDS
编写一段程序,将这篇英语文章中的‘#'
号用‘$'
号进行替换,并统计替换个数,存入COUN
中(能编成一个通用子程序更好)
LEABX,TXTB
MOVCX,NUM
MOVDX,0
MOVAL,'
MOVAH'
$'
AGAIN:
JNZNEXT
MOV[BX],AH
INCDX
INCBX
LOOPAGAIN
MOV[COUN],DX
《微机原理》期末考试(闭卷)B卷参考答案
满分100分考试时间120分钟任课教师:
陈永康、杨先楚
——二
得分四、计算并填写结果:
1、8086CPU从功能上可分为_EU/执行单元部件_和_BIU/总线接口部件_两个独立的功能部件。
2、8086CPU采用引脚复用技术,即_地址线和数据—线是复用的。
3、每一条指令代码一般都由操作码和操作数来构成。
4、指令MOVAL6[BX][SI]的源操作数的寻址方式是基址变址相对寻址,目的操作数寻址方式为寄存器
寻址。
_
5、循环指令LOOPZ终止循环的条件是CX=0或者ZF=0。
6、数制转换(小数部分保留位数:
二进制8位,16、7进制3位):
[135.489]10=[10000111.01111101]2=[_87.7DI16=[_252.326]7
=[—000100110101.010010001001—]bcd
7、八位二进制代码转换:
[-126]10=[_1111111—]原=[_10000001_|反=[_10000010」补
设(SS)=4000H,(DS)=3E00H,(BP)=0800H,(SP)=0110H,(AX)=7A34H,(BX)=2912H,(DI)=0003H,BUF=0111H,(4090EH)=0FH,(4090FH)=57H,(40910H)=93H,(40911H)=20H,
下列8-10题3条指令都在此环境下执行,下列各小题的空格中填入执行结果:
8、SUB
AH,[BP+BUF]
;
(AH)=
5A
H
9、SHR
BYTEPTR[BX-DI],
1:
CF=
1
?
(4090FH)
=2B
10、POP
AX
(SP)=
0112
设开始时(AL)=34H,填写
11-12题的程序段执行结果:
11、XOR
AL,28H
12、
AL,34H
AND
AL,0ACH
NOT
AL
上述程序段运行后,AL=F3
LIN3:
LIN2.
13、模拟运算器,用一字节补码加法实现十进制数-78-53=?
的计算。
(6分)
其二进制补码加法算式为
[-78]补=110110010
+[-53]补=111001011
101111101
CF=1,SF=0
ZF=_0,OF=1
PF=1,AF=0
程序阅读与分析。
(每小题3分,共18分)
1、MOVCX5MOVAX40H
NEXTSUBAX,CX
LOOPNEXT
上述程序段运行后,(AX)=31H/49
2、MOVAX,0
DECAX
ADDAX,7FFFH
ADCAX,1
上述程序段运行后,(AX)
8000
LOOP
RET
3、
MOV
SI,2040H
DI,2060H
CX,0AH
AL,[SI]
XCHG
AL,[DI]
[SI],AL
INC
SI
DI
AGAIN
这段程序实现的功能是:
将数据区中偏移
地址为2040H开始的10个字节数据与偏移地址为2060H开始的10个字节数据对调交换
5、设寄存器
AL,BL,CL中内容均
为68H,
XOR
AL,0FH
BL,0FH
OR
CL,0FH
执行上述指令序列后,
AL=_67_H,BL=_08—H,CL=一6F_H。
4、MOV
BL,03H
AL,07H
MUL
BL;
AX=_0015_H
AAM
AH=_
02H,AL=01H
6、SUB1PROCNEAR
MOVBX,AXMOVCX,16
L8:
SHLBX,1
JCL9
MOVDL,'
0'
JMPL10
L9:
MOVDL,'
1'
L10:
MOVAH,02H
LOOPL8
B'
MOVAH,02H
SUB1ENDP
若(AX)=56E3H,调用子程序后的执
行结果将BX中的内容按二讲制的形式
显示出来/0101011011100011B.
使下面的程序段能实现既定功能:
(每空2
000E
000D
000C
000B
00H
000A
0009
‘?
'
0008
0007
‘$'
0006
0005
Q
0004
‘N'
0003
FFH
0002
12H
0001
35H
DATA1:
0000
‘F'
分,共12分)1、下面子程序实现:
将AL中的一位16进制数(0〜F)转换为相应的ASCII码并在屏幕上显示该字符。
HECAPROCFAR
CMPAL,10
JCKK
ADDAL,7
KKADDAL,30H
MOVDL,AI
MOVAH,2
INT21H;
功能调用显示字符
HECAENDP
2、从D1开始的N个单元中存放着N个整数,统计出这些数中正数的个数并存入RS中
D1DB-1,-3,7,9,0AH,
NEQU$-D1
RSDW?
CODESEGMENT
—LEABX,D1;
MOVCX,N
MOVAL,[BX]
CMPAL,0
JSPP/JLPP
PP:
LOOPNEXT;
循环
MOVRS,DX
四、根据下面的数据段定义,填写数据区的存储分配图给出各变量对应的偏移地址与初始值:
VAR1
DB
F'
035H
VAR2
DW
0FF12H
MISS
NO:
$'
COUN
EQU
$-MISS
SUM
?
CC
2DUP(0)
VAR1的偏移地址=_0000H,初始值=F'
VAR2的偏移地址=_0002H,初始值=0FF12H_
SUM的偏移地址=_0008H_,CC的偏移地址=_OOOAH_
MISS的偏移地址=_0004H_,COUN=0004H
(共20分,第1、2小题为必做题,其余为选做题,选做
第6题的不做3、4、5题,反之亦然)
1、通过简述CPU控制执行一条指令的过程及步骤,诠释程序存储原理。
(4分)
机器语言、指令指针、指令地址、地址总线、存储器、数据总线、操作码、操作数、取指、译码、控制信号序列、时序、执行、结果处理、下一操作、完成启动下一指令周期
2、画微型计算机结构图;
简述主要部件功能。
(6分)
答案要点:
中央处理单元CPU(ControlProcessingUnit)是微型计算机的核心部件,包含有运算器、
控制器、寄存器组的一块大规模集成电路芯片;
主存储器是微型计算机中存储程序、原始数据、中间结果和最终结果等各种信息的部件;
系统总线是CPU与其他部件之间传送数据、地址和控制信息的公共通道;
输入输出接口电路是微型计算机外部设备交换信息的桥梁。
3、(选做6题的同学不做此题)归纳总结汇编语言编程的特点,指出它与高级语言编程的不同点,给出汇编语言编程中AX,BX,CX,DX,SI,DI,BP的通常用途。
1、特点与不同点:
变量定义、数据区、伪指令、寄存器分配与使用、面对硬件、灵活性等
AX:
累加器,功能强,常用作最重要的用途
BX:
常用作基址指针
CX:
常用作循环控制变量
DX:
乘法运算时存乘积的高位,I/O指令中作外设端口地址寄存器
SI,DI:
变址寻址时作地址指针用
BP:
堆栈寻址时作基址指针用
4、(选做6题的同学不做此题)运算器在进行有符号数运算时,要知道是否发生了算术溢出,可采用哪三
种方法判别?
(共3分)
双符号位法;
同号数相加减,结果不同号,溢出;
数位向符号位的进位与符号位向前进位不同,即Cn不等于Cn-1,溢出。
5、(选做6题的同学不做此题)请归纳总结汇编语言编程的特点,以及它与高级语言编程的不同点?
(3分)
不同点与特点:
需要对变量定义、设计数据区、分配使用寄存器、直接面对硬件,功能低级但编程灵活,
程序短小,快捷等等
6、(选做3、4、5题的同学不做此题)内存中有一个100字节的数组,dal为开始地址。
编一段程序统计
其中大于2FH小于7DH的元素个数,用寄存器DL统计这些字符的个数。
(10分)参考程序:
Stringdb‘‘
Sbulprocnear
Movbx,offsetda1
Mov
dl,0
al,[bx]
Cmp
al,2fh
Again:
Movcx,100
JInext
Cmpal,7dh
Jgnext
六、将一个字符串中的所有大写字母改为小写字母
字符串以0结尾。
(12分)
Incdl
next:
Incbx
Loopagain
Done:
ret
Sub1endp
Datasegment
Stringdb‘xxxxxxxxxxxxxxxxxx'
0
Dataends
codesegment
assumecs:
code,da:
datamovbx,offsetstringagain:
moval,[bx]
oral,al
jzdone
cmpal,'
A'
jbnext
Z'
janext
oral,20h
mov[bx],al
incbx
jmpagain
done:
movah,4chint21hend
云南大学2008至2009学年上学期物理学院物理系各专业2006级A
一、计算并填写结果:
(除标明分数的题外,每空
1、8086CPU从功能上可分为EU/执行单元部件
2、每一条指令一般都由操作码和
3、数制转换(小数部分保留位数:
二进制8位,
[146.417]10=[10010010.01101010
=[
4、
5、
6、
7、
设
16、
]2=[092.6AC
000101000110.010000010111]BCD八位二进制代码转换:
[-124]10=[11111100]指令MOVAL,6[BX][SI]的源操作数的寻址方式是使用DOS功能调用时,子程序的编号应放在循环指令LOOPN终止循环的条件是CX=0
SS)=4000H,(DS)=3E00H,(ES)=3800H,
1.2分,共30分)和BIU/总线接口部件操作数来构成。
7进制3位):
]16=[266.263]7
两个独立的功能部件。
原=[10000011]
基址变址相对寻址
寄存器中。
ZF=0。
BP)=0800H,(SP)=010EH,(AX)=7A34H,
AH
或者
反=[10000100]补
(DI)=0003H,BUF=0111H,(4090EH)=0FH,(4090FH)=57H,(40910H)=93H,(40911H)=20H,题各条指令都在此环境下执行,在下列各小题的空格中填入执行结果:
8、SUBAH,[BP+BUF];
9、SHRBYTEPTR[BX-DI],1;
CF=1
10、POPAX;
(SP)=13、模拟运算器,用一字节补码加法实现十进制数其二进制补码加法算式为:
ZF=0,OF=1
PF=1,AF=0
二、程序阅读与分析。
(每小题3分,共18分)
三、在空白处添上适当的指令,使下面的程序段能实现既定功能:
(每空2分,共12分)
1、把DA1数据区的非压缩BCD码依次转换为对应的ASCII码,存放在ASC开始的数据区。
DA1DB03H,01H,09H,08H,04H,07H,06H,02H,00H,09H
5AH
,(4090FH)=2BH0110H
-71-59=?
(6分)CF=1
,SF=
LEASI,DA1
_MOVCX,CNT
MOVAL,[SI]
_LOOPL1
2、从D1开始的N个单元中存放着N个整数,统计出这些数中负数的个数并存入RS中。
D1DB-1,-3,7,9,0AH,