转移地址在内存中的jmp指令 检测点9.1
转移地址在内存中的jmp指令有两种格式:
(1)jmp word ptr 内存单元地址(段内转移)
功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址。
mov ax,0123h
mov ds:[0],ax
jmp word ptr ds:[0]
执行之后IP=0123h
(2)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
1)程序如下
assume cs:codedata segment?
data endscode segmentstart:mov ax, datamov ds, axmov bx, 0jmp word ptr [bx+1]code ends
end start
若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?
若要指向第一条指令,则要使IP的值为0000H即可,而jmp word ptr为段内转移指令,相当于把IP值赋值为后面内存单元的值,故只需要第一个字节为0即可。
(2)补全程序,使得jmp指令执行后,CS:IP指向第一条指令
assume cs:codedata segmentdd 12345678H
data endscode segmentstart:mov ax, datamov ds, axmov bx, 0mov [bx], __mov [bx+2], __jmp dword ptr ds:[0]code ends
end start
由于执行jmp指令后指向第一条指令,CS段没有改变,只需要改变IP值为0000H。而段间转移相当于把内存地址开始的前两个字节赋值给IP,后面的两字节赋值给CS,按顺序填入0和CS值即可。
答案:bx cs
(3)用debug查看,内存数据如下
2000:1000 BE 00 06 00 00 00 ……
;此时CPU执行指令
mov ax, 2000H
mov es, ax
jmp dword ptr es:[1000H]
后,(CS) = ? (IP) = ?
把前两个字节赋值给IP,后面的两字节赋值给CS
答案:CS = 0006H IP = 00BEH
转移地址在内存中的jmp指令 检测点9.1相关推荐
- 【汇编语言】习题-转移地址在内存中的jmp指令
断断续续地汇编语言学到一半了,这次做课后作业可把我难坏了,赶紧记录一下. 检测点9.1 (1)程序如下. assume cs:code data segment? data endscode segm ...
- 转移的目的地址在指令中的jmp指令 转移地址在寄存器中的jmp指令
机器码中并没有包含转移的目的地址,只是给了一个位移的范围,通过位移的方式,实现对ip寄存器的修改. 转移的目的地址在机器码中的jmp指令 jmp far ptr s 转移的目的地址在寄存器中的jmp指 ...
- C# 操作地址 从内存中读取写入数据(初级)
本示例以植物大战僵尸为例, 实现功能为 每1秒让阳光刷新为 9999.本示例使用的游戏版本为 [植物大战僵尸2010年度版], 使用的辅助查看内存地址的工具是 CE. 由于每次启动游戏, 游戏中阳光 ...
- 汇编:转移目的地址在内存中
assume cs:code, ds:data, ss:stack; 设置数据段 data segmentdb 128 dup (0) data ends; 设置栈段 stack segment st ...
- jmp指令(0903)
本文为<汇编语言程序设计>0903小节例程.点击链接-进课程主页. jmp指令:依据位移进行转移 程序1: assume cs:codesg codesg segmentstart: mo ...
- JMP指令寻址方式总结,JMP BX指令寻址方式是什么
jmp 指令的几种寻址方式 jmp short 标号 段间跳转 -128-127 jmp far ptr 标号 超段转移 跳转包含目标地址jmp reg 16位寄存器 jmp word ptr 内存单 ...
- 汇编语言_CS、IP和JMP指令
看王爽的汇编语言,也听了相关的汇编课程,预计一个月学习完毕.这篇博客主要记录CS,IP和JMP的一个应用. 命令解释 **CS:**代码段寄存器 **IP:**指令指针寄存器 **JMP:**跳转指令 ...
- 贺利坚老师汇编课程47笔记:转移地址在寄存器或内存里
转移地址在寄存器 JMP 16位寄存器;IP = (16位寄存器) 转移到的地址没有体现在机器码里,灵活在 跳到哪有变量定 转移地址在内存 jmp word ptr;段内转移 jmp dword pt ...
- Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器
Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...
最新文章
- 一次线上生产问题的全面复盘 【定位-分析-解决】
- pmp学习资料_PMP怎样叫通过考试,拿到证书?
- UA OPTI570 量子力学33 Time-dependent Perturbation基础
- Python 的变量作用域和 LEGB 原则
- 【HihoCoder - 1269】 优化延迟 (优先队列+二分优化)
- Spark精华问答 | 为什么要学Spark?
- stl向量_如何检查C ++ STL中向量中是否存在元素?
- 四部门对蚂蚁集团提出整改要求,蚂蚁集团:已立即着手制定整改方案
- 普通账户信息是SIEM的盲点
- java判断题及答案_Java面试题及解析(判断题)
- matlab file(i).name,求大佬帮忙备注一下,有点看不懂,详细一点
- python能做什么项目-python能做什么项目
- 《深入应用C++11:代码优化与工程级应用》勘误表
- ADAS软件系统测试入门指南
- nodejs 点击按钮下载_从服务器下载文件使用NodeJS表达
- 【无标题】60秒倒计时
- 【我的渲染技术进阶之旅】你知道数字图像处理的标准图上的女孩子是谁吗?背后的故事你了解吗?为啥这张名为Lenna的图会成为数字图像处理的标准图呢?
- 下载和攻略补遗之人偶遗迹 ひとがたルイン
- 聚醋酸乙烯酯(PVAc)乳剂市场现状及未来发展趋势
- 【Go语言入门100题】022 奇偶分家 (10 分) Go语言 | Golang