8086汇编-实验8-jmp指令的理解
offset 标号:取标号处的地址
mov 16位 offset 标号:取标号偏移地址
mov 32位 offset 标号:取标号段地址:偏移地址
assume cs:code
code segmentmov ax,4c00hint 21hstart:mov ax,0 ;ax=0s:nopnop mov di,offset smov si,offset s2mov ax,cs:[si]mov cs:[di],axs0:jmp short ss1:mov ax,0int 21hmov ax,0s2:jmp short s1nop
code ends
end start
程序入口:start
第一步:
地址:0005
指令:mov ax,0
结果:ax=0
第二步:
s
地址:0008
指令:nop
结果:分配1字节空间
第三步:nop
地址:0009
指令:nop
结果:分配1字节空间
第四步:
地址:000A
指令:mov di,offset s
结果:di=0008
第五步:
地址:000D
指令:mov si,offset s2
结果:si=0020,s2的偏移地址为0020
分析
s2:
jmp short s1 ;机器码为EBF6
EB:短转移机器码
F6:s2+0002-s1
加2的原因是抵消掉ip自加的2
第六步:
地址:0010
指令:mov ax,cs:[si]
结果:ax=EBF6
第七步:
地址:0013
指令:mov cs:[di],ax
结果:0008=EB,0009=F6(填补第二步第三步nop处)
EBF6机器码:ip指针-10(F6的补码)
第八步:
地址:0016
指令:jmp short s
结果:ip=8,跳转到0008
第九步:
地址:0008
指令:EBF6
结果:ip指针-10,ip=0008+0002-0010=0000
加2的原因:执行EBF6之后ip指针自加2
第十步:
地址:0000
指令:
mov ax,4c00h
int 21h
结果:结束程序
8086汇编-实验8-jmp指令的理解相关推荐
- 汇编jmp指令的理解与用法
这篇文章是在学习过程中对于转移地址偏移地址的理解以及网上缺乏帮助理解计算转移地址偏移地址的前提下诞生的.初次写知识点分享,如有误,请指出多包含. JMP是在编写程序中经常使用的指令,它的功能是转移到指 ...
- 8086汇编实验(十题可用)
一.前言 1.这学期学8086汇编,所做的四次实验十个题目(前8手写,后2摘录后修改,时间久远未找到原文链接,愿理解),亲测可用,码住,希望能对将来的读者有所帮助. 2.有的需要在debug中根据段地 ...
- 基于8086CPU微处理器的汇编学习之JMP指令
JMP指令: 更改CS:IP寄存器的内容,以让CPU从新指定的内存地址开始继续执行指令. 格式: JMP 段地址:偏移地址 ------------------------------------- ...
- 8086汇编-实验1、2-debug调试命令
1.R命令 查看CPU寄存器的内容 -r 查看所有寄存器的内容 -r reg 改变制定寄存器中的内容 2.D命令 查看内存中的内容 -d 查看内存中的128个内存单元 -d 段地址:偏移地址 可查看指 ...
- 8086汇编push和pop指令注意点(push pop 只对字操作(不允许字节进栈))
push和pop是用来操作栈的2个指令. push寄存器:将一个寄存器中的数据入栈pop寄存器:出栈用一个寄存器接收数据 1.push pop 只对字操作(不允许字节进栈)操作数长度为32位时进出栈为 ...
- 8086汇编基础 push,pop指令执行时,sp怎么变
首先需要说明的是栈属于满递减栈,即栈顶在高地址,栈底在低地址 push,指针向低处走.我向1000:0000处push数据,那么push之前,sp初-2=sp末.先sp-2,再写入 pop,指针向高处 ...
- 8086汇编复习4 - int指令 - 使用emu8086
int指令 中断信息可以来自CPU的内部和外部:int指令引发的中断是内中断: int n,n为中断类型码: CPU执行int n指令,相当于引发一个n号中断的中断过程:执行过程如下: ...
- 8086汇编-实验10-字符打印程序
效果如图: assume cs:codeparameters_stack segment ;程序断点参数传递db 48 dup(0) parameters_stack endsraw_stack se ...
- 8086汇编-实验9-字符打印
环境:DosBox 0.74-3,masm 效果如图: assume cs:codestack segmentdb 16 dup(0) stack endsalpha segment ;+26db ' ...
最新文章
- Oracle Study之--ORA-12537(TNS:connection closed) 错误案例
- web服务枚举组件不可用
- APM-应用性能管理
- 自动发布工具应该具备的11个标准特征
- 20145234黄斐《网络对抗技术》实验八、Web基础
- 如何判断某ABAP系统的Netweaver后台是否支持AMDP
- 安装php时,make步骤报错make: *** [sapi/fpm/php-fpm] Error 1
- html修改details范围,HTML details 标签
- 今天,我背完了考研5500词!!!
- [1] 图像预处理----图像灰度化处理
- 深入理解HTTP消息头
- 如鹏网.Net高级技术9.XML文件操作
- python读取pdf提取文字和图片
- 实现商品库存信息管理页面
- strongswan源代码结构与数据结构
- 历史小说《雍正皇帝》后感(电视剧雍正王朝)
- 张家港python培训_张的解释|张的意思|汉典“张”字的基本解释
- 如何增加你微博的粉丝人数?微博推广20绝招
- ‘gbk‘ codec can‘t decode byte 0xa4 in position 16433: illegal multibyte sequence
- Promise ,Promise.all 和Promise.race的区别
热门文章
- MemoryStream 反序列化的报错问题
- 学习官方示例 - SysUtils.EncodeDate、EncodeTime、StrToDate、StrToTime、StrToDateTime
- (收藏)Turbo C 2.0、Borland C++库函数及用例
- 迁移.NET 1.0 应用到FX 2.0 –.NET评测网的工具箱
- 查找linux所有目录中包含字符,Linux查找目录下包含有某字符串的全部文件
- C# 系统应用之ListView控件 (二).加载选中节点文件夹下文件信息
- 【数据结构与算法】之深入解析“合并两个有序链表”的求解思路与算法示例
- Python (五) 高级特性
- Java中三种交换值得方式
- 【机器视觉】 par_join算子