汇编选择题,求高手解释(解1题送10分,多谢!)
发布时间:2010-06-14 15:51:45 文章来源:www.iduyao.cn 采编人员:星星草
汇编选择题,求高手解释(解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
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
MSN通讯协议逆向
MSN 进行数据通讯中,据说用了TWN认证,通过SSL/TLS连接到login.passport.com和 loginnet.passportr.com 等服务器。
...
-
win7+64位cpu的exe反汇编问题,多次问人,无果
vs20008写的一个很简单的c++控制台程序
平台是:win7 64位操作系统
用od进行反汇编,...
-
可能很白痴的问题:想给ax赋一个负数怎么做?
比如想要赋一个-5给ax,是不是只有求出这个-5的补码,然后mov进这个补码这一种方法?
------...
-
居然显示不出负数来,悲剧
Assembly code
.386
.model flat,stdcall
include kernel32.inc
includelib kernel32.lib
include ms...
-
call far ptr '标号'的问题[在线等答案]
为什么ax会是1010?不是1006??求详细解答
难道call far ptr不是执行了push cs,push ip,jm...
-
CPU的程序计数器PC和指令指针寄存器IP是一个东西吗?
看上去好像功能完全一样,又觉得不应该是一回事,求教
------解决方案----------...
-
菜鸟问题,高人来帮忙
编程,统计data段中数值为8的字节的个数,用ax保存结果
我的代码
Assembly code
assume cs:code,ds:data
data se...
-
一个死循环问题
什么原因造成内循环才刚循环一次还没完,到了loop s1的时候cx突然变成F?
Assembly code
assume cs:codesg,ds:datas...
-
初学MUL乘法指令,写法求解释下
MUL r8/m8 ;无符号字节乘:AX←AL×r8/m8
MUL r16/m16 ;无符号字乘:DX.AX←AX×r16/...
-
汇编如何 取到8051的P0口的内容呢?
Assembly code
ORG 0000H
AJMP START
ORG 0030H
START: MOV P0,#00H
LOOP: ...