Chinaunix首页 | 论坛 | 博客
  • 博客访问: 512122
  • 博文数量: 161
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1947
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-25 01:20
文章分类

全部博文(161)

文章存档

2011年(44)

2010年(47)

2009年(48)

2008年(22)

我的朋友

分类:

2009-08-28 23:09:48

                  转移指令原理
概念:修改ip或同时修改cs ip的指令
转移行为分类:
只修改ip 段内转移 :jmp ax
同时修改cs ip  段间转移jmp 1000H:0
段内转移
段转移:ip -128--127
近转移:ip -32768--32767
8086cpu转移指令
无条件转移 jmp
条件转移
循环指令 loop
过程
中断
转移原理相同
 
1>
offset
由编译器处理,取得标号的偏移地址
例如:
start :mov ax,offset start
作业

2>jmp
jmp指令要给出两种信息
转移的目的地址
转移的距离

3>依据位移进行转移的jmp指令
jmp short 标号 ;实现段内短转移 ;short 说明是短转移
codesg segment  
start:
 mov ax ,0
 jmp short s   
 add ax,1
s: inc ax
codesg ends
翻译成机器码的一个问题?
0BBd:0003 EB03 jmp 0008
jmp short s 被汇编成jmp 0008 而机器嘛是eb03 !没有给定目的地址!
cpu是怎么样获得目的地址呢?
得出结论是cpu在执行jmp指令的时候不需要转移的目的地址!cpu最后是如何改变ip的呢
分析过程
从cs ip读取指令,指令缓冲期
ip=ip+指令长度,指向下一条指令
执行指令
jmp short s指令读取和执行过程
1(cs)=0bbd(ip)=0006 cs:ip指向的是eb03
2eb03送入指令缓冲器
3(ip)=(ip)+2 cs:ip add ax ,1
4执行指令eb03 (ip)=000bh cs:ip inc ax
分析可知执行eb 03 确实改变了ip ,依据03 告诉cpu要执行的指令向后移动3B
总结:
jmp short 标号 cpu执行并不包含要转移的目的地址!而是要转移的位移,是编译器根据标号计算出来的
 
4>转移的目的地址在指令中的jmp指令
段间指令(远转移) 同时修改cs:ip
jmp far ptr 标号
ea 0b01 bd0b jmp  0bbd:010b
    ip(l->h)    cs
5>转移地址在寄存器中的jmp指令
jmp ax
6>转移地址在内存中的jmp指令
两种格式
jmp word ptr 内存单元(段内地址)
mov ax 1234h
mov ds:[0],ax
jmp word ptr ds:[0]
jmp dword ptr 内存单元的地址(段间地址)

6>jcxz
有条件转移指令,所有有条件转移指令都是短指令,对应的机器码的转移的位移
而不是ip地址
格式
jcxz 标号 ;如果(cs)=0,则转到标号出执行
作业:
mov ch,0
mov cl, [bx]
jcxz ok
inc bx
7>loop指令
所有的循环都是短转移 转移的位移 ip修改范围 -128 -- 127
指令格式 loop 标号 (cx)=(cx)-1 (cx)!=0 转移到标号处执行

8>根据位移进行转移的意义
这种设计方便了程序段在内存中的浮动装配
实验:
assume cs:codesg
codesg segment
 mov ax,4c00h
 int 21h
 
start:mov ax,0
;执行两次,首次nop,写入s2的数据后,在跳回来执行
s:nop       ; eb执行mov cs:[di],ax 后将ax中的f6eb写入
  nop       ; f6
;nop一个字节

;将s2写入s
mov di,offset s
mov si,offset s2
mov ax,cs:[si] ;机器码 , ebf6 (ax)=f6eb
mov cs:[di],ax
;跳到s执行写入的s2数据
s0:jmp short s  
s1:mov ax,0
int 21h
;int21后下面一条未执行?
mov ax,0
s2 :jmp short s1
    nop
   
codesg ends
end start
;s->s0->s1->int 21h
 
 
阅读(772) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-06-05 02:20:01

大连法律咨询在线 http://www.fabowang.com 大连律师在线咨询 http://www.fabowang.com 大连法律顾问网 http://www.fabowang.com 大连律师咨询 http://www.fabowang.com