|
主题 : : 试验13.3为什么要用add[bp+2] [待解决] |
回复[ 6次 ]
点击[ 579次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-12-18 16:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-26 22:22 |
前面用
mov bx,offset s-offset se
直接用
mov bx,offset s
然后在后面,直接将IP值改就是了,为什么要用相减,后面又再加的方法呢?
mov [bp+2],bx | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-12-18 21:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28 |
你那样写也没错.
但是因为是模拟loop,从理解loop的工作原理出发,你那样写就是按绝对偏移量来寻址了,可能会对一些浮动标号有影响,我没试过只是猜测了,呵呵. | | |
|
|
|
|
[第2楼]
[ 回复时间:2011-04-21 21:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-07-16 14:51 |
|
|
|
|
|
[第3楼]
[ 回复时间:2011-04-28 19:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-15 22:31 |
mov bx,offset s-offset se
s-se 就相当与 ah<bh 11章讲的 ah<bh得到的数是负数 add [bp+2],bx 不就相当于 [bp+2]-bx么
明白了嘛 | | |
|
|
|
|
[第4楼]
[ 回复时间:2011-06-28 21:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-06-25 01:04 |
..........
楼上些都答非所问!我来解释:
因为保存mov bp,sp 之前有个push入栈!!所以要向高位挪一个字! | | |
|
|
|
|
[第5楼]
[ 回复时间:2013-09-19 08:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2013-02-02 01:48 |
那能直接用add [sp],bx这样吗?就这用push bp了啊 | | |
|
|
|
|
[第6楼]
[ 回复时间:2013-09-26 21:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-04-01 23:16 |
同意1楼的,类似于jmp等转移指令的设计,loop指令也应该要方便程序段在内存中的浮动装配,使程序装在内存的中的不同位置都可正确执行 | | |