. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
标志寄存器
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
检测点11.1
[待解决]
回复[
5
次 ] 点击[
419
次 ]
pediyzhi
[帖 主]
[ 发表时间:2012-08-31 21:02 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-06-06 13:58
最后一个mul al 不管是144h或者是90h
最后的sf都是0
但是如果不用mul指令 的话 SF就会改变.请问为什么
pediyzhi
[第
1
楼]
[ 回复时间:2012-08-31 21:05 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-06-06 13:58
为了测试我把指令改了下
assume cs:code
code segment
start: sub al,al
mov al,1
push ax
pop bx
add al,bl
add al,10
mul al
dec al
inc al
mov ax,4c00h
int 21h
code ends
end start
最后的指令得到的值是一样的
但是sf就变为1了,这是为什么啊难不成mul指令对sf标志位无效?
zhangjilin
[第
2
楼]
[ 回复时间:2012-09-06 16:39 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-09-01 11:24
两个正数相乘得到的一定是正数,我是这样想的。
zhangjilin
[第
3
楼]
[ 回复时间:2012-09-06 16:45 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-09-01 11:24
上面说错了,mul al的结果是保存到AX中的,所以要看AX的正负。
lishenycy
[第
4
楼]
[ 回复时间:2012-10-13 11:01 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-09-30 22:11
上面对了,mul al的结果是保存到ax中的,所以要看ax的正负,而此时ax为0000000010010000b最高位为0 那么非负sf=0;
而经过
dec al
inc al
运算后,结果存到了al中,此时al为10010000b最高位为1 那么为负sf=1;
1152659530
[第
5
楼]
[ 回复时间:2023-08-08 20:53 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2023-07-25 10:13
原来如此,话说补码的原理是什么?
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved