资源描述
装 订 线
专业班级: 姓 名: 学 号:
密 封 线
重 庆 科 技 学 院
200 /200 学年第 学期考试试卷
课程名称: 微机原理及应用 课程代码:
教学班级: 抽(命)题人:
本卷为 卷,共 21 页,考试方式: 闭卷 ,考试时间: 120 分钟
题 号
一
二
三
四
五
六
七
八
九
十
总 分
抽查
核人
得 分
阅卷人
一.程序分析题 (共39题,195分)
1.1 [库中题号:050039] 5分
分析对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?为什么?
DTSEG SEGMENT
ORG 10H
DATA1 DB 72H
DB 04H
DTSEG ENDS
DTSEG SEGMENT
ORG 10H
DATA1 DW 7204H
DTSEG ENDS
第 21 页
1.2 [库中题号:050038] 5分
指出下列指令的错误:
(1) MOV AX,[BX][BP] (2) MOV [BX],ES:AX (3) MOV BYTE PTR[BX],1000
1.3 [库中题号:050037] 5分
指出下列指令的错误:
(1) MOV AX,OFFSET [SI] (2) MOV CS,AX (3) MOV DS,BP
1.4 [库中题号:050036] 5分
执行完下列程序后,回答指定的问题。
MOV AX,0
MOV BX,2
MOV CX,50
LP:ADD AX,BX
ADD BX,2
LOOP LP
问:(1) 该程序的功能是 。
(2) 程序执行完成后,(AX)= 。
1.5 [库中题号:050035] 5分
分析汇编语言源程序应该由哪些逻辑段组成?各段的作用是什么?语句标号和变量应具备哪3种属性?
1.6 [库中题号:050034] 5分
下面是将内存一字节数据高4位和低4位互换并放回原位置的程序,找出错误并改正。
DATA SEGMENT
DD1 DB 23H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,OFFSET DD1
MOV AL,[SI]
MOV CL,4
RCR AL,CL
MOV [SI],AL
MOV AH,4CH
INT 21H
CODE END
END START
1.7 [库中题号:050033] 5分
写出将首地址为BLOCK的字数组的第6个字送到CX寄存器的指令序列,要求分别使用以下几种寻址方式:
(1) 以BX的寄存器间接寻址
(2) 以BX的寄存器相对寻址
(3) 以BX、SI的基址变址寻址
1.8 [库中题号:050032] 5分
根据以下要求写出相应的汇编语言指令。
(1) 把BX和DX寄存器的内容相加,结果存入DX寄存器中;
(2) 用BX和SI的基址变址寻址方式,把存储器中的一个字节与AL内容相加,并保存在AL寄存器中;
(3) 用寄存器BX和位移量21B5H的变址寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器单元中;
(4) 用位移量2158H的直接寻址方式把存储器中的一个字与数3160H相加,并把结果送回该存储器中;
(5) 把数25H与(AL)相加,结果送回寄存器AL中。
1.9 [库中题号:050031] 5分
写出能够完成下列操作的8086CPU指令。
(1) 把4629H传送给AX寄存器;
(2) 从AX寄存器中减去3218H;
(3) 把BUF的偏移地址送入BX中。
1.10 [库中题号:050030] 5分
设VAR1、VAR2为字变量,LAB为标号,分析下列指令的错误之处并加以改正。
(1) ADD VAR1,VAR2 (2) MOV AL,VAR2
(3) SUB AL,VAR1 (4) JMP LAB[SI]
(5) JNZ VAR1 (6) JMP NEAR LAB
1.11 [库中题号:050029] 5分
分析下列指令的正误,对于错误的指令要说明原因并加以改正。
(1) MOV BYTE PTR[BX],1000 (2) MOV BX,OFFSET MAYDAT[SI]
(3) MOV CS,AX (4) MOV DS,BP
1.12 [库中题号:050028] 5分
分析下列指令的正误,对于错误的指令要说明原因并加以改正。
(1) MOV AH,BX (2) MOV [BX],[SI]
(3) MOV AX,[SI][DI] (4) MOV MYDAT[BX][SI],ES:AX
1.13 [库中题号:050027] 5分
给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。
(1) MOV AX,[BX] (2) MOV AX,1100H[BX] (3) MOV AX,[BX][SI]
1.14 [库中题号:050026] 5分
给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。
(1) MOV AX,1200H (2) MOV AX,BX (3) MOV AX,[1200H]
1.15 [库中题号:050025] 5分
设(DS)=2000H,(ES)=2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?
(1) MOV AX,[BX+10] (2) MOV AX,VAL[BX] (3) MOV AX,[BX][SI] (4) MOV AX,VAL[BX][SI]
1.16 [库中题号:050024] 5分
设(DS)=2000H,(ES)=2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?
(1) MOV AX,[BX] (2) MOV AX,ES:[BX] (3) MOV AX,[BP] (4) MOV AX,[SI]
1.17 [库中题号:050023] 5分
设(DS)=2000H,(ES)=2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?
(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H] (4) MOV AX,VAL
1.18 [库中题号:050022] 5分
请写出下列指令单独执行后,有关寄存器及存储单元的内容。
假设指令执行前(DS)=(ES)=3000H, (AX)=2000H, (BX)=1200H, (SI)=2,
(31200H)=2400H, (31202H)=90F7H。
(1)ADD ES:[BX],900H
(2)SUB [BX+SI],AX
1.19 [库中题号:050021] 5分
已知DS=091DH,SS=1E4AH,AX=1234H,BX=0024H,CX=5678H,BP=0024H,SI=0012H,DI=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。在以上条件下,分别写出下列指令或指令段执行后的结果?
MOV CL,[BX+20H][SI];
MOV [BP][DI],CX;
LEA BX,[BX+20H][SI]
MOV AX,[BX+2];
1.20 [库中题号:050020] 5分
数据段定义如下:
DATA SEGMENT AT 2000H
ORG 30H
VAR1 DW 10 DUP(?)
VAR2 DB 10
DATA ENDS
分析下列指令执行后寄存器的结果:
MOV AX,SEG VAR1 ;AX=( )
MOV BX,OFFSET VAR1 ;BX=( )
MOV CX,OFFSET VAR2 ;CX=( )
MOV DX, VAR2 ;DX=( )
1.21 [库中题号:050019] 5分
已知DS=091DH,SS=1E4AH,AX=1234H,BX=0024H,CX=5678H,BP=0024H,SI=0012H,DI=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。在以上条件下,分别写出下列指令或指令段执行后的结果?
(1) LDS SI,[BX][DI]
MOV [SI],BX
(2) XCHG CX,[BX+32]
XCHG [BX+20H][SI],AX
1.22 [库中题号:050018] 5分
设8253三个计数器的端口地址为201H、202H、203H,控制寄存器端口地址200H。试编写程序片段,读出计数器2的内容,并把读出的数据装入寄存器AX。
1.23 [库中题号:050017] 5分
给定(SP)=0100,(SS)=0300,(FLAGS)=0240,存储单元的内容为(00020)=0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT 8,试问执行INT 8指令后,SP,SS,IP,FLAGS的内容是什么?栈顶的三个字是什么?
1.24 [库中题号:050016] 5分
写出分配给下列中断类型号在中断向量表中的物理地址。
(1) INT 12H (2) INT 8
1.25 [库中题号:050015] 5分
分析下列程序的功能,写出堆栈最满时各单元的地址及内容。
SSEG
SEGMENT
‘STACK’ AT 1000H
; 堆栈的段地址为1000H
DW
128 DUP(?)
TOS
LABEL WORD
SSEG
ENDS
DSEG
SEGMENT
DW 32 DUP(?)
DSEG
ENDS
CSEG
SEGMENT
MAIN
PROC
FAR
ASSUME CS:CSEG, DS:DSEG,SS:SSEG
START:
MOV
AX,SSEG
MOV
SS,AX
MOV
AX,DSEG
MOV
DS,AX
MOV
AX,4321H
CALL
HTOA
RETN:
MOV
AH,4CH
INT
21H
MAIN
ENDP
HTOA
PROC
NEAR
CMP
AX,15
JLE
B1
PUSH
AX
PUSH
BP
MOV
BP,SP
MOV
BX,[BP+2]
AND
BX,0FH
MOV
[BP+2],BX
POP
BP
MOV
CL,4
SHR
AX,CL
CALL
HTOA
B1:
POP
AX
B2:
ADD
AL,30H
JL
PRT
ADD
AL,07
PRT:
MOV
DL,AL
MOV
AH,2
INT
21H
RET
HTOA
ENDP
CSEG
ENDS
END
START
1.26 [库中题号:050014] 5分
假设(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 请写出下列各条指令单独执行完后, 有关寄存器及存储单元的内容, 若影响条件码请给出条件码SF、ZF、OF、CF的值。
(1) REP STOSB (2) JMP WORD PYR[BX]
(3) XCHG AX,ES:[BX+SI]
1.27 [库中题号:050013] 5分
假设(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 请写出下列各条指令单独执行完后, 有关寄存器及存储单元的内容, 若影响条件码请给出条件码SF、ZF、OF、CF的值。
(1) DIV BH (2) SAR AX,CL (3) XOR AX,0FFE7H
1.28 [库中题号:050012] 5分
假设(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 请写出下列各条指令单独执行完后, 有关寄存器及存储单元的内容, 若影响条件码请给出条件码SF、ZF、OF、CF的值。
(1) SBB AX,BX (2) CMP AX,WORD PTR[SI+0FA0H]
(3) MUL BYTE PTR[BX] (4) AAM
1.29 [库中题号:050011] 5分
假如在程序的括号中分别填入指令:
(1) LOOP L20 (2) LOOPNE L20 (3) LOOPE L20
试说明在三种情况下, 当程序执行完后, AX、BX、CX、DX四个寄存器的内容分别是什么?
TITLE EXLOOP.COM
CODESG SEGMENT
ASSUME CS:CODESG, DS:CODESG. SS:CODESG
ORG 100H
BEGIN: MOV AX,01
MOV BX,02
MOV DX,03
MOV CX,04
L20: INC AX
ADD BX,AX
SHR DX,1
( )
RET
CODESG ENDS
END BEGIN
1.30 [库中题号:050010] 5分
假定AX和BX中的内容为带符号数, CX和DX中的内容为无符号数, 请用比较指令和条件转移指令实现以下判断:
(1)BX的值与AX的值相减, 会产生溢出吗? 若溢出则转OVERFLOW
(2)若BX的值小于AX的值,则转去执行EQ_SMA
(3)若DX的值低于CX的值,则转去执行EQ_SMA
1.31 [库中题号:050009] 5分
假定AX和BX中的内容为带符号数, CX和DX中的内容为无符号数, 请用比较指令和条件转移指令实现以下判断:
(1)若DX的值超过CX的值,则转去执行EXCEED
(2)若BX的值大于AX的值,则转去执行EXCEED
(3)CX中的值为0吗? 若是则转去执行ZERO
1.32 [库中题号:050008] 5分
用其他指令完成和下列指令一样的功能:
(1) REP STOSB (2) REP SCASB
1.33 [库中题号:050007] 5分
用其他指令完成和下列指令一样的功能:
(1) REP MOVSB (2) REP LODSB
1.34 [库中题号:050006] 5分
试分析下面的程序段完成什么操作?
MOV CL,04
SHL DX,CL
MOV BL,AH
SHL AX,CL
SHR BL,CL
OR DL,BL
1.35 [库中题号:050005] 5分
DATA SEGMENT
TABLE_ADDR DW 1234H
DATA ENDS
......
MOV BX, TABLE_ADDR
LEA BX, TABLE_ADDR
请写出上述两条指令执行后, BX寄存器中的内容。
1.36 [库中题号:050004] 5分
指出下列指令的错误:
(1) MOV AH,BX (2) MOV [SI],[BX] (3) MOV AX,[SI][DI]
1.37 [库中题号:050003] 5分
执行下列指令后, AX寄存器中的内容是什么?
TABLE DW 10,20,30,40,50
ENTRY DW 3
......
MOV BX,OFFSET TABLE
ADD BX,ENTRY
MOV AX,[BX]
1.38 [库中题号:050002] 5分
分析下列标号为什么是非法的?
(1) GET.DATA (2) 1_NUM (3) TEST-DATA (4) RET (5) NEW ITEM
1.39 [库中题号:050001] 5分
分析并指出下列程序中的错误:
STAKSG SEGMENT
DB 100 DUP(?)
STA_SG ENDS
DTSEG SEGMENT
DATA1 DB ?
DTSEG END
CDSEG SEGMENT
MAIN PROC FAR
START: MOV DS,DATSEG
MOV AL,34H
ADD AL,4FH
MOV DATA,AL
START ENDP
CDSEG ENDS
END
重庆科技学院20___ /20__ 学年第 学期
试卷参考答案及评分标准( 卷)
课程名称: 微机原理 选课课号:
适用专业/年级: 抽(命)题人:
考试方式: 卷面总分: 分
一.程序分析题 (共39题,195分)
1.1 [库中题号:050039] 5分
解:
不一样. 分别是72H, 04H和04H, 72H. 存储字时低8位存在低字节,高8位存在高字节.
1.2 [库中题号:050038] 5分
解:
(1) 基址变址方式不能有 BX和BP的组合
(2) 在8086寻址方式中,AX不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式
(3) 1000超出一个字节的表数范围
1.3 [库中题号:050037] 5分
解:
(1) OFFSET只用于简单变量,应去掉
(2) CS不能作为目的寄存器
(3) 段地址不能直接送入数据段寄存器
1.4 [库中题号:050036] 5分
解:
(1)完成0到100间所有偶数求和的功能。
(2)2550
1.5 [库中题号:050035] 5分
解:
汇编语言源程序应该由若干个逻辑段组成,可以有若干个数据段、代码段、堆栈段和附加数据段,至少要有一个代码段。各段的作用如下:
(1)代码段用来存放程序和常数。
(2)数据段用于数据的保存。
(3)堆栈段用于保护数据,尤其在子程序调用、中断过程中进行现场信息保护。
(4)附加数据段用于数据的保存。
语句标号和变量应具备的3种属性:段属性、偏移属性和类型属性。
1.6 [库中题号:050034] 5分
解:
程序第8行错误:LEA SI,OFFSET DD1,应去掉OFFSET;
程序第10行错误:RCR AL,CL,应使用ROR或ROL,改为ROR AL,CL
1.7 [库中题号:050033] 5分
解:
(1) LEA BX,BLOCK+10
MOV CX,[BX]
(2) LEA BX,BLOCK
MOV CX,10[BX]
(3) LEA BX,BLOCK
MOV SI,10
MOV CX,[BX][SI]
1.8 [库中题号:050032] 5分
解:
(1) ADD DX,BX
(2) ADD AL,[BX][SI]
(3) ADD 21B5H[BX],CX
(4) ADD WORD PTR [2158H],3160H
(5) ADD AL,25H
1.9 [库中题号:050031] 5分
解:
(1) MOV AX,4629H
(2) SUB AX,3218H
(3) LEA BX,BUF
1.10 [库中题号:050030] 5分
解:
(1) ADD VAR1,VAR2
错误,两个操作数不能都为存储单元,可改为 MOV BX,VAR2
ADD VAR1,BX
(2) MOV AL,VAR2
错误,数据类型不匹配,可改为MOV AX,VAR2
(3) SUB AL,VAR1
错误,数据类型不匹配,可改为SUB AX,VAR1
(4) JMP LAB[SI]
错误,寄存器相对寻址形式中不能用标号做位移量,可改为JMP VAR1[SI]
(5) JNZ VAR1
错误,条件跳转指令只能进行段内短跳转,所以后面只能跟短标号。可改为JNZ LAB
(6) JMP NEAR LAB
错误,缺少运算符PTR,可改为JMP NEAR PTR LAB
1.11 [库中题号:050029] 5分
解:
(1) MOV BYTE PTR[BX],1000
错误,1000超出字节空间存储范围
(2) MOV BX,OFFSET MAYDAT[SI] ;正确
(3) MOV CS,AX
错误,MOV指令CS不能做目的操作数,可改为MOV DS,AX
(4) MOV DS,BP ;正确
1.12 [库中题号:050028] 5分
解:
(1) MOV AH,BX
错误,寄存器类型不匹配,可改为MOV AX,BX
(2) MOV [BX],[SI]
错误,两个操作数不能都为存储单元,可改为MOV BX,[SI]或MOV [BX],SI
(3) MOV AX,[SI][DI]
错误,寻址方式中只能出现一个变址寄存器,可改为MOV AX,[BX][DI]。
(4) MOV MYDAT[BX][SI],ES:AX
错误,AX签不能有段跨越前缀,去掉ES:,改为MOV MYDAT[BX][SI],AX
1.13 [库中题号:050027] 5分
解:
(1) MOV AX,[BX]
EA = (BX)= 0100H,PA =(DS)×10H+EA= 2000H×10H+0100H= 20100H,执行后,(AX)= 5132H
(2) MOV AX,1100H[BX]
EA =(BX)+1100H = 0100H+1100H = 1200H,PA = (DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH
(3) MOV AX,[BX][SI]
EA =(BX)+(SI)= 0100H+0002H= 0102H,PA= (DS)×10H+EA = 2000H×10H+0102H = 20102H,执行后,(AX)= 29D1H
1.14 [库中题号:050026] 5分
解:
(1) MOV AX,1200H ;执行后,(AX)= 1200H
(2) MOV AX,BX ;执行后,(AX)= (BX)= 0100H
(3) MOV AX,[1200H]
直接寻址,EA = [VAL] = 1200H,PA = (DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH
1.15 [库中题号:050025] 5分
解:
(1) MOV AX,[BX+10]
相对寄存器寻址,EA =(BX)+10D = 0100H+000AH = 010AH,PA= (DS)×10H+EA = 2000H×10H+010AH = 2010AH
(2) MOV AX,VAL[BX]
相对寄存器寻址,EA =(BX)+[VAL]= 0100H+0050H= 0150H,PA= (DS)×10H+EA = 2000H×10H+0150H = 20150H
(3) MOV AX,[BX][SI]
基址变址寻址,EA = (BX)+(SI)= 0100H+00A0H = 01A0H,PA = (DS)×10H+EA = 2000H×10H+01A0H = 201A0H
(4) MOV AX,VAL[BX][SI]
相对基址变址寻址,EA = (BX)+(SI)+[VAL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H
1.16 [库中题号:050024] 5分
解:
(1) MOV AX,[BX]
寄存器间接寻址,EA =(BX)= 0100H,PA =(DS)×10H+EA= 2000H×10H+0100H = 20100H
(2) MOV AX,ES:[BX]
寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10H+EA= 2100H×10H+0100H = 21100H
(3) MOV AX,[BP]
寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10H+EA= 1500H×10H+0010H = 15010H
(4) MOV AX,[SI]
寄存器间接寻址,EA =(SI)=00A0H,PA =(DS)×10H+EA = 2000H×10H+00A0H = 200A0H
1.17 [库中题号:050023] 5分
解:
(1) MOV AX,21H
立即寻址,源操作数直接放在指令中
(2) MOV AX,BX
寄存器寻址,源操作数放在寄存器BX中
(3) MOV AX,[1000H]
直接寻址,EA = 1000H,PA =(DS)×10H+EA = 2000H×10H+1000H = 21000H
(4) MOV AX,VAL
直接寻址,EA = [VAL] = 0050H,PA = (DS)×10H+EA = 2000H×10H+0050H = 20050H
1.18 [库中题号:050022] 5分
解:
(1)(31200H)=2D00H (2)(31202H)=70F 7H
1.19 [库中题号:050021] 5分
解:
1.(1)CL=F6H (2)(1E4F6H)=5678H (3) BX=0056H AX=1E40H
1.20 [库中题号:050020] 5分
解:
AX=2000H BX=0030H
展开阅读全文