汇编——模拟试卷四
一、单项选择题(每小题1 分,共20 分)
1. 在下述指令的表示中,不正确的是(C)。
A. PUSH 54[DI]
B. MOV AX,[BX] NUM[SI]
C. MOV AX,[BX+BP+NUM]
D. AND DH,DL
2. 已知(AX)=875BH,执行下述三条指令后,(AX)=(D)。
MOV BX,AX
NEG BX
ADD AX,BX
A. 875BH B. 0EDCCH
C. 6DCCH D. 0000H
3. 指令JMP FAR PTR LOP1 属于(C)。
A. 段内转移直接寻址 B. 段内转移间接寻址
C. 段间转移直接寻址 D. 段间转移间接寻址
4. 对两个无符号数A、B 进行比较时,采用JBE/JNA 指令,转移的条件是(C)。
A. CF=0 或ZF=1 B. CF=0 或SF=1
C. CF=l 或ZF=1 D. ZF=0 或SF=0
5. 设SP 初值为1000H,执行指令 PUSH BX 后,SP 的值是(D)。
A. 1002H B. 0FF8H
C. FFFH D. 0FFEH
6. 设AH=1,AL=09H,BL=05H,执行指令:
ADD AL,BL
AAA
之后,其结果应是(A)。
A. AH=02,AL= 04 B. AH=1,AL=24 C. AH=0,AL=24H D. AH=0,AL=24
1 AAA(非压缩BCD码调整):如果al低四位大于9,就将al加6,ah加一,al高四位清零,cf、af置1。 2 3 al = al + bl = 0EH # 后4位大于9 4 5 so al=al+6=14H,然后将高4位清零==> al=04 6 7 ah=ah+1=02H 8 9 cf,af=0
7. 下列指令执行时出错的是(A)。
A. MOV DA1,DA2
B. JMP WORD PTR[BX]
C. MOV AX,[BX+DI] NUM
D. TEST AL,08H
8. 计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的编码。目前,微机中普遍采用的是(C)。
A. BCD 码 B. 二进制码
C. ASCII 码 D. 十六进制码
9. 设变量定义如下:DA_WORD DW 3,5AH,98,0B0H。指令ADD AL,TYPE DA_WORD的等效指令是(B)。
A. ADD AL,1 B. ADD AL,2
C. ADD AL,3 D. ADD AL,4
10. 从键盘输入一个十进制数2002,将该数值以压缩型BCD 码的存储形式保存到存储器中,其存放的顺序是( )。
A. 20,02 B. 02,20 C. 32,30,30,32 D. 32,30,32,30
1 因为本身是10进制的数,so不用转换,直接存储 2 3 内存的存储是低位,高位这样存储的 ==> 02,20
11. 指令LES SI,ES:[1000H]的功能是( )。
A. 将数据段偏移地址1000H 送SI
B. 将数据段偏移地址1000H 字单元内容送SI,并且把下一个字单元内容送ES
C. 将附加段中偏移地址为1000H 字单元内容送SI,并且把它的下一个字单元内容送ES
D. 将地址1000H 字单元内容送DS,并且把它的下一个字单元内容送SI
1 LES SI,ES[1000H] 2 3 将给定内存单元的双字型数据的低位字放到指定寄存器,将高位字节送到ES寄存器
12. CPU 发出的访问存储器的地址是(A)。
A. 物理地址 B. 偏移地址
C. 逻辑地址 D. 段地址
13. 下面语句中有语法错误的语句是( )。
A. DB 0ABH,12,3,5 B. DW 3ABCH C. DW ‘ABCD’ D. D ‘AB’
1 dw定义的字型数据只能有2个字节的东西 2 3 2个字节一上要用db定义
14. 如AX=FFFFH
NEG AX
NEG AX
上述两条指令执行后,AX 的值为(B)。
A. 0000H B. FFFFH
C. 0F00H D. 0001H
15. 逻辑运算指令是按位进行运算的,指令执行后不保留运算结果,只对标志寄存器产生影响的指令是(D)。
A. AND B. XOR
C. OR D. TEST
16. 在8086/8088 系统中,一个字节的无符号数能表达的数值范围是(C)。
A. 0~7FH B. 0~256
C. 0~255 D. 0~128
17. 设DS= 3635H,DI=0083H,指令INC BYTE PTR [DI]操作数的物理地址是(C)。
A. 36AD8H B. 36353H
C. 363D3H D. 0A018H
18. 执行下面指令序列后,结果是( )。
MOV BL,91H
CBW
A. BX=0091H B. AX=0FF91H
C. AX=0F91H D. 1F91H
1 CBW指令:8位-->16位数据 2 3 8位的二进制最高位是1 ==> 高位时FFH 4 0 ==> 低位时00H
19. 下列叙述正确的是( )。
A. 在运算过程中,只有补码数相加才会影响OF 标志位
B. 在运算过程中,无符号数的运算不会产生溢出
C. 在程序执行过程中,条件转移指令的执行一定会影响到标志位
D. 在程序执行过程中,执行DAA,DAS 指令会影响到标志位
1 A. 在运算过程中,只有补码数相加才会影响OF 标志位 2 # 不论是啥数相加都有可能影响of标志位 3 4 B. 在运算过程中,无符号数的运算不会产生溢出 5 # 会的 6 7 C. 在程序执行过程中,条件转移指令的执行一定会影响到标志位 8 # 条件转移指令的执行不会影响标志位,因为它只是一个if判断 9 10 D. 在程序执行过程中,执行DAA,DAS 指令会影响到标志位 11 12 DAA指令: 13 if (al的低4位 > 9 || af=1){ 14 al += 6 15 af = 1 16 }if(al高4位 > 9 || cf=1){ 17 al += 60 18 cl = 1 19 }else{ 20 af = 0 21 cf = 0 22 } 23 24 DAS指令(校正2个组合bcd码直接相见的结果): 25 if(al&0fH > 9 || af=1){ 26 al -= 6 27 af = 1 28 }if(al > 9fH || cf=1){ 29 al -= 60 30 cf = 1 31 }
20. DATA SEGMENT
ORG 40H
DA1 0FEH
DA2 DW 52ACH
DATA ENDS
…
MOV AL,DA1
MOV BX,DA2
上述指令执行后,AL 和BX 的值为(A)。
A. AL=0FEH,BX=52ACH B. AL=0FEH,BX=0041H
C. AL=40H,BX=52ACH D. AL= 40H,BX=0041H
二、填空题(本大题共5 小题,每空1 分,共5 分)
名词解释:请将各小题的叙述与下面的词语联系起来,括号内填入对应的A,B,C,D,E。
1. 指示下一条将要执行的指令的地址(C)。
2. 存储程序、数据等信息的装置是(D)。
3. 把汇编语言程序翻译成机器语言的系统程序是(E)。
4. 分析、控制并执行指令的部件是(B)。
5. 控制操作数的标志位(PC 机有DF、ZF、TF)是(A)。
词语:A. 控制标志 B. CPU C. IP D. 存储器 E. 汇编程序
三、简答题(本大题共3 小题,每小题2 分,共6 分)
1. 请指出下述两条伪指令语句的区别。
COUNT1 DW 1234H
COUNT2 DB 12H,34H
1 DW 1234H的内存顺序 --> 34,12
2. 分别指出下列指令中源操作数的寻址方式:
(1)AND AX,0FFH ; 立即
(2)MOV CX,COUT[SI] ; 寄存器相对
(3)MOV AX,[DI] ; 寄存器间接寻址
(4)ADD AX,[BX][DI] ; 基址变址寻址
3. DA_BYTE LABEL BYTE
DA_WORD DW 20H DUP(?)
上面两条指令分别执行后,各将该数组中的第几个字节置0?
(1)MOV DA_WORD+2,0 第3,4个字节
(2)MOV DA_BYTE+2,0 第3个字节
四、程序分析题(本大题共7 小题,每小题5 分,共35 分)
1. DATA SEGMENT
DA1 DW 123H,456H,0AB00H 0~5
DA2 DB 12H,34H,56H,0ABH 6~9
DB $ -DA2 ; 10,因为没有equ
BUF DB 10H DUP(1,2,3) 11~
DATA ENDS
MOV BX,[0006] ; 3412H
AND BX,0FFH ; 0012H
ADD BX,[BX]
上述指令执行后,BX= __0314H__
MOV DX,SIZE BUF
ADD DX,DA2+4
上述指令执行后,DX= 0014H 。 # 相信我,绝壁答案错了
2. 现有数据段如下:
DATA SEGMENT
ARRAY1 DB 1,26,‘3456’ ; 0~5
ARRAY2 DW 7,89H,10 ; 6~11
VAL EQU ARRAY2-ARRAY1
DATA ENDS
试问:(1)该数据段已占有多少字节的存储空间? 12字节
(2)VAL 的值是多少? 6
3. 有如下程序段:
DATA SEGMENT
STRING1 DB ‘COMPUTER SCIENCE’
STRING2 DB 20 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES: DATA
START:
…
CLD
MOV CX,16
LEA SI,STRING1
LEA DI,STRING2
REP MOVSB
…
CODE ENDS
END START
试问:上述程序段执行后,完成什么功能? 将STRING1 中的16 个字符移动到STRING2 中。
4. 有如下数据定义:
DA1 DB 4 DUP(5),2 ; 0~4
COUNT EQU 10
DA2 DD COUNT DUP(?) ; 5~44
问:
(1)上述数据定义为变量DA1 分配多少字节存储空间。 5b
(2)为变量DA2 分配多少个字节存储空间。 40b
5. MOV CL, 3
MOV BX,0A6H
ROL BX,1
ROR BX,CL
上述程序段执行后,BX 寄存器的内容是什么? (BX)=8029H
6. MOV AX,1234H
MOV CL,4
ROL AX,CL
DEC AX
MOV CX,4
MUL CX
INT 20H
上述程序段执行后,(AX)= 8d00h, (BX)= 0000h。
7. AX=0A0B5H
MOV BX,AX
NEG BX
ADD AX,BX
上述程序段执行后,(AX)= 0000h,(CF)= 1。
四、程序分析题(本大题共7 小题,每小题5 分,共35 分)
1. DATA SEGMENT
DA1 DW 123H,456H,0AB00H
DA2 DB 12H,34H,56H,0ABH
DB $ -DA2
BUF DB 10H DUP(1,2,3)
__(1)__
MOV BX,[0006]
AND BX,0FFH
ADD BX,[BX]
上述指令执行后,BX= 。
__(2)__
MOV DX,SIZE BUF
ADD DX,DA2+4
上述指令执行后,DX= 。
2. 现有数据段如下:
DATA SEGMENT
ARRAY1 DB 1,26,‘3456’
ARRAY2 DW 7,89H,10
VAL EQU ARRAY2-ARRAY1
DATA ENDS
试问:(1)该数据段已占有多少字节的存储空间?
(2)VAL 的值是多少?
3. 有如下程序段:
DATA SEGMENT
STRING1 DB ‘COMPUTER SCIENCE’
STRING2 DB 20 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES: DATA
START:
…
CLD
MOV CX,16
LEA SI,STRING1
LEA DI,STRING2
REP MOVSB
…
CODE ENDS
END START
试问:上述程序段执行后,完成什么功能?
4. 有如下数据定义:
DA1 DB 4 DUP(5),2
COUNT EQU 10
DA2 DD COUNT DUP(?)
问:
(1)上述数据定义为变量DA1 分配多少字节存储空间。
(2)为变量DA2 分配多少个字节存储空间。
5. MOV CL, 3
MOV BX,0A6H
ROL BX,1
ROR BX,CL
上述程序段执行后,BX 寄存器的内容是什么?
6. MOV AX,1234H
MOV CL,4
ROL AX,CL
DEC AX
MOV CX,4
MUL CX
INT 20H
上述程序段执行后,(AX)= , (BX)= 。
7. AX=0A0B5H
MOV BX,AX
NEG BX
ADD AX,BX
上述程序段执行后,(AX)= ,(CF)= 。
五、程序填空题(本大题共2 小题,每小题6 分,共12 分)
1. 下面程序段是根据DAY 字节单元中的内容,从表WEEK 中查出对应的星期一到星期日的英文缩写,并将其显示输出。试在空白处填上适当的指令(每一空白处只填一条指令)。
1 WEEK DB ‘MON’,‘TUE’,‘WED,‘THU’ 2 3 DB ‘FRI’,‘SAT’,‘SUN’ 4 5 DAY DB ? 6 7 … 8 XOR BX,BX ; bx=0 9 10 MOV BL,DAY 11 12 __DEC BL__ 13 14 MOV AL,BL 15 16 SAL BL,1 17 18 __ADD BL,AL__ 19 20 MOV CX,3 21 22 LOP: MOV DL,WEEK[BX] 23 24 MOV AH,02H 25 26 INT 21H 27 28 __INC BX__ 29 30 LOOP LOP
2. 以ARRAY 为首址的数据区中依次存放20 个数据al,a2,…,a20,每个数据占两个字节,下列程序段完成计算20 个数据的和并把和存入SUM 中。试在空白处填上适当的指令(每一空白处只填一条指令)。
1 ARRAY DW al,a2,…,a20 2 3 SUM DW ? 4 5 … 6 7 MOV AX,0 8 9 MOV BX,OFFSET BUF 10 11 __mov cx,20__ 12 13 LOP: ADD AX,[BX] 14 15 INC BX 16 17 INC BX 18 19 __loop LOP__ 20 21 MOV SUM,AX
六、编程题(本大题共3 小题,共22 分)
1. 试编写一程序段,把DX:AX 中的双字右移4 位。(5 分)
1 MOV CL,4 2 3 SHR AX,CL 4 5 MOV BL,DL 6 7 SHR DX,CL 8 9 SHL BL,CL 10 11 OR AH,BL
2. 完成将AX 和BX 中的两个带符号数相加,如果没有溢出,转移到OK 处执行。试编写一程序段。(5 分)
ADD AX,BX JNO OK
3. 试编写完整程序,将数据段中ARRAY1 开始字节单元中的10 个数字0,1,2,3,4,5,6,7,8,9 转换成相应的ASCII 码送入以ASC 开始的内存单元中。(12 分)
1 DATA SEGMENT 2 ARRAY1 DB 1,2,3,4,5,6,7,8,9 3 ASC DB 10 DUP(?) 4 CUNT EQU ASC-ARRAY1 5 DATA ENDS 6 7 STACK1 SEGMENT PARA STACK 8 DW 20H DUP(0) 9 STACK1 ENDS 10 11 CODE SEGMENT 12 ASSUME CS:CODE,DS:DATA,SS:STACK1 13 START:MOV AX,DATA 14 MOV DS,AX 15 LEA SI,ARRAYI 16 LEA DI,ASC 17 MOV CX,CUNT 18 LOP:MOV AL, [SI] 19 OR AL,30H;或ADD AL,30H 20 MOV [DI],AL 21 INC SI 22 INC DI 23 LOOP LOP 24 MOV AH,4CH 25 INT 21H 26 CODE ENDS 27 END START