当前位置: 代码迷 >> 汇编语言 >> 汇编选择题,求高手解释(解1题送10分,多谢!)
  详细解决方案

汇编选择题,求高手解释(解1题送10分,多谢!)

热度:975   发布时间:2013-02-26 00:00:00.0
汇编选择题,求高手解释(解1题送10分,谢谢!)
最近学汇编,看了些题,有些不明白。 解释的越详细越好!
---------------------------------------------------------
1、 .DA – BYTE EQU THIS BYTE 
DA –WORD DW ′AB′,′CD′,′EF′,′GH′ 
. . . . . . . . 
MOV AL , DA–BYTE + 3 
MOV AH, BYTE PTR DA–WORD + 4  
上述二条传送指令执行后AX 中的内容是(D )
A .′DE′ B .′HC′ C .′CF′ D .′FC′ 

2、完成将累加器AL 清零, 并使进位标志CF 清零, 下面错误的指令是(A ) 
A .MOV AL, 00H B .AND AL , 00H 
C .XOR AL ,AL D .SUB AL, AL 

3、执行下面的程序段后, (AX) = ( B) 
TAB DW 1 , 2 , 3 , 4 , 5 , 6 
ENTRY EQU 3
MOV BX, OFFSET TAB 
ADD BX, ENTRY 
MOV AX, [ BX] 
A .0003H B .0300H 
C .0400H D .0004H 

4、MOV AL , 79 
ADD AL, 0B1H 
指令执行后, 设置的标志位CF 和OF 的值是(D ) 
A .CF = 0 OF = 1 B .CF = 1 OF = 1 C .CF = 0 OF = 0 D .CF = 1 OF = 0 

5、25 . DABY1 DB 12H, 34H , 56H , 78H 
DB $ - DABY1 
DABY2 DB 10H DUP (1 , 2 , 3 ) 

MOV DX, SIZE DABY1 
ADD DX, WORD PTR DABY1 + 4 
上述指令序列执行后, DX 的内容是( C) 
A .05H B .1005H C .0105H D .0202H 




------解决方案--------------------------------------------------------


第二题:因为MOV指令虽然能将AL清零,但MOV指令不会影响CF标志寄存器



第五题:SIZE是求 DABY1的字节,因为是DB,DB为1个字节,所以MOV DX, SIZE DABY1 (DX) = 1

DB $ - DABY1 表示当前地址减去 DABY1 的首地址,也就是求 DABY1 的长度(Length)
得出的值是4

ADD DX, WORD PTR DABY1 + 4,表示将(DX)加上DABY1开始的第4个位置的值,注意,位置是从0开始算起的,所以12H, 34H , 56H , 78H 分别为0、1、2、3,那么位置4就是DB $ - DABY1 求出的值,前面已经说过了,得出的值是4(也为04H)。
因为是WORD PTR ,所以还需要一个字节,也就是需要DB $ - DABY1,以及它下面的一个字节,那么DB $ - DABY1下面是DABY2 DB 10H DUP (1 , 2 , 3 ),也就是1、2、3、1、2、3(重复10次)这些 数,我们只需要第一个,第一个为1(01H)

这样两个值就知道了,一个是DB $ - DABY1 ,值为04H,另一个是01H。注意01是高字节,要放在高位,所以组合他们成为:0104H

现在可以简化成ADD DX, 0104H

前面已经知道DX的值为1
ADD,是加法,所以0104H加上1,的值为0105H,所以DX的值现在为0105H


------解决方案--------------------------------------------------------

第二题:因为MOV指令虽然能将AL清零,但MOV指令不会影响CF标志寄存器



第五题:SIZE是求 DABY1的字节,因为是DB,DB为1个字节,所以MOV DX, SIZE DABY1 (DX) = 1
 
DB $ - DABY1 表示当前地址减去 DABY1 的首地址,也就是求 DABY1 的长度(Length)
得出的值是4

ADD DX, WORD PTR DABY1 + 4,表示将(DX)加上DABY1开始的第4个位置的值,注意,位置是从0开始算起的,所以12H, 34H , 56H , 78H 分别为0、1、2、3,那么位置4就是DB $ - DABY1 求出的值,前面已经说过了,得出的值是4(也为04H)。
因为是WORD PTR ,所以还需要一个字节,也就是需要DB $ - DABY1,以及它下面的一个字节,那么DB $ - DABY1下面是DABY2 DB 10H DUP (1 , 2 , 3 ),也就是1、2、3、1、2、3(重复10次)这些 数,我们只需要第一个,第一个为1(01H)

这样两个值就知道了,一个是DB $ - DABY1 ,值为04H,另一个是01H。注意01是高字节,要放在高位,所以组合他们成为:0104H

现在可以简化成ADD DX, 0104H

前面已经知道DX的值为1
ADD,是加法,所以0104H加上1,的值为0105H,所以DX的值现在为0105H
  相关解决方案