汇编——模拟试卷四

一、单项选择题(每小题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
View Code

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
View Code

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寄存器
View Code

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定义
View Code

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
View Code

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 }
View Code

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的内存顺序 --> 3412
View Code

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 123456789
 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

 

posted @ 2017-12-26 20:08  想54256  阅读(2131)  评论(0编辑  收藏  举报