汇编——模拟试卷三

一、单项选择题(每小题1 分,共20 分)

1. 设段地址和偏移地址是3F4BH : 00C7H,那么它所对应存储单元中的物理地址是(C)。

A. 3F4B7H B. 3F598H

C. 3F577H D. 3EB76H

2. 在下列段寄存器中,堆栈段寄存器是(D)。

A. ES B. CS

C. DS D. SS

3. 下列汇编语言指令中,正确的指令是(B)。

A. MOV [BX] [BP],AX B. AND DH,DL

C. ADD [SI],DA_ BYTE D. LEA DS,40 [SI]

4. 下面指令执行后,变量DA_BYTE 中的内容是(C)。

DA_WORD DW AC05H

DA_BYTE DB 0FAH

MOV AL,BYTE PTR DA_WORD

SUB DA_BYTE,AL

A. 0EAH B. 0FAH

C. 0F5 D. 00H

5. 设数据段中已有:

DA1 DB 12H,34H

DA2 DW 56H,78H

下面有语法错误的语句是( )。

A. MOV DA1+2,AX     B. ADR DW DA1

C. MOV BYTE PTR DA2+1,AL D. MOV WORD PTR DA1+1,AX

1 不可能把一个值赋给表达式。也许应改为:MOV [DA1+1],AX
View Code

6. 若(AX)=2000H,(BX)=0050H,(20050H)=12H,(20051H)=34H,执行MOV AX,[BX]指令后,AX 寄存器中的内容是(D)。

A. (AX)=0050H B. (AX)=0012H

C. (AX)=1234H D. (AX)=3412H

7. 在执行PUSH [BX]指令寻找目的操作数时,段地址和偏移地址分别是(B)。

A. 无段地址和偏移地址     B. 在DS 和BX 中

C. 在ES 和BX 中       D. 在SS 和BP 中

8. 已定义DA_WORD DW 50 DUP(0),则指令MOV CX,SIZE DA_WORD 汇编后的等效指令是(B)。

A. MOV CX,50     B. MOV CX, 100

C. MOV CX,200     D. MOV CX,100 DUP (0)

9. 完成将带符号数AX 的内容除以2 的正确指令是(答案错了)。

A. RCR AX,1 B. ROR AX,1

C. SHR AX,1 D. SAR AX,1

1 sar是保留符号位,把剩下的二进制位向右移一位(原最低位丢弃)
2 把n进制数右移1位就相当于原数除以n取整,
3 比如十进制数123,右移一位是12("3"被丢弃),而123/10=12
View Code

10. 设BL=40H,SI=0600H,DS=3000H,(30600H)=0C0H,CF=1。执行SBB BL,[SI]后,正确的结果是(C)。

A. BL=5FH,SF=l,CF=1     B. BL=60H,SF=1,CF=0

C. BL=5FH,SF=0,CF=1     D. BL=60H,SF=0,CF=0

11. 设SP =1FFD,下列指令执行后,SP 寄存器的内容是(C)。

PUSH BX

POPF

A. 1FFB B. 1FFF

C. 1FFD D. 2000

12. 下面指令执行后,改变AL 寄存器内容的指令是(D)。

A. CMP AL,BL B. OR AL,AL

C. TEST AL,BL D. AND AL,BL

13. INC BYTE PTR [BX]指令中的操作数的数据类型是(C)。

A. 双字 B. 字

C. 字节 D. 四字

14. 用指令的助记符、符号地址、标号和伪指令、宏指令等书写程序的语言称为(A)。

A. 汇编语言 B. 高级语言

C. 机器语言 D. 低级语言

15. 完成将累加器AX 清零,下列指令中错误的指令是(D)。

A. XOR AX,AX B. SUB AX,AX

C. AND AX,00H D. OR AX,00H

16. 下面各组伪指令中,使用错误的是(C)。

A. STACK_SEG SEGMENT‘STACK’

B. SEGMENT‘CODE’

C. MAIN_PROC PROC FAR

MAIN_PROC NEDP

END MAIN_PROC

