真钱捕鱼棋牌游戏网 - 手机棋牌操作系统_手机棋牌 命令_手机棋牌教程_手机棋牌黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: 真钱捕鱼棋牌游戏网 > 手机棋牌游戏换现金 > » 正文

汇编语言基本概念(续7)

来源: hbxu 分享至:

前面学习了汇编指令中也有一些转移指令,在汇编中,转移就是GOTO,它没有IF,SWITCH等高级语言中的一些特性。汇编中指令的执行是按照CS:IP进行单步执行的。转移指令可以只修改IP,也可以两者同时修改。转移指令分无条件转移如jmp,条件jcxz,循环loop,过程及中断等五种。首先学习一个新的操作符offset,这个是由编译器处理的伪指令,功能是取得标号的偏移地址。如start: mov ax,offset start 相当于mov ax,0

image

image

上图就清楚的显示了offset只是在编译器处理阶段的伪指令,编译之后,这地方完全用真实的偏移值替换了。下面列出几种常见的转移指令:

【1】jmp short 标号 段内短转移,对IP的修改范围是-128~127,对应的机器指令EB偏移。这里的位移是标号处的地址-jmp指令后的第一个字节的地址

image

【2】jmp near ptr 标号 段内近转移。实现的功能是(IP)=(IP)+16位位移。同前面一样。位移范围是-32768 ~32767

【3】jmp far ptr 标号 段间转移,或称之为远转移,这里转移后指令的(cs)就是标号所在的段地址,(ip)就是标号在段中的偏移地址。

image

【4】jmp reg 转移地址在寄存器中的jmp指令。

【5】jmp word ptr 内存单元地址(段内转移) 从内存单元地址处开始存放着一个字,是转移的目的偏移地址。如 mov ax,0123h mov ds:[0],ax jmp word ptr ds:[0] => (IP) = 0123H

【6】jmp dword ptr 内存单元地址(段间转移) 从内存单元地址处开始存放着两个字,高地址是段地址,低地址处是偏移地址

image

【7】jcxz 标号 如果(cx)=0,转移到标号执行。是短转移.IP 范围是-128~127,其转移方式怀jmp short 标号相同。相当于if((cx) ==0) jmp short 标号

【8】loop 标号 指令为循环指令,短转移。 (cx)=(cx)-1 ,如果(cx)!=0,则转移

前面这几种汇编指令,以标号作为跳转目的地址的指令,其真正取到的地址都是相对地址,因为相对地址,所以程序装在内存的不同位置均可以执行,不必因为编译时候分配的地址而在装载时无法无法运行。


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史