|
主题 : : 让我惊恐一世的疑问 求解救 [待解决] |
回复[ 6次 ]
点击[ 322次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-09-08 10:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-09-05 09:58 |
jmp dword ptr 内存单元的地址(段间转移)
功能:从内存单元地址处存放着两个字,高地址处的字是转移目的的段地址,低地址处事转移的目的偏移地址。
(CS)=(内存单元+2)
(IP)=(内存单元地址)
内存单元地址可用寻址方式的任一格式给出
比如:下面的指令
mov ax,0123H
mov ds:[0],ax
mov word ptr ds:[2],0
jmp dword ptr ds:[0]
执行后,(CS)=0,(IP)=0123H CS:IP指向 0000:0123
为什么会是这样的答案呢 各路神侠 帮帮忙啊 | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-09-08 10:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-09-05 09:58 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-09-08 12:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
怎么不是这样呢,但凡是用到段地址的,段地址在高十六位,Ip在低十六位,栈也是。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2011-10-14 12:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-10-12 17:21 |
这位同学估计没有好好看书,还没有弄明白jmp dword ptr的原理 | | |
|
|
|
|
[第4楼]
[ 回复时间:2011-10-14 12:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-10-11 19:38 |
(cs)=(内存单元+2) 就是指令中的 mov word ptr ds:[2],0 , 所以(cs)=0
(ip)=(内存单元地址) 就是指令中的 mov ds:[0],ax ,所以(ip)=0123h | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-12-14 10:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
data segment
01 23 00 00
;序列:0 1 2 3
data segment
mov ax,0123H
mov ds:[0],ax
mov word ptr ds:[2],0 ;向 data 序列第2开始 置 零,也就是 第3个字节和第4个字节为0
jmp dword ptr ds:[0] ;序列第0和第1为 IP, 序列第2和第3 为 CS。
凡是用到段地址的,段地址在高十六位,Ip在低十六位,栈也是
楼主估计是 数 字节的时候, 直接理解为:
data segment
01 23 00 00
;序列:1 2 3 4
data segment
这是不对的。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-12-27 19:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-12-27 19:27 |
内存数据 23 01 00 00 ;高高低低存放原则
内存地址 0 1 2 3
CS<-0000,IP<-0123 ; | | |