离丶dong子 发表于 2012-5-1 20:07:29

汇编语言11.1检测点求指点,实在不明白.


这个题目谁会
sub al,al    ZF=1   PF=1   SF=0
mov al,1   ZF=0   PF=0   SF=0
后面的就不会了。
谁能给个详细的解释,我看了小甲鱼的答案,但是还是不懂啊。求调教啊。

hxs554f 发表于 2012-5-1 21:04:40

这是关键,其它应该没问题

wouiwhbn 发表于 2012-8-17 22:06:44

add al,bl      al=2   即00000010,
add al,10    al=12d   即00001100
mul al   ax=144d   即00000000 10010000 ,ax是16位的寄存器, sf要看所放寄存器的最高位是0还是1

如果。。。 发表于 2012-8-19 09:49:14

这主要是搞明白每步执行之后的结果是什么就好办了,我们慢慢分析
你看。从第一步开始。
         
sub al,al         ;al-al结果为0,所以zf=1,pf=1,sf=0
mov al,1         ;al=0000 0001      zf=0,pf=0,sf=0
push ax            ;因为push是传送指令,所以对标志寄存器没有影响,结
                        ;果还是zf=0,pf=0,sf=0

pop bx             ;(bx)=(ax)=0000,0000,0000,0001b
                         ;所以同上zf=0,pf=0,sf=0

add al,bl         ;也就是0000 0001+0000 0001=0000 0010b
                         ;所以 zf=0,pf=0,sf=0

add al,10          ;注意,这里的10 是十进制的换成二进制就是1010b
                         ;再加上al就是0000 1010(10的二进制)+0000 0010(al)=0000 1100b 所以zf=0,pf=1,sf=0
                     

mul al            ;因为是8位的乘法,所以一个默认放在al中,此时(al)=0000 1100b,再乘以al就是0000 1100b*0000 1100b
                        ;也就是0BH*0BH,就是两个十六进制的B相乘,结果是79H
                        ;存储在ax中,换成二进制就是 0000 0111 0000 1001b
                        ;所以,zf=0,pf=0,sf=0

这样说,你理解了吗?

离丶dong子 发表于 2012-8-21 18:01:15

如果。。。 发表于 2012-8-19 09:49 static/image/common/back.gif
这主要是搞明白每步执行之后的结果是什么就好办了,我们慢慢分析
你看。从第一步开始。
         


最后一个应该是 0CH * 0CH = 90H 。
因为1100b转换成16进制是C。不知道你是不是忽略了。
所以最后一个是 zf = 0, pf = 1, sf = 0.

特别谢谢你的解答。

如果。。。 发表于 2012-8-26 18:52:42

离丶dong子 发表于 2012-8-21 18:01 static/image/common/back.gif
最后一个应该是 0CH * 0CH = 90H 。
因为1100b转换成16进制是C。不知道你是不是忽略了。
所以最后一个是 ...

嗯嗯。对对,,。。。。是啊!
页: [1]
查看完整版本: 汇编语言11.1检测点求指点,实在不明白.