资源描述
宁波大学科技学院2007~2008学年第2学期期中考试卷
一. 单项选择题(共3分,每小题1.5分)
1.MOV AX,[BX+SI]指令的源操作数的物理地址是( A )。
A. B.
C. D.
2.下列指令有语法错误的是( C )。
A.MOV AL,02h B. XOR AX,AX
C.MOV [SI],[DI] D. ADD AX,BX
C:的错误原因:源操作数和目的操作数不能同时为内存单元
3.有语句:COUNT EQU 256,下列四种叙述中,正确的是( C )。
A.COUNT是变量 B.COUNT占用一个字节存储单元
C.COUNT是符号常数 D.COUNT占用二个字节存储单元
4.下面指令中,源操作数的寻址方式为寄存器间接寻址的是( C )。
A.MOV AX,2[BX] B.MOV AX,BX
C.MOV AX,[BX] D.MOV AX,[BX+SI]
5.已知SP=1234H,执行PUSH AX后,SP寄存器的值是( B )。
A.1230H B.1232H
C.1234hH D.1236H
因为栈顶的位于低地址端,所以入栈以后SP的值要减去2,所以
(SP)=1232H
6.将AL中无符号数乘以3的正确指令是( B )。
A.MOV BL,3 B.MOV BL,3
MUL AL,BL MUL BL
C. MOV BL,3 D. MOV BL,3
IMUL AL,BL IMUL BL
进行无符号数的字节相乘时MUL指令的一个默认的操作数为AL
7.LOOP指令退出循环的条件是( A )。
A. (CX) = 0 B. (CX) < 0
C. (CX) > 0 D. 以上答案都不对
8.指令MOV AX,WORD PTR [BP]的源操作数的段地址一定在( D )寄存器中。
A.CS B.DS
C.ES D.SS
BP作为基址寄存器寻址时,默认的段寄存器为堆栈段
9.执行下列指令序列后,结果是( A )。
MOV AX,1234H
CBW
A.(AX)=0034H B. (AX)=0FF34H
C. (AX)=3412H D. (AX)=1134H
(AL)=34H=00110100B,其最高位为0,执行CBW后(AH)=00000000B
00H
22H
21H
20H
所以(AX)=0034H
10.下面的汇编程序的数据段中定义了两个变量
B
A DB 20H,21H
A+1
B DW 22H
A
执行了MOV DX,WORD PTR [A+1]后,DX中的值为( B )
A.0021H B.2221H C.2122H D.0022H
符号地址A+1对应的低八位为21H,高八位位22H,所以(DX)=2221H
11.如果要用mov ah,02h 和int 21h输出一个字符到屏幕上,那么,需要输出的字符的ASCII码应该放在( D )中。
A. AL B. BL
C. CL D. DL
12.语句AB DB 3 DUP (8,6)汇编后,等同的语句是( C )
A. AB DB 8,8,8,6,6,6 B. AB DB 3,8,6
C. AB DB 8,6,8,6,8,6 D. AB DB 8,6
13.执行一下语句后,al的内容是( A )。
mov cl,2
mov al,0C6h
sar al,cl
A. 0F1H B. 0F2H
C. 01FH D. 0C4H
当(cl)=2时,sar al,cl
相当于执行两次 sar al,1
mov al,0C6h ; (al)=0C6h = 1100 0110
sar al,1 ; (al)=0E3h = 1110 0011 CF=0 (因为在移位前al的最低位为0)
sar al,1 ; (al)=0F1h = 1111 0001 CF=1 (因为在移位前al的最低位为1)
可以参考lecture07.doc的第一页
14.将以下指令能把AX最低四位都置为1的指令是( C )。
A.AND AX,0FH B.AND AX,0FFH
C.OR AX,0FH D.OR AX, 0FFFFH
15、下面四条指令中,能将SI和DI的内容进行交换的是( C )。
A、MOV SI,DI B、MOV AX,SI
MOV BX,AX
XCHG AX,SI
C、PUSH SI D、 PUSH SI
PUSH DI PUSH DI
POP SI POP DI
POP DI POP SI
16、Intel 8086 CPU 读取代码段中的指令,使用的一对寄存器是( A )。
A 、 CS:IP B 、 DS:BX C 、 SS:SP D 、 ES:SI
17、在数据段有如下定义: A_BUF DB ‘1234567’,则A_BUF字节单元的内容是( A )
A 、 31H B 、 01H C、 12H D 、 12
得分
阅卷人
18、在汇编过程中,不产生机器码,只用来指示汇编程序如何汇编的指令是( B )
A.宏指令 B.伪指令 C.汇编指令 D.机器指令
19、一条指令中目的操作数不允许使用的寻址方式是( B )
A.寄存器寻址 B.立即数寻址 C.变址寻址 D.寄存器间接寻址
20、计算机的系统总线由三种信号线组成,它们分别是( A )
A 、数据线、控制线、地址线 B 、数据线、状态线、地址线
C 、控制线、状态线、地址线 D 、数据线、状态线、控制线
二.填空题(共20分,每空1分)
1. MOV AX,[SI][BP] 的源操作数寻址方式是 基址变址寻址 ,目的操作数的寻找方式是 寄存器寻址 。
2. 2. 8086 CPU数据总线有 16 位,地址总线有 20 位,寻址的内存范围为
从 00000 H到 0FFFFF H(用物理地址表示)。
3. 执行 MOV BX,3402H
MOV AL,12H
MUL BL
指令后,(BH)= 34H ,(AL)= 24H 。
12H乘以2H等于24H,所以 (AH)=00H (AL)=24H
4.有下列数据定义:
ARRAY DB 12,34,56
LEN EQU ($-ARRAY)
则LEN = __ 3 ___。
5.表示加法有进位的状态标志位是__CF______。
6.设有如下指令
DATA SEGMENT
TABLE_ADDR DW 1234H
DATA ENDS
.
.
.
MOV AX,TABLE_ADDR
LEA DX,TABLE_ADDR
则执行完上述指令后 (AX)= 1234H , (DX)= 0H
TABLE_ADDR叫变量名,又叫符号地址,
MOV AX,TABLE_ADDR的作用是把变量TABLE_ADDR的内容给AX
LEA DX,TABLE_ADDR的作用是把变量TABLE_ADDR的偏移量给DX
7. 8086有些寄存器含有特定的隐含用途,如 AX 可以用作累加器;
BX 作为基址寄存器; CX 作为计数寄存器;控制循环;
DX 作为数据寄存器,在以字类型的数据的乘法运算中,作为积的高16位。
8. 执行指令MOV AL,2*7 以后(AL)= 0EH ;
执行指令MOV AL,19/7 以后(AL)= 2H ;
执行指令MOV AL,19 MOD 7 以后(AL)= 5H ;
9.执行下面两条指令以后
MOV DX,0F0FEH
AND DX,81H AND 0FEH
(DX)= 80H .
81H AND 0FEH的AND为运算符号,和* / MOD属于同一种类型,它的作用是把立即数
81H和0FEH相与,计算结果可得80H
第一个AND为AND指令,执行AND DX,80H后
即把 11110000 11111110B和0000 0000 1000 0000B相与
(DX)=0000 0000 1000 0000B=80H
三.解答题(30分)
1 .已知在数据段中有如下定义ARRAY DB 83H,72H,61H,94H,54H ,写出下面每条指令执行以后,相关寄存器的内容(6分)
MOV CX, WORD PTR ARRAY (CX)=
AND CX,0FH (CX)=
MOV AL, ARRAY+3 (AL)=
SHL AL,CL (AL)=
分析:
MOV CX, WORD PTR ARRAY (CX)= 7283H
WORD PTR ARRAY为一个字,其低八位为ARRAY,对应的内容为
83H,高八位为ARRAY+1, 对应的内容为72H,所以(CX)=7283H
AND CX,0FH (CX)= 3H
AND CX,0FH即 把 7283H和000FH相与,所以(CX)=3H
MOV AL, ARRAY+3 (AL)= 94H
ARRAY+3对应的数据为94H
SHL AL,CL (AL)= 0A0H
即把1001 0100B左移三次
左移一次 0010 1000 B
左移一次 0101 0000 B
左移一次 1010 0000 B ( 即A0H )
2. 指出下列指令源操作数的寻址方式: (8分)
MOV AX,2[SI] 寄存器相对寻址
MOV AX,ES:[BX] 寄存器间接寻址
MOV AX,[200H] 直接寻址
MOV AX,[BX+DI] 基址变址寻址
MOV AX,BX 寄存器寻址
MOV AX,1200H 立即数寻址
MOV AX,20[BX+SI] 带位移量的基址变址寻址
MOV AX,[DI+20] 寄存器相对寻址
3. 设有关寄存器及存储单元的内容如下:
(DS)=2000H, (BX)=0100H, (SI)=0002H, (20100H)=12H, (20101H)=34H,
(20102H)=56H, (20103H)=78H, (21200H)=2AH, (21201H)=4CH, (21202H)=0B7H, (21203H) =65H,试说明下列各条指令执行完以后AX寄存器的内容. (6分)
(1) MOV AX, BX (AX)=0100H
(2)MOV AX, [1200H] (AX)=4C2AH
(3) MOV AX,[BX] (AX)=3412H
(4) MOV AX,1100H[BX] (AX)= 4C2AH
(5) MOV AX, [BX][SI] (AX)= 7856H
(6)MOV AX,1100H[BX][SI] (AX)=65B7H
4. 设有如下定义
DATA SEGMENT
V_WORD DW 3332H, 3735H
TARGET DW 5 DUP (20H)
DATA ENDS
则执行以下指令后,写出相关的寄存器的内容 (3分)
MOV AX, TYPE V_WORD (AX)=( 2 )
MOV CX, LENGTH TARGET (CX)=( 5 )
MOV SI, OFFSET TARGET (SI)= ( 4 )
5 设(SS)=0FFA0H , (SP)=00B0H,画图说明执行下列指令序列时,堆栈区和SP的内容如何变化?(7分)
MOV AX, 1234H
PUSH AX
MOV AX,0F79H
PUSH AX
POP BX
POP BX
见习题课分析,书本103页
四.已知如下程序的功能为实现1+3+5+…+ 99.其运算结果放在DX,不必写输出语句。请把下面的程序补完整(10分)
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,0
mov bx,1
lable1: add dx,bx
add bx,2
cmp bx,99
jbe lable1
MOV AH,4CH
INT 21H
CODE ENDS
END START
五.已知一个字符串STRING1中中含有15个字符(不包括0dh,0ah和’$’),如下的程序的作用为统计STRING1中数字字符(即‘0’~‘9’)的个数,结果放到内存变量NUM中,不需要写输出语句.部分代码如下,请把程序补完整 (10分)
DATA SEGMENT
STRING1 DB ‘A1B2C34567mno60’,0dh,0ah,’$’
NUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS: DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,15
MOV AL,0
LEA SI,STRING1
LABLE1: CMP BYTE PTR [SI],'0'
JB LABLE2
CMP BYTE PTR [SI],'9'
JA LABLE2
ADD AL,1
LABLE2: ADD SI,1
LOOP LABLE1
MOV NUM,AL
另解:
MOV AL,0
LEA SI,STRING1
LABLE1: CMP BYTE PTR [SI],'0'
JB LABLE2
CMP BYTE PTR [SI],'9'
JA LABLE2
ADD AL,1
LABLE2: ADD SI,1
CMP BYTE PTR [SI],0DH
JNZ LABLE1
MOV AH,4CH
INT 21H
CODE ENDS
END START
第8页 共6页
展开阅读全文