汇编语言7

用法1: jmp short 标号(转到标号处执行指令)

这种格式的 jmp 指令实现的是段内短转移,它对IP的修改范围为 -128~127,也就是说,它向前转移时可以最多越过128个字节,向后转移可以最多越过127个字节。

段内转移,只修改IP,比如jmp ax
段间转移,同时修改CS和IP,比如jmp 1000:200
短转移,IP取值范围-128-127, 8位
近转移,IP取值范围-32768-32767,16位

offset是伪指令,它的功能是取标号的偏移地址

代码:
assume cs:code
code segment
db  10 dup(0)
s: mov ax,0ffffh
start: jmp short s
jmp short s1
nop
s1: nop
mov ax,4c00h
int 21h
code ends
end start

Debug中:
1467:0000 0000          ADD     [BX+SI],AL
1467:0002 0000          ADD     [BX+SI],AL
1467:0004 0000          ADD     [BX+SI],AL
1467:0006 0000          ADD     [BX+SI],AL
1467:0008 0000          ADD     [BX+SI],AL
1467:000A B8FFFF        MOV     AX,FFFF
1467:000D EBFB          JMP     000A
1467:000F EB01          JMP     0012
1467:0011 90            NOP
1467:0012 90            NOP
1467:0013 B8004C        MOV     AX,4C00
1467:0016 CD21          INT     21
jmp short s 被编译器解释为  JMP     000A,,对应机器码 EBFB,   EB 对应jmp, FB对应-5,向上跳转5个字节
jmp short s1被编译器解释为  JMP    0012, 对应机器码 EB01,   EB 对应jmp, 01对应1,向下跳转1个字节
机器码中竟不包含转移的目的地址,这意味着CPU并不知道转移目的地址,  只需知道相对偏移

时间: 2024-11-08 23:40:44

汇编语言7的相关文章

汇编语言入门:流程控制

流程控制:顺序,分支,循环 程序计数器PC中存储当前执行的程序在EM中的位置 汇编里面,用比较.跳转实现流程控制. 1.顺序:PC+1(不一定加一,看指令长度) 2.分支循环,直接赋给PC值,执行指定地址的程序 有时候需要程序有一定的流程控制能力,它不是老老实实按照顺序来执行的,中间可能会跳过一些代码 修改PC值,不可用MOV指令,PC是特殊的寄存器,特殊对待,跳转指令修改其值. 跳转指令: 1 ja 大于时跳转 2 jae 大于等于 3 jb 小于 4 jbe 小于等于 5 je 相等 6 j

王爽《汇编语言》第三版 第十五章 外中断

引言 CPU 除了有运算能力外,还要有 I/O( Input/Output ,输入/输出)能力. 15.1 接口芯片和端口 在PC系统的接口卡和主板上,装有各种接口芯片.这些外设接口芯片的内部有若干寄存器,CPU将这些寄存器当作端口来访问. 外设的输入不直接送入内存和CPU ,而是送入相关的接口芯片的端口中. CPU向外设的输出也不是直接送入外设,而是先送入端口中,再由相关的芯片送到外设. 15.2 外中断信息 当CPU 检测到可屏蔽中断信息时: 1.如果IF=1,则CPU 在执行完当前指令后响

王爽《汇编语言》第三版 第五章 [BX]和loop指令

5.1 [bx] mov ax,[bx]功能:bx 中存放的数据作为一个偏移地址EA ,段地址SA 默认在ds 中,将SA:EA处的数据送入ax中. 5.2 Loop指令 指令的格式是:loop 标号,CPU 执行loop指令的时候,要进行两步操作: 1.(cx)=(cx)-1: 2.判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行. 通常我们用loop指令来实现循环功能,cx 中存放循环次数. 5.3 在Debug中跟踪用loop指令实现的循环程序 5.4 Debug和汇编编译器

用汇编语言给XP记事本添加“自动保存”功能 good

[文章标题]: 用汇编语言给XP记事本添加“自动保存”功能 [文章作者]: newjueqi [作者邮箱]:[email protected] [作者QQ]:190678908 [使用工具]: OD, LordPE,eXeScope[操作平台]: XP-SP2[作者声明]: 本人平时一般的文字处理都是用记事本(用Word好像大材小用了),电脑自从拿去大修后有时候会莫名其妙的重启,弄得经常重写(本人常常忘记保存^-^),于是想给记事本增加类似于Word的自动保存功能,以图个方便.失误之处敬请诸位大

汇编语言 王爽著

汇编语言让我们深入了解计算机底层,值得去学习了解. 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令.普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植.

汇编语言 王爽著第三章

汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令.普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植.

汇编语言基础-1

汇编语言的组成:至今有三类指令 1.汇编指令  机器码的助记符,有对应的机器码. 2.伪指令     没有对应的机器码,由编译器执行 ,计算机不执行. 3.其他符号   如+ - × / 由编译器识别, 没有对应的机器码. 内存(存储器):CPU要工作,就需要指令与数据,指令与 数据就需要内存给CPU,磁盘中的数据或指令先要加载到内存,然后内存再给CPU. 磁盘 -----> 内存------->CPU 指令与数据:他们在磁盘或内存中,是没有区别的,在应用上才有区别,在磁盘或内存上,都是二进制

VC++中开发汇编语言(转)

汇编程序结构 一个显示字符串的汇编程序 程序格式 一.模式定义 二.includelib语句 三.函数声明语句 四.数据和代码部分 Visual C/C++环境 建立工程 汇编程序的调试 一.设置断点 二.内存窗口 三.寄存器窗口 四.监视窗口 常用调试命令 字符串输入.输出 printf sprintf scanf 常用Windows API调用 MessageBox 确定函数的声明语句和库文件 读取CPU标识 WinDbg调试工具 实验题:用MessageBox函数显示CPU信息 源自:ht

汇编语言入门(在debug中编辑和调试程序)

2013-06-02 17:09 4252人阅读 评论(2) 收藏 举报  分类: 汇编语言(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 我们在Windows中进入的Dos方式,实际上是虚拟8086模式的Dos,方法是:点击“开始”,“运行”,输入"command",点击“确定”, 可以看到弹出一个黑色的框框,然后,在黑色的框框中输入相关信息,如图所示(提前说一句,汇编语言对大小写不敏感,而C语言对大小写敏感): 下面来具体分析一下: 1. debug是一个调试工具(

汇编语言编辑、汇编、连接、运行的全过程

2013-06-02 19:24 4991人阅读 评论(0) 收藏 举报  分类: 汇编语言(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 为了理解汇编语言的编辑.汇编.连接.运行的全过程,我们不使用IDE,而是分步骤来进行: 需要工具: 1. 文本编辑器(如果有Notepad++或者UltraEdit就更好了) 2.  汇编器(如MASM.exe) 3.  连接器(对应的link.exe) 为了省略盘符转换,我在电脑的F盘中建立了myASM这个文件夹,并把Windows系统的c