. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->标志寄存器
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点11.1 最后一句指令的答案为什么是0,1,0?  [已解决] 回复[ 2次 ]   点击[ 306次 ]  
yangbin990
[帖 主]   [ 发表时间:2011-11-04 04:24 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2011-08-30 04:54
ZF   PF   SF
sub al,al   ;1    1    0       ;
mov al, 1   ;1    1    0
push ax     ;1    1    0
pop bx      ;1    1    0
add al, bl  ;0    0    0       ;al 是0,  bl是1, 相加完后结果是2
add al, 10  ;0    1    0       ;al 是2,  相加完后结果是12, 二进制00001100  
mul al      ;0    1    1       ;***我的答案   al 是12, 相乘后结果是144, 二进制10010000
mul al      ;0    1    0       ;***网上的答案 

以上是我自己的分析,最后一句重复哦两边,第一遍是我自己的答案,第二遍是网上的答案。
不同的地方是在SF, 我觉得应该是1呀,可为什么网上的答案是0。不知道原因是什么?
相乘后结果是144, 二进制10010000, 最左位是1,也就是符号位是负数呀。
请知道的帮忙解释一下, 谢谢
yangbin990
[第1楼]   [ 回复时间:2011-11-09 17:15 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2011-08-30 04:54
mul al     ; ZF=0 PF=1 SF=0 这是一个8位的乘法,结果会放在ax中,也就是其结果默认是16位;那么这个结果的SF值就要由16位中的最高位来决定,所以SF=0;ax = 0090h(0000000010010000b)最高位为0 那么非负sf=0
yangbin990
[第2楼]   [ 回复时间:2011-11-09 17:16 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2011-08-30 04:54
此贴由 贴主 于 [ 2011-11-09 17:16 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved