鱼C论坛

 找回密码
 立即注册
查看: 1973|回复: 7

jmp段间转移

[复制链接]
发表于 2013-3-9 16:24:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:code
code segment
start: mov ax,0
  jmp 1449H:0003H
  mov ax,1
s: inc ax
code ends
end start

今天看了jmp指令这章的视频,想总节一下jmp指令的用法,发现在编译器里有jmp 段地址:偏移地址会报错,
left operand must have segment 如果我直接在debug了输入这条指令就可以运行,百度了一下,网上没有人
问这样的问题=。=  求大神赐教。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-9 16:55:37 | 显示全部楼层
start: mov ax,1449H
        mov ds,ax
        mov ax,0
        mov bx,0003h
        jmp ds:[bx]
在编译器中这样不会报错,效果是一样的
编译器和debug还是有区别的···
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-9 22:56:22 | 显示全部楼层

大神, 不对啊,我试了一下,编译时不报错,可是结果转移的不是我给他的数值
assume cs:code
code segment
start:       
                mov ax,2000H
                mov ds,ax
                mov bx,0100H
                jmp ds:[bx]
               
               
                mov ax,1
        s:        inc ax
code ends
end start
执行完cs 没变,ip=b605不知道哪来的数值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-9 23:05:30 | 显示全部楼层
無涯 发表于 2013-3-9 22:56
大神, 不对啊,我试了一下,编译时不报错,可是结果转移的不是我给他的数值
assume cs:code
code segm ...

assume cs:code
code segment
start:        
                mov ax,2000H
                mov ds,ax
                mov bx,0100H
                jmp ds:[bx]
               
               
                mov ax,1
        s:        inc ax
code ends
end start
这是程序的全部代码吗?我怎么看不出来你想干什么?
这也不对啊,没有程序返回啊···  
mov ax,4c00h
int 21h
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-10 00:54:05 | 显示全部楼层
-搁浅的回忆 发表于 2013-3-9 23:05
assume cs:code
code segment
start:        

没打算干嘛 就是了解一下jmp指令的用法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-10 09:49:55 From FishC Mobile | 显示全部楼层
把书翻翻,查查段间转移的执行过程吧,貌似段间转移时是用标号所对应的段地址和偏移地址修改cs和ip的,记得不大清楚了,错了莫怪!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-10 11:25:55 | 显示全部楼层
↓《 发表于 2013-3-10 09:49
把书翻翻,查查段间转移的执行过程吧,貌似段间转移时是用标号所对应的段地址和偏移地址修改cs和ip的,记得 ...

段间转移有很多种方式的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-26 04:07:27 | 显示全部楼层
無涯 发表于 2013-3-9 22:56
大神, 不对啊,我试了一下,编译时不报错,可是结果转移的不是我给他的数值
assume cs:code
code segm ...

这样啊  地址0100保存的是什么值,JMP就跳到这个值的位置 加 [ ]就是取内存地址里面的值了
不加[ ]就能是跳到0100      JMP这个指令很好理解的,不必纠结,因为以后的保护模式不能乱跳了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 22:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表