D. MYDATA SEGMENT‘DATA’

ENDS

17. 在8086/8088 系统中,存储器是分段组织的,每段最大字节的长度是(C)。

A. 8K B. 16K

C. 64K D. 1M

18. 设(AX)=0A8H,(CL)=3,CF=1,执行RCL AX, CL 指令后,AX 寄存器的内容是(B)。

A. 0545H B. 0544H

C. 0547H D. 00B5H

19. 已知DS=2000H, BX=1000H,COUT=0020H,SI=6D50H,(21020)=1080H,(21022)=4000H,则执行指令LDS SI,COUT [BX]后,SI、DS 寄存器的内容分别是(C)。

A. SI=6D50H,DS=2000H B. SI=1080H,DS=2000H

C. SI=1080H,DS=4000H D. SI=6D50H,DS=1080H

20. 执行下列指令序列后,正确的结果是(D)。

MOV AL,81H

ADD AL,AL

SBB AL,AL

A. AL=01H B. AL=10H

C. AL=00H D. AL=0FFH

二、填空题(每空1 分,共5 分)

名词解释:请将各小题的叙述与下面的词语联系起来,在括号内填上对应的A,B,C,D,E。

1. 保存当前栈顶地址的寄存器是(D)。

2. 惟一代表存储空间中每个字节单元的地址是(C)。

3. 能被计算机直接识别的语言是(E)。

4. 记录指令操作结果的标志:OF、SF、ZF、AF、PF、CF 是(A)。

5. 由汇编程序在汇编过程中执行的指令是(B)。

词语:A. 状态标志   B. 伪指令  C. 物理地址   D. SP  E. 机器语言

三、简答题(每小题2 分,共6 分)

1. 已知在数据段中定义的数据如下:

NAME DB ‘TOM’

   DB 20

   DB ‘STRING’

请指出下列指令是否正确。若不正确,错在哪里?

__不正确,数据类型不匹配__

MOV AX,NAME

__前两条指令正确,第三条数据类型不匹配。__

MOV BX,4×3

MOV SI,7

MOV AX,NAME [BX][SI]

2. 下列两条语句有何区别?  X 不能多次赋值,Y 可以多次赋值。

X EQU 1000H

Y=1000H

3. 有符号定义语句如下:

ARRAYI DB 3,6,9,‘123’  0~5

ARRAY2 DB 0  6

L EQU ARRAY2-ARRAY1

问L 的值是多少?  L=6

四、程序分析题(每小题5 分,共35 分)

1. 设寄存器AL=45H,BL=76H,CL=85H

XOR AL,0FH

AND BL,0FH

OR CL, 0FH

执行上述指令序列后,AL=4AH ,BL=06H ,CL=8FH 。

2. 下列语句执行后,AX 寄存器的内容是多少?

ARRAY DW 10,20,30,40,50

ENTRY DW 3

MOV BX,OFFSET ARRAY

ADD BX,ENTRY

MOV AX,[BX]    5040H

3. 现有程序段如下:

MOV AX,01H

MOV BX,02H

MOV CX,03H

LOP:INC AX

ADD BX,AX

SHR AX,1

LOOP LOP

上述程序段执行后AX、BX 寄存器的值分别是多少?  (AX)=1,(BX)=8

4. 已知(SP)=2000H,(SS)=5000H,(52000H)=4500H,(DS)=4000H,(BX)=1200H,则POP [BX]指令执行完后,(SP)=2002H ,(41200H)= 4500(一个字的内容)。

5. 已知AL=35H,DL = 29H

执行:

ADD AL,DL

DAA

上述程序段执行后,AL= 64h,CF= 0。

6. 设AX=6FF8H,CF=1

MOV DX,80

XOR DH,0FFH

SBB AX,DX

上述程序段执行后,(AX)=7078h ,CF=1 。

7. 设:

XOR AX,0

MOV BX,1

MOV CX,10

LOP: ADD AL,BL

INC BL

INC BL

LOOP LOP

问: (1)该程序完成的功能是什么?  完成的功能是求 10 个奇数的累加和。

(2)程序执行后(AX)=100 。

五、程序填空题(每小题6 分,共12 分)

1. 已知数据段定义如下:

DATA SEGMENT

   ORG 20H  

  DA1 DB 12,34

  DA2 DB 56,78

  ADRR DW DA1,DA2

DATA ENDS

为使ADDR+2 字存储单元中存放的内容为“0022H”,上述空格中应填写什么语句?

2. 下列程序实现把20 个字符“A”的字符串从原缓冲区传送到目的缓冲区的功能,试将程序中的空白处填上适当的指令(每一空只填一条指令)。

 1 DATA SEGMENT ;define data segment
 2 
 3     SOURCE_STRING DB 20 DUP(‘A’)
 4 
 5 DATA ENDS
 6 
 7 
 8 EXTRA SEGMENT ;define extra segment
 9 
10     DEST_STRING DB 20 DUP(?)
11 
12 EXTRA ENDS
13 
14 
15 CODE SEGMENT ;define code segment
16 
17 ASSUME CS:CODE,DS:DATA,ES:EXTRA
18 
19  START:MOV AX,DATA
20 
21         MOV DS,AX
22 
23         MOV AX,EXTRA
24 
25         MOV ES,AX
26 
27         __mov si,offset SOURCE_STRING__
28 
29         LEA DI,DEST_STRING
30 
31         CLD
32 
33         MOV CX,20
34 
35         __rep movsb__
36 
37         MOV AH,4CH
38 
39         INT 21H
40 
41 CODE ENDS
42 
43 END START

六、编程题(共22 分)

1. 编写程序段,将标志寄存器中的高8 位和低8 位互换。(5 分)

 1 pushf
 2 
 3 pop ax
 4 
 5 ; 直接这一句就行了XCHG AH
 6 
 7 mov bl,ah
 8 
 9 mov bh,al
10 
11 push bx
12 
13 popf

2. 数据区定义如下:

DATA SEGMENT

  ARRAY DB 23H,24H,25H,26H

  DISP DB 30 DUP(‘ ’),‘$’

DATA SEGMENT

编写程序段,将此数据区复制10 次,并将结果显示出来。(5 分)

1 CLD
2 LEA SI,ARRAY
3 LEA DI,DISP
4 MOV CX,10
5 REP MOVSB
6 MOV AH,09H
7 INT 21H

3. 数据区中首地址为ARRAY 的N 字数组,定义如下:

DATA SEGMENT

  ARRAY DW 23,-20,130,-5,…,326,-2110 ;表示N 个带符号数

  CUNT EQU $-ARRAY

  RESUT DB ? ;存放正数的个数

  DB ? ;存放’0’的个数

  DB ? ;存放‘负数’的个数

DATA ENDS

试编写一个程序,统计ARRAY 数据区中正数、负数及“0”的个数,结果送入RESUT 起始的三个字节单元中(12 分)。

 1 DATA SEGMENT
 2 ARRAY DW 23,-20130,-5,…,326,-2110
 3 COUT EQU $-ARRAY
 4 RESUT DB?
 5 DB?
 6 DB?
 7 DATA ENDS
 8 CODE SEGMENT
 9 ASSUME CS:CODE,DS:DATA
10 START: MOV AX,DATA
11 MOV DS,AX
12 MOV AX,0
13 MOV BX,0
14 LEA SI,ARRAY
15 MOV CX,CUNT
16 SHR CX,1
17 LOP: CMP WORD PTR[SI],0
18 JZ ZERO
19 JNS PLUS
20 INC BL
21 JMP NEXT
22 ZERO: INC AH
23 JMP NEXT
24 PLUS: INC AL
25 NEXT: ADD SI,TYPE ARRAY
26 LOOP LOP
27 MOV RESUT,AL
28 MOV RESUT+1,AH
29 MOV RESUT+2,BL
30 MOV AH,4CH
31 INT 21H
32 CODE ENDS
33 END START

 

转载于:https://www.cnblogs.com/x54256/p/8146045.html

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值