汇编语言 第九章 JMP不是很懂
第九章中 JMP中的一个小节最近看的迷糊了,
第一句(1)中: 那个是减号还是什么? 8位位移=标号处的地址—jmp指令后的第一个字节的地址?
我也不知道我要问什么了......就解释一下头两句话的意思吧
本帖最后由 nios 于 2013-5-15 17:13 编辑
就是用两点间的地址定位(从那个地址开始,到那个地址结束),然后用这之间的机器码做减法。向上跳减出来是负数(用补码表示),向下跳减出来是正数(正常码)。看图
红圈里是机器码.一次数一个字节例如:EB 而不是数一个字EB 03
short 位移8位,也就是指跳的范围是-128~127
不知道我说对没有?还请各位斧正。
nios 发表于 2013-5-15 16:55 static/image/common/back.gif
就是用两点间的地址定位(从那个地址开始,到那个地址结束),然后用这之间的机器码做减法。向上跳减出来是 ...
我看了看你的解释 加上之前自己想的 书上说:标号处的地址-jmp指令后的第一个字节的地址
6-3=3,这个就是:标号处(jmp s0=偏移地址0006)6-3(jmp s0指令后的第一个字节地址0003)=3???可以这样理解吧?
后面同上
summyu 发表于 2013-5-15 18:28 static/image/common/back.gif
我看了看你的解释 加上之前自己想的 书上说:标号处的地址-jmp指令后的第一个字节的地址
6-3=3,这个 ...
我想是对了,再听听别的大牛的解释? 我只是路过打酱油的。 上面的二位讲解得好清楚了 呼呼。。。。楼主,我也正在学这章,卡在这章第三天了,呼呼。。。。。
我个人觉得,这个位移多少,没必要一定能自己计算出多少来,只要知道这是编译器在编译的时候帮你把这个值算出来了然后换成机器码就行了。我个人觉得就算你自己知道计算这个值,是没有实际意义的吧?毕竟我们不会去改机器码,要改也是改汇编语句,改的时候只要清楚这个转移范围就好。只要汇编JMP改对了,CPU自然跳转到你要执行的目的地址。不知道我这个想法是不是对的?还请大家指正啊
今天有点小兴奋,居然写了几个彩色的字母在屏幕上了。哈哈。。。。 依据位移转移的转移指令,都是段内转移,(对吧?)
反正这种转移指令格式上在汇编语句中带都“标号”的,
所以我个人觉得,在编写或者修改这类汇编语句的时候,
我们只要知道CPU她执行的原理就可以了,在真正的实际应用中,不会计算这个位移,或者说不知道这个位置的值是多少,这个跟我们没什么关系吧。
由于没有实战过,没有写过这类底层代码,只是个人这么猜想。
还是请经验丰富的大侠们,说说吧 请问 移动8位 怎么又变成了 -128~127? 感谢楼主分享,新手学习,感谢楼主分享!!!!!
RE: 汇编语言 第九章 JMP不是很懂
蜗牛8 发表于 2013-5-15 22:09 static/image/common/back.gif呼呼。。。。楼主,我也正在学这章,卡在这章第三天了,呼呼。。。。。
我个人觉得,这个位移多少,没必 ...
是啊 我是这么想过,毕竟这个位移由编译器算出。 但了解一下还是可以有得,,,
RE: 汇编语言 第九章 JMP不是很懂
zqzq 发表于 2013-5-16 00:59 static/image/common/back.gif请问 移动8位 怎么又变成了 -128~127?
8个1。。 11111111 1.2.4.8.16.32.64.128
summyu 发表于 2013-5-16 09:27 static/image/common/back.gif
8个1。。 11111111 1.2.4.8.16.32.64.128
2的8次方,就是128,然后考虑负数就是-127~128这是一个范围。 我只是路过打酱油的。 楼主加油,鱼C加油!我们都看好你哦! 无回帖,不论坛,这才是人道。 无回帖,不论坛,这才是人道。 楼主加油,鱼C加油!我们都看好你哦! 1楼正解!~~~ 无回帖,不论坛,这才是人道。
页:
[1]
2