. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  让我惊恐一世的疑问 求解救  [待解决] 回复[ 6次 ]   点击[ 322次 ]  
jackli715239314
[帖 主]   [ 发表时间: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
  

为什么会是这样的答案呢 各路神侠 帮帮忙啊
jackli715239314
[第1楼]   [ 回复时间:2011-09-08 10:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-05 09:58
很期待各位高手的指点啊
chinatree
[第2楼]   [ 回复时间:2011-09-08 12:07 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
怎么不是这样呢,但凡是用到段地址的,段地址在高十六位,Ip在低十六位,栈也是。
szxian1985
[第3楼]   [ 回复时间:2011-10-14 12:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-10-12 17:21
这位同学估计没有好好看书,还没有弄明白jmp dword ptr的原理
hai1222
[第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
e56004474
[第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

这是不对的。
hrx207
[第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    ;
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved