. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
转移指令的原理
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
jmp short 标号的问题
[已解决]
回复[
2
次 ] 点击[
312
次 ]
a82225269
[帖 主]
[ 发表时间:2011-03-15 14:06 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2011-02-27 03:22
jmp short 标号对ip的修改范围是8位masm将其翻译为机器码是8位位移。我的问题是既然ip是16位寄存器jmp short 标号对应的机器码位8位那ip(16位)+位移(8位)位数都不相同何来相加呢,如果位移是-3相对应的jmp short 标号 的机器码位移11111101b(-3),ip (16位)为5(0000000000000101b)那相加出来的ip等于0000000100000010b(258)ip指向的是258而不是向前减3
zaixuexi
[第
1
楼]
[ 回复时间:2011-03-15 15:07 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28
1. 8位位移就一定是8位计算么?
最高位表示符号位
-3(原)->1111 1111 1111 1101(补)
+0000 0000 0000 0101
---------------------------------
1 0000 0000 0000 0010(补) OF=0(D15 XOR D14的结果),CF=1(D15产生进位了)
最高位D15是符号位,所以是+2
2. DEBUG下敲一敲
mov ax,5
add ax,-3
单步一下
a82225269
[第
2
楼]
[ 回复时间:2011-03-25 03:08 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2011-02-27 03:22
此贴由 贴主 于 [ 2011-03-25 03:08 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved