. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  请问一个概念术语,“8位位移”的含意?  [已解决] 回复[ 3次 ]   点击[ 347次 ]  
philmei
[帖 主]   [ 发表时间:2007-12-03 20:08 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:10
注册日期:2007-11-26 03:32
引书中P167中的一段:
指令“jmp short 标号”的功能为:(IP)=(IP)+8位位移
(1)8位位移=“标号”处的地址---jmp指令后的第一个字节的地址;
(2)short指明此处的位移为8位位移;
(3)8位位移的范围为-128~127,用补码表示;
(4)8位位移由编译程序在编译时算出。

下文还有个16位位移。

我对书中的描述不是很理解,我的理解是8位位移就是一个字节,因为一个字节是8位。对于,(1)(2)(3)(4)中的描述不懂了,我知道我理解的不对,请前辈们指教。谢谢!
philmei
[第1楼]   [ 回复时间:2007-12-03 20:19 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:10
注册日期:2007-11-26 03:32
我又细考虑了一下,但不确定,这里的8位位移是不是指FF的最大值?即256个字节,也就是说,当“jmp short 标号”指令执行后,IP的变化范围是在“jmp short 标号”指令后的第一个字节算起,上+(-128),下+127,的范围内。
也就是说“jmp short 标号”的活动范围是(-128~127)
不知道我理解的对不,请前辈们指教,谢谢!
bloom
[第2楼]   [ 回复时间:2007-12-03 21:30 ]   [引用]   [回复]   [ top ] 
荣誉值:129
信誉值:0
注册日期:2007-07-12 18:33
楼主对jmp的意思基本理解了,但是描述的不是很准确,8位位移表示的是256个字节空间,并不是256个字节。
IP的变化范围为 下[0,127] 上[-1,-128] 之间。

以下为一种边界情况,可做为参考进而思考.
--------------------------------
-u
0B7E:0000 B87C0B        MOV     AX,0B7C
0B7E:0003 90            NOP
0B7E:0004 EBFD          JMP     0003
0B7E:0006 90            NOP
--------------------------------
-u
0B7E:0000 B87C0B        MOV     AX,0B7C
0B7E:0003 90            NOP
0B7E:0004 EB00          JMP     0006
0B7E:0006 90            NOP
philmei
[第3楼]   [ 回复时间:2007-12-10 09:12 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:10
注册日期:2007-11-26 03:32
此贴由 贴主 于 [ 2007-12-10 09:12 ] 结贴。 结贴原因:问题已解决
得分情况: 2楼(bloom):4分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved