. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  8位位移=标号处的地址-JMP指令后第一个字节的地址,这个“8位位移”具体是什么含义?  [待解决] 回复[ 5次 ]   点击[ 594次 ]  
ycxdtdz
[帖 主] [ 发表时间:2012-08-11 15:10 ] 
荣誉值:0
信誉值:0
注册日期:2011-12-11 10:36
8位位移=标号处的地址-JMP指令后第一个字节的地址,这个“8位位移”具体是什么含义?4
ackzoro
[第5楼] [ 回复时间:2015-09-25 17:50 ] 
荣誉值:0
信誉值:0
注册日期:2015-01-07 21:39
8位位移,即8位长度的位移。

例如:
11110000

标号处的地址比较好理解,就是标号所在的偏移地址。

JMP指令后第一个字节的地址
这个需要解释下CPU运行指令的过程,首先会读入jmp指令存到缓存区,然后修改IP指向下一个指令
即ip = ip + jmp指令长度,然后再执行缓存区的jmp指令。
这就是为什么是JMP指令后的第一个字节的原因了。

上面的内容都明白了就比较好理解了。
举个例子
0BBD:0000  s: MOV AX, 0000H
0BBD:0003     JMP s
0BBD:0005     ADD AX, 0001H

s的偏移地址为 0000
读入jmp指令到缓存区后,偏移地址0003 + 2(jmp指令长度) = 0005H
8位位移等于多少?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved