汇编——模拟试卷一

一、选择题

1. 指令指针寄存器是(C)。

A. BP   B. SP  C. IP   D. PSW

1 BP寄存器是用来直接对栈进行寻址的,一般配合SS(栈段寄存器)一起用
2 SP寄存器是栈指针,SP始终指向栈顶(push操作时先将sp+2然后在放入数据,push操作时先将数据取出然后将sp-23 IP寄存器是指针寄存器,一般配合CS一起用,共同指向代码段。
4 PSW没听说过
5 
6 指令指针当然是操作代码的呀
View Code

2. DA1 DB 67H

 NUM EQU 80H

则执行AND DA1,NUM 语句后DA1 中的内容是(D)。

A. E7H     B. 80H    C. 67H     D. 0

1 我一开始看成add了
2 
3 AND DA1,NUM
4 
5 DA1 = 67H ==> 0110 0111
6 
7 NUM = 80H ==> 1000 0000
View Code

3. 与指令MOV AX,NOT 0F0H 等效的汇编语言指令是(B)。
A. MOV AX,0FH       B. MOV AX,0FF0FH
C. MOV AX,000FH   D. MOV AX,0F0H

1 MOV AX,NOT 0F0H    ; 将0F0H取反,赋值给AX
2 ; 00F0H取反 ==> FF0FH 
View Code

4. 一个有16 个字的数据区,它的起始地址是70A0H: DDF6,则这个数据区最末一个字单元的物理地址是(C)。

A. 7E806H     B. 7E814H

C. 7E815H     D. 7E80BH

1 最末一个字单元的物理地址 = 起始地址 + 数据区大小 - 1字大小(1字=2B)
2                          = 70A00+DDF6 + 30 
3                          = 7E7F6
View Code

5. 可用作基址变址寻址或寄存器间接寻址的寄存器是(D)。

A. AX,BX,CX,DX     B. DS,ES, CS,SS

C. SP,BP,IP,BX         D. SI,DI,BP,BX

6. 在串操作指令中,下列描述中不正确的是(C)。

A. REP MOVSB     B. REP STOSB    C. REPE CMPSB     D. REP LODSB

1 A. REP MOVSB   ; 字符串传送指令,这条指令按字节传送数据。 
2   
3 B. REP STOSB ; 从EDI所指的内存开始,将连续的ECX个字节写成AL的内容,多用于清零
4    
5 C. REPE CMPSB   ; repe是一个串操作前缀,它重复串操作指令,每重复一次ECX的值就减1,一直到CX为0或ZF为0时停止。 cmpsb是字符串比较指令,把ESI指向的数据与EDI指向的数一个一个的进行比较。 
6 
7 ; 当repe cmpsb配合使用时就是字符串比较啦,当相同时继续比较,不同时不比较 
8   
9 D. REP LODSB
View Code

7. ORG 0030H

 DA1 DB 0,‘0’,30H

偏移地址为0030H 字存储单元的内容是(A)。

A. 3000H     B. 00H    C. 0030H     D. 3030H

1 '0'的ascii码是30
2 
3 高位字节 --> 低位字节 3000H
View Code

8. 编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令是(D)。

A. CMP   B. SUB  C. AND   D. MOV

1 CPU的条件(if)判断是通过标志寄存器(flag寄存器)来实现的
2 只有add、submuldivincor、and这些操作会影响flag寄存器的值
3 movpush、pop等传送指令不修改标志寄存器的信息。
View Code

9. 将高级语言的程序翻译成机器码程序的实用程序是(A)。

A. 编译程序   B. 汇编程序  C. 解释程序   D. 目标程序

1 编译器生成的文件为目标文件
View Code

10. 设DS=lE4AH,偏移地址为0056H,该字节的物理地址为(D)。

A. 1E4A6H   B. 1E456H  C. 1E556H   D. 1E4F6H

1 物理地址 = 1E4A0H + 0056H = 1E4F6
View Code

11. 假设下列指令中所用的标识符类型均为字类型属性的变量,下述指令中正确的指令是(B)。

A. MOV WORD_DA1,WORD_DA2

B. MOV WORD_DA [BX+4*4] [DI],SP

C. MOV AX,WORD_DA [DX]

D. MOV [BX] [SI],3

1 寻址方式的几种不同写法:
2 [bx+si]
3 [bx][si]
4 [bx].idata
5 [bx].idata[si]
View Code

12. 当程序顺序执行时,每取一条指令语句,IP 指针增加的值是(D)。

A. 1   B. 2  C. 3   D. 由指令长度决定的

13. 若AX=349DH,CX=0FH。则执行指令AND AX,CX 后,AX 的值是(B)。

A. 349DCH   B. 000DH  C. 049DH   D. 0240H

1 AX = XXXX XXXX XXXX 1101
2 BX = 0000 0000 0000 1111
3 
4 AND AX,BX
5 
6 AX = 0 0 0 1101 ==> 000D
View Code

14. 在下列四种描述中,不重复执行循环的是(D)。

A.   MOV CX,0

LOP: LOOP LOP

B.   MOV CX,-1

LOP: LOOP LOP

C.   MOV CX,1

LOP: LOOP LOP

D.   MOV CX,2

LOP: LOOP LOP

1 A、B是死循环,C只循环一次,D循环两次
View Code

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

A. (AX)=0050H   B. (AX)=0012H  C. (AX)=1234H   D. (AX)=3412H

1 MOV AX,[BX]       ; 将20050处的字型数据赋值给AX寄存器。
2 
3 ; 字型单元==>高位+低位=3412H
View Code

16. 设(AX)=0FC77H,(CX)=504H,CF=1,执行SAR AX,CL 指令后,AX 的值是(C)。

A. FFC8H     B. FFC9H    C. FFC7H     D. FCC8H

17. 假设字节单元(02398H)=12H,(02399H)=34H,(0239AH)=56H,则(02399H)字单

元的内容是(C)。

A. 3412H   B. 3456H   C. 5634H   D. 1234H

1 高位单元(0239A) + 低位单元(02399H)
View Code

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

A. 字   B. 双字  C. 字节   D. 四字

1 WORD PTR    ; 声明是字类型
2 
3 BYTE PTR    ; 声明是字节类型
View Code

19. 下列4 条指令中,错误的指令是( )。

A. SUB CX, DX   B. MOV AX, SS:[DX]

C. SHL AX, 1     D. ADD AX,[BP+SI]

1 A. SUB CX, DX         ; 指令含义:CX = CX - DX
2 B. MOV AX, SS:[DX]    ; []中不能加DX,[SI,DI,BP,BX],所以B是错的
3 C. SHL AX, 1         ; 逻辑左移
4 D. ADD AX, [BP+SI] ; (AX) = (AX) + ((DS)*16 + (BP+SI))
View Code

20. 若AX=912DH,CX=0FH,执行指令OR AX,CX 后,AX 的值是(B)。

A. 000DH   B. 912FH   C. 912AH   D. 002FH

1 AX = 1001 0001 0010 1101
2 BX = 0000 0000 0000 1111
3 与操作 ==> CX = 1001 0001 0010 1111 ==> 912F
View Code

二、填空题

1. 在8086/8088 汇编语言中,串操作指令中搜索字符串指令的助记符是   SCAC      

2. 当发生除法溢出时,OF=    1     。    

1 发生溢出,OF=1
View Code

3. 指令JMP WORD PTR [BX]属于   段内间接   寻址

5. DD 伪指令中定义的每个操作数占有 8 个字节。

1 DD ==> 伪指令,双字
2 
3 DW ==> 伪指令,字
4 
5 DB ==> 伪指令,字节
View Code

1. ARRAY2 DB 10H,20H,30,40H

 ARRAY3 DW 20DUP(0,1,2,DUP(2))

MOV BL,SIZE ARRAY2

MOV CL,SIZE ARRAY3

上述两条指令的等效指令是什么?

1 LENGTH 是汇编语言里的一个运算符,如果一个变量已用重复操作符DUP说明其元素个数,则利用LENGTH运算符可以得到这个变量中元素的个数,如果未用DUP说明,则LENGTH得到的结果总是1
2 
3 TYPE 是指这个东西的类型占多少个字节
4 
5 SIZE = LENGTH * TYPE
View Code

2. 请指出下述两条伪指令语句的区别。

COUNT1 DB 48H

COUNT2 EQU 48H

1  COUNT1 作为地址,在该字节的存储单元中存放数据48H;
2 COUNT2 作为符号名,数据48H直接赋给COUNT2。
View Code

3. 请写出完成下列操作所选用的指令。

(1)将AX 的内容减去7A30H 和上次运算的借位。

(2)将变量名TABL 的段地址送AX。

11SBB AX,7A30H
2 
32MOV AX,SEG TABL
View Code

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

1.

 1 MOV AH, 1        
 2 
 3 INT 21H
 4 
 5 MOV BL, AL        
 6 
 7 MOV AH,1        
 8 
 9 INT 21H
10 
11 ADD AL,BL        
12 
13 AAA

上述程序完成的功能是什么?  从键盘上输入两个一位数,然后相加,并把结果放在AH 和AL 中

1 AAA码(非压缩BCD码调整):
2 if(al的低4位 > 9 || af=1){
3     al += 6
4     ah +=1
5     al的高4位清零
6     cf = 1
7     af = 1
8 }
View Code

2. 现有下列程序段:

 1 MOV AX,1234H        ; AX=1234H
 2 
 3 MOV DX,4578H        ; DX=4578H
 4 
 5 MOV CL, 04            ; CL = 04H
 6 
 7 SHL DX,CL            ; 逻辑左移4位 DX=0101 0111 1000 0000B = 5780H
 8 
 9 MOV BL,AH            ; BL=12H
10 
11 SHL AX,CL            ; AX=2340H
12 
13 SHR AX,CL            ; AX=0234H
14 
15 OR DL,BL            ; DL=1000 0000 BL=0001 0010 or操作 ==> DL=1001 0010

试问上述程序段运行后,(AX)=  0234H   ,(BL)=   12H  ,(DX)=  5792H  

3. 假设数据区有:???

DA1 DB 56H

DA2 DB 34H

DA3 DB ?

DA4 DB ?

(1)下列程序段完成的功能是什么?

(2)程序段执行后DA3、DA4 字节单元的内容是什么?

 1 MOV AL,DA1            ; (AL)=56H '+'
 2 
 3 ADD AL,DA2            ; (AL)=(AL)+34H=8AH  DA1 '+' 结果='-' 溢出
 4 
 5 JO NEXT                ; JO==>溢出则跳转 
 6 
 7 MOV DA3,AL
 8 
 9 MOV DA4,0
10 
11 JMP EXIT
12 
13 NEXT: MOV DA4,1    ; DA4==>1
14 
15 EXIT: HLT            ; HLT==>处理器“暂停”指令

4. 已知(AX)=4321H

1 INC AX        ; 4322H
2 
3 NEG AX        ; BCDEH
4                   
5 DEC AX        ; BCDDH
6                   
7 NEG AX        ; 4323H

上述几条指令执行后,(AX)=  4323H  

5. 震惊:算数左移和逻辑左移竟然一样

 1 MOV AX,2        ; AX=2
 2 
 3 MOV DX,AX        ; DX=2
 4 
 5 SAL AX,1        
 6 
 7 SAL AX,1        ; 算数左移2位,相当于原数*4  AX=0008H
 8 
 9 ADD AX,DX        ; AX=AX+DX=000AH
10 
11 SAR AX,1        ; AX=X X X 0101B=0005H

问:(1)上述程序段执行后完成什么功能?  原数*5/2

(2)程序段执行后AX 寄存器的内容是多少?  AX=0005H

6. 设(BX)=76D1H,指令:

MOV CL, 7

SHR BX, CL  ; 右移7位

执行后,(BX)=  00edh  

7.  SUB AL,AH

  DAS

若指令执行前,(AL)=86H,(AH)=07H;

问:上述指令执行后,(AL)= 79,(CF)=1 ,(AF)= 1。

1 DAS指令(校正2个组合bcd码直接相见的结果):
2 if(al&0fH > 9 || af=1){
3     al -= 6
4     af = 1
5     cf = 0
6 }if(al > 9fH || cf=1){
7     al -= 60
8     cf = 1
9 }
View Code

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

1. 以DA 为起始地址的数组中存放的N 个有符号数据,下面程序完成了找出N 个数中的最大和最小值分别送入AH 和AL 中。请将程序段补充完整(每一空白处只填一条指令)。

 1 DA DB 1234,-24,6A,…,98 ;N 个有符号数据
 2 
 3 CUNT EQU $ -DA
 4 
 5  6 
 7 MOV SI,ADR
 8 
 9 MOV CX,CUNT
10 
11 MOV BH,[SI]
12 
13 MOV BL,BH
14 
15  LOP1: __LODSB__  ; INC SI , MOV AL
16 
17         CMP AL,BH
18 
19         __JLE LOP2__
20 
21         MOV BH,AL
22 
23         __JMP LOP3__
24 
25  LOP2: CMP AL,BL
26 
27         jGE LOP3
28 
29         MOV BL,AL
30 
31  LOP3: DEC CX
32 
33         __JNZ LOP1__
34 
35         MOV AX,BX

2. 下列程序段完成:2+4+…+20 共10 个偶数的累加和。请将程序段补充完整(每一空白处只填一条指令)。

 1 DATA SEGMENT
 2 
 3 SUM DW?
 4 
 5  6 
 7 XOR AX,AX            ; ax=0
 8 
 9 __mov cx,10__
10 
11 MOV BX,2
12 
13  LOP1: ADD AX,BX
14 
15         INC BX
16 
17         INC BX
18 
19         __dec cx__
20 
21         JNZ LOP1
22 
23         MOV SUM,AX

六、编程题(本大题共3 小题,共22 分)

1. 试编写一程序段,将标志寄存器中的符号位SF 置‘1’(5 分)。

1 pushf
2 
3 pop ax
4 
5 or ax,0000 0000 1000 0000
6 
7 push ax
8 
9 popf

2. 假设:

DATA SEGMENT

ARRAY DB ‘XXXX…XX’

CUNT EQU $ - ARRAY

DATA ENDS

试编写一个程序段,完成用空格将以ARRAY 为起点字符区中的字符清除(5 分)。

 1 mov cx,cunt
 2 
 3  s: mov ax,data
 4     mov ds,ax
 5     
 6     mov si,offset array
 7     mov byte ptr [si],' '
 8     
 9     inc si
10     
11     loop s

3. 定义一个数据区,它包含有23H,24H,25H 和26H 四个字符数据,把这个数据区复制20次,并显示出复制结果(12 分)。

 1 ASSUME CS:CODE, DS:DATA, ES:DATA
 2 
 3 DATA SEGMENT
 4     ARRAY DB 23H,24H,25H,26H
 5     DISP DB 30 DUP(' '),'$'
 6 DATA ENDS
 7 
 8 CODE SEGMENT
 9 
10  START: MOV AX,DATA
11         MOV DS,AX
12         
13         ...
14         MOV DX,OFFSET ARRAY(或LEA ARRAY)
15         
16         MOV AH,09H
17         INT 21H
18 CODE ENDS
19 END START

 

posted @ 2017-12-23 22:17  想54256  阅读(2403)  评论(0编辑  收藏  举报