6 转移指令

news2024/11/15 21:21:12

转移指令

1 数据存储位置的表示

我们定义的描述性符号: reg 和sreg 。使用描述性的符号reg 来表示一个寄存器,用sreg 表示一个段寄存器。

reg 的集合包括: ax 、bx 、ex 、dx 、ah 、al 、bh 、bl 、ch 、cl 、dh 、di 、sp 、bp 、si 、di;
sreg 的集合包括: ds 、SS 、cs 、es 。

  • 在8086CPU 中,只有这4 个寄存器可以用在“[...]”中来进行内存单元的寻址。

  • 在[...]中,这4 个寄存器可以单个出现,或只能以4 种组合出现: bx 和si、bx 和di 、bp 和si 、bp 和di

  • 要在[...]中使用寄存器bp ,而指令中没有显性地给出段地址,段地址就默认在SS 中

2 数据处理的长度表示

8086CPU 的指令, 可以处理两种尺寸的数据, byte 和word所以在机器指令中要指明,指令进行的是宇操作还是字节操作。

  • 通过寄存器名指明要处理的数据的尺寸。

  • 在没有寄存器名存在的情况下,用操作符X p位指明内存单元的长度, X 在汇编指令中可以为word 或byte

3 转移指令简述

可以修改IP,或同时修改cs 和IP 的指令统称为转移指令

8086CPU 的转移行为有以下几类。

  • 只修改IP 时,称为段内转移,比如: jmp ax 。
  • 同时修改cs 和IP 时,称为段间转移,比如: jmp 1000:0 。

由于转移指令对IP 的修改范围不同,段内转移又分为: 短转移和近转移

  • 短转移IP 的修改范围为一128~127
  • 近转移IP 的修改范围为-32768~32767

8086CPU 的转移指令分为以下几类:

  • 无条件转移指令(如: jmp) .
  • 条件转移指令 .
  • 循环指令(如: loop) .
  • 过程
  • 中断

4 offset

操作符offset 在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址

在上面的程序中, offset 操作符取得了标号start 和s 的偏移地址0和3 ,所以指令:mov ax,offset start 相当于指令mov ax,O ,因为start 是代码段中的标号,它所标记的指令是代码段中的第一条指令,偏移地址为0

5 jmp指令

jmp 为无条件转移指令,可以只修改IP ,也可以同时修改CS和IP

jmp 指令要给出两种信息:

  • 转移的目的地址
  • 转移的距离(段间转移、段内短转移、段内近转移)

5.1 jmp short 标号

转到标号处执行指令,是短转移

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mdXHfzKM-1670664612422)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221207181651493.png)]

5.2 jmp near ptr 标号

它实现的是段内近转移

“ jmp near ptr 标号”的功能为:(IP)=(IP)+ 16 位位移。

  1. 16 位位移=标号处的地址-jmp 指令后的第一个字节的地址;
  2. near p位指明此处的位移为16 位位移,进行的是段内近转移:
  3. 16 位位移的范围为-32768~32767 ,用补码表示:
  4. 16 位位移由编译程序在编译时算出。

5.3 jmp far ptr 标号

实现的是段间转移,又称为远转移

5.4 jmp 16 位reg

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

5.5 转移地址在内存中的jmp 指令

  1. jmp word ptr 内存单元地址(段内转移)

从内存单元地址处开始存放着一个字,是转移的目的偏移地址。

  1. jmp dword ptr 内存单元地址(段间转移)

功能: 从内存单元地址处开始存放着两个字,高地址处的字是转移的目的段地址,低地址处是转移的目的偏移地址。

6 jcxz 指令

jcxz 指令为有条件转移指令,所有的有条件转移指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址。对IP 的修改范围都为:-128~ 127 。

指令格式: jcxz 标号(如果(cx)=O,转移到标号处执行。

操作:当(cx)=0 时,(IP)=(IP)+8 位位移:
我们从jcxz 的功能中可以看出, “ jcxz 标号”的功能相当于:
:-128~ 127 。

指令格式: jcxz 标号(如果(cx)=O,转移到标号处执行。

操作:当(cx)=0 时,(IP)=(IP)+8 位位移:
我们从jcxz 的功能中可以看出, “ jcxz 标号”的功能相当于:
if ((ex) ==0) jmp short 标号;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NAT (Network Address Translations) 网络地址转换

数据来源 1、ipv4地址严重不够用了 X.X.X.X X 0-255 A、B、C类可以使用 D组播 E科研 2、IP地址分为公网IP和私网IP 公网IP只能在公网上使用私网IP只能在内网中使用公网上不允许出现私有IP地址私网IP可以重复在内网使用1)私有地址范围 10.0.0.0/8&…

Vite+Vue3构建前端框架及模板代码及重要知识点

Vue3Vite构建步骤 用vite初始化vue项目(回车) npm create vitelatest vueVitePro -- --template vue安装配置路由vue-router npm install vue-router4 import router from ./router/index.js createApp(App).use(router).mount(#app) 安装 element-plus 及图标 npm ins…

一个PCA加速技巧

EVD-PCA PCA推导:PCA主成分分析法浅理解 具体数值如1030410304是我机器学习课程实验的数据集参数,这里关注数字量级即可。 code % EVD-PCA数据降维 % input: DN output:KN function [Z, K] EVD_PCA(X, K, weight)fprintf(Running EVD-PCA dimension…

Matplotlib学习笔记(第二章 2.13 Matplotlib中的图形(二))

路径(Paths) 你可以使用matplotlib.path模块在Matplotlib中添加任意路径: Fig. 6: Path Patch 三维绘图(Three-dimensional plotting) mplot3d工具包(参见see Getting started and mplot3d-examples-index))支持简单的3D图形,包括曲面、线框、散点图和…

【华为上机真题 2022】玩牌高手

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

【OpenCV-Python】教程:4-5 SURF (Speeded-Up Robust Features) 介绍

OpenCV Python SURF (Speeded-Up Robust Features) 介绍 【目标】 SURF的基础 【理论】 SURF 是 SIFT 的提速版本; 在SIFT中,Lowe用 DoG 近似 LoG;SURF 走的更远一点,用 box filter 近似 LoG 。下图显…

文本生成公开数据集/开源工具/经典论文详细列表分享

这是一份由清华大学自然语言处理小组整理的文本生成相关的公开数据集/开源工具/经典论文列表,并且不断增加论文和持续修改名单,分享给大家。 源链接:https://github.com/THUNLP-MT/TG-Reading-List 目录 数据集 故事生成 文本生成 工具 经典…

开关电源环路稳定性分析(06)-功率级和控制级

大家好,这里是大话硬件。 根据上一篇文章的分析,开关电源系统主要分为3个部分,功率级,控制级,反馈级。今天这篇文章我们分析功率级和控制级的传递函数。 1.功率级传递函数 从功能框图上可以看出来,功率…

教材征订和下发系统

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

Spring Cloud Alibaba Nacos Config - - - >配置中心

官方文档:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config 市面上比较有名的配置中心: Spring Cloud ConfigApolloSpring Cloud Alibaba Nacos Config Spring Cloud Config 大部分场景结合 git 使用,动态变更还需要依赖…

Python获取世界杯热搜榜,并制作脚本自动发送信息到邮箱

前言 现在正是卡塔尔世界杯激战正酣的时候,每天都有各种各样的新闻。而且,不同的球队,随着比赛的进程,关注的热度也会发生翻天覆地的变化。 今天我们就来获取卡塔尔世界的球队热搜榜,并制作自动发送邮件脚本&#xff…

深度优先搜索(DFS)剪枝:记忆化搜索(C++)

目录 一、基本思想 二、样例 三、程序 1、普通的深度优先搜索 2、分析 3、记忆化搜索 程序 四、实际速度样例 一、基本思想 今天我们来讲一下深搜的剪枝方法中的一个:记忆化搜索。 顾名思义,记忆化搜索就是让程序记住一些东西,然后可以…

Stimulsoft Dashboards.JS JavaScript 2203.1.0仪表板

Stimulsoft Dashboards.JS--Ω578867473 Dashboards.JS 是一个功能齐全的工具,用于为 JavaScript 平台创建仪表板。 JavaScript 仪表板 Dashboards.JS 是一个功能齐全的工具,用于为 JavaScript 平台创建仪表板。要生成和查看仪表板,您需要任何…

Qt扫盲-QAbstractButton 笔记总结

QAbstractButton使用总结一、概要1.显示内容2. 快捷键3. 对话框默认按钮4. 按钮状态5. 信号说明6. 自定义按钮QAbstractButton 类实现的是一个抽象按钮。主要是Button类具有的共性,但是处理用户的操作响应、并绘制不同按钮的形式是由子类来完成的。一、概要 QAbstr…

图文深度解析Linux内存碎片整理实现机制以及源码

图文深度解析Linux内存碎片整理实现机制以及源码。 物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外)。申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的。随着系统运行时间变长后,将会出现以下情况: 在多道程序当中,如果要让我们的程…

深度解析车载域控制器

文章目录域控制器域控制器的组成ADAS域控制器智能座舱域HUD仪表盘IVI域控制器的发展域控制器对传统ECU的挑战域控制器 ​ 随着车辆的信息化程度的发展,车辆的ECU也越来越多,从引擎控制、转向助力、仪表、影音等,传统的汽车电子电气架构是分布…

基于Intel® Core™ i5 机器人控制器

XM-6815是一款基于Intel 11代酷睿i系列平台CPU壁挂式电脑,扩展内存槽,1mSATA,3千兆网口,6COM,4USB 3.0,4USB 2.0。该产品适合工业机器人控制器、机器视觉控制器等壁挂安装应用场景. 产品规格 产品类型Inte…

阿里巴巴内部不传之秘「十亿级并发系统顶级教程」GitHub一夜封神

何为超大流量? 超大流量是一个很容易理解的意思!举个例子:现在国内疫情反弹,每个小区都要做核酸那么如果同一时间下来一大批人一起做核酸,那么这就是大流量,然后志愿者将人员进行分配排队让医务人员处理的过来那么这就…

Qt5.6.1移植海思Hi3521d(二)

系列文章目录 Qt5.6.1移植海思Hi3521d(一) 前言 该篇讲解一下,使用海思交叉编译器arm-hisiv500-linux-gcc,编译qt5.6源码,搭建qt交叉编译环境 一、修改qmake.conf 打开文件~/Project/qt-everywhere-opensource-src-5…

Python制作简易版烟花,没资金买烟花就来做个电子版的吧

前言 听说有人说我很久没更新了,那今天来表演个粒子烟花 跨年倒计时20天?我已经开始整烟花了,虽然不是很好看吧,但是也能将就看看 😥 这个的背景图,音乐,还有文字都是可以自己修改的哦 效果…