转移地址在内存中的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相关推荐

  1. 【汇编语言】习题-转移地址在内存中的jmp指令

    断断续续地汇编语言学到一半了,这次做课后作业可把我难坏了,赶紧记录一下. 检测点9.1 (1)程序如下. assume cs:code data segment? data endscode segm ...

  2. 转移的目的地址在指令中的jmp指令 转移地址在寄存器中的jmp指令

    机器码中并没有包含转移的目的地址,只是给了一个位移的范围,通过位移的方式,实现对ip寄存器的修改. 转移的目的地址在机器码中的jmp指令 jmp far ptr s 转移的目的地址在寄存器中的jmp指 ...

  3. C# 操作地址 从内存中读取写入数据(初级)

    本示例以植物大战僵尸为例, 实现功能为 每1秒让阳光刷新为 9999.本示例使用的游戏版本为 [植物大战僵尸2010年度版], 使用的辅助查看内存地址的工具是  CE. 由于每次启动游戏, 游戏中阳光 ...

  4. 汇编:转移目的地址在内存中

    assume cs:code, ds:data, ss:stack; 设置数据段 data segmentdb 128 dup (0) data ends; 设置栈段 stack segment st ...

  5. jmp指令(0903)

    本文为<汇编语言程序设计>0903小节例程.点击链接-进课程主页. jmp指令:依据位移进行转移 程序1: assume cs:codesg codesg segmentstart: mo ...

  6. JMP指令寻址方式总结,JMP BX指令寻址方式是什么

    jmp 指令的几种寻址方式 jmp short 标号 段间跳转 -128-127 jmp far ptr 标号 超段转移 跳转包含目标地址jmp reg 16位寄存器 jmp word ptr 内存单 ...

  7. 汇编语言_CS、IP和JMP指令

    看王爽的汇编语言,也听了相关的汇编课程,预计一个月学习完毕.这篇博客主要记录CS,IP和JMP的一个应用. 命令解释 **CS:**代码段寄存器 **IP:**指令指针寄存器 **JMP:**跳转指令 ...

  8. 贺利坚老师汇编课程47笔记:转移地址在寄存器或内存里

    转移地址在寄存器 JMP 16位寄存器;IP = (16位寄存器) 转移到的地址没有体现在机器码里,灵活在 跳到哪有变量定 转移地址在内存 jmp word ptr;段内转移 jmp dword pt ...

  9. Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器

    Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...

最新文章

  1. 一次线上生产问题的全面复盘 【定位-分析-解决】
  2. pmp学习资料_PMP怎样叫通过考试,拿到证书?
  3. UA OPTI570 量子力学33 Time-dependent Perturbation基础
  4. Python 的变量作用域和 LEGB 原则
  5. 【HihoCoder - 1269】 优化延迟 (优先队列+二分优化)
  6. Spark精华问答 | 为什么要学Spark?
  7. stl向量_如何检查C ++ STL中向量中是否存在元素?
  8. 四部门对蚂蚁集团提出整改要求,蚂蚁集团:已立即着手制定整改方案
  9. 普通账户信息是SIEM的盲点
  10. java判断题及答案_Java面试题及解析(判断题)
  11. matlab file(i).name,求大佬帮忙备注一下,有点看不懂,详细一点
  12. python能做什么项目-python能做什么项目
  13. 《深入应用C++11:代码优化与工程级应用》勘误表
  14. ADAS软件系统测试入门指南
  15. nodejs 点击按钮下载_从服务器下载文件使用NodeJS表达
  16. 【无标题】60秒倒计时
  17. 【我的渲染技术进阶之旅】你知道数字图像处理的标准图上的女孩子是谁吗?背后的故事你了解吗?为啥这张名为Lenna的图会成为数字图像处理的标准图呢?
  18. 下载和攻略补遗之人偶遗迹 ひとがたルイン
  19. 聚醋酸乙烯酯(PVAc)乳剂市场现状及未来发展趋势
  20. 【Go语言入门100题】022 奇偶分家 (10 分) Go语言 | Golang

热门文章

  1. HD_I Hate It
  2. hdu 2473(并查集+删除操作)
  3. MySQL数据迁移到SQL Server
  4. C#中的预处理指令详解
  5. 跟着鸟哥学Linux系列笔记1
  6. QUrl不同版本之间的坑
  7. simulink m序列仿真(待验证)
  8. Python学习笔记:错误,测试,调试(转)
  9. 不同版本GCC编译器之间的切换
  10. QCustomPlot使用手册(一)