. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->标志寄存器
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点11.1最后一句mul al疑问  [待解决] 回复[ 16次 ]   点击[ 1240次 ]  
kingmoon
[帖 主]   [ 发表时间:2010-09-03 10:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-16 17:50
sub al,al ZF=1 PF=1 SF=0
mov al,1  ZF=1 PF=1 SF=0
push ax   ZF=1 PF=1 SF=0
pop bx    ZF=1 PF=1 SF=0
add al,bl ZF=0 PF=0 SF=0
add al,10 ZF=0 PF=1 SF=0
mul al    ZF=0 PF=1 SF=0

其实有疑惑: 最后一句 mul al 最后结果al=10010000最高位不是为1吗SF难道不是1?
求解答!
guoqi
[第1楼]   [ 回复时间:2010-09-13 22:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-09-13 22:29
最后结果 mul al 其结果放在ax中 为0000000010010000b最高位为0 那么非负sf=0
752052871
[第2楼]   [ 回复时间:2010-10-23 14:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-16 19:16
我也有同样的疑问。。。书上说的运算的结果,是要考虑整一个运算指令的操作的。如果我们细心看的话,mul 8位运算中明确写着——8位乘法,其结果在AX中,所以运算的结果如1楼所说。
masmaster
[第3楼]   [ 回复时间:2010-10-23 17:02 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
要看ax
xxlzty
[第4楼]   [ 回复时间:2010-11-23 20:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-13 03:06
sub al,al ZF=1 PF=1 SF=0    ;ax=0000  sub运算指令对标志寄存器有影响
mov al,1  ZF=1 PF=1 SF=0    ;ax=0001  mov传送指令对标志寄存器无影响
push ax   ZF=1 PF=1 SF=0    ;ax=0001  push入栈指令对标志寄存器无影响
pop bx    ZF=1 PF=1 SF=0    ;ax=0001 bx=0001 pop出栈指令对标志寄存器无影响
add al,bl ZF=0 PF=0 SF=0    ;ax=0002 add指令对标志寄存器有影响,转成二进制0010有1个1为倚数
add al,10 ZF=0 PF=1 SF=0    ;ax=0012 add指令对标志寄存器有影响,转成二进制1100有2个1为偶数
mul al    ZF=0 PF=1 SF=0    ;ax=0144 add指令对标志寄存器有影响,转成二进制10010000有2个1为偶数

以上ax值为10进制值,非16进制
trapdoor
[第5楼]   [ 回复时间:2010-12-14 13:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-06 12:31
那么也就是说相关指令影响标志寄存器,不是看指令中的寄存器,而是看指令的结果寄存器吗?
86188281
[第6楼]   [ 回复时间:2011-04-14 10:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-07 15:45
书上原文:
SF 记录相关指令执行后,其结果是否为负
----------------------------------------
mul al  执行后 ax = 144 = 0090H
ax是执行后结果,最高位是0,所有sf =0
sabo
[第7楼]   [ 回复时间:2011-04-14 22:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-14 22:05
mul al 后,ax=144(90H),(10010000)B,最高为1结果为负。SF=1 PF=1
wlzaini1314
[第8楼]   [ 回复时间:2011-04-26 15:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-15 22:31
看书 P227页 
比如:
mov al,10000001b
add al,1
执行后,结果为10000010b,sf=1,表示指令进行是有符号运算,那么结果为负数。
假设 ax=1000 0000 0000 0000  AL完成以上指令 AX=1000 0000 1001 0000
我就怀疑了  你们怎么确定 AH 的第8位 是1或是0呢
chengdudefengche
[第9楼]   [ 回复时间:2011-05-22 18:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-11 17:26
mul al执行后,将结果存在ax中,
所以是整个ax的值为0000 0000 1001 0000 ,就算是结果用不到前面的ah部分,也会将其修改掉。
tianxing9151
[第10楼]   [ 回复时间:2011-06-16 20:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-23 00:14
SF应该看的是第7位而不是最高位,是转换成二进制数的第7位。
tianxing9151
[第11楼]   [ 回复时间:2011-06-16 21:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-23 00:14
应该是第6位不是第7位说错了
zuoan0818
[第12楼]   [ 回复时间:2012-01-07 19:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-01-07 19:11
结果要看AX,另外答案有错误的地方后两个al和AX应是12和144后面不加H,都是10进制的。
在DEBUG里任何没有后缀的常熟都被认为是16进制,但是正统的汇编语言如果不行后缀会识别为10进制,答案作者可能有纰漏!
ceiba
[第13楼]   [ 回复时间:2014-04-21 17:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-02-17 17:20
请各位去查mul指令的详细说明,实际上mul指令只影响cf和of,对其它的条件码位无定义,即指令执行后这些条件码位的状态不定。本题中mul al我上机验证的结果为zf=0,pf=1,sf=1,但实际上是无意义的。
另外,第2版P214中认为div会影响标志寄存器,实际上div对所有条件码均无定义。
条件码指:of,sf,zf,cf,af,pf.
821006520
[第14楼]   [ 回复时间:2014-07-19 21:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-07-06 15:04
144为16进制 转化为2进制  1 01000100   从0开始第七位为0 所以sf为0
18665801529
[第15楼]   [ 回复时间:2016-01-08 12:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2016-01-08 12:24
13楼正解,乘法指令对sf无意义,sf那个值还是上条指令的,我忙了两天才搞明白晕啊
michaellee21
[第16楼]   [ 回复时间:2017-04-11 20:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2017-03-09 22:45
dos7.1的debug是NG,即是1,但是xp里面debug是0
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved