当前位置: 首页 > news >正文

汇编原理()二进制 跳转指令

一.二进制

two complement reprentation(补码)

二进制的运算:

        6的二进制 = 0110

        -6的二进制 如何表示?

                四个bit的第一个bit表示符号:1负0正

        -6表示为1010

解释:

        0 = 0000

        1 = 0001

        -1 = 1111(由 1 + (-1) = 0 推的)

再往下推:

        -2 = 1110

        -3 = 1101

        -4 = 1100

        -5 = 1011

        -6 = 1010

更简单的方式找-6的二进制

        把6的每一位取反之后,再加1,得到结果

问:在32位电脑里01000001表示什么?不能单纯觉得是65这个数

        在32位bit时该怎么表示6?在前面加28个0

        在32位bit时该怎么表示-6?能直接在4位的情况下加28个0吗?不能,应该在前面加上28个1(很好想)

十六进制表达:

        0xffff ffff: 化为2进制:1111...1111共32个1 

        666(十进制) 化为二进制-> 000...(20个0) 0010(十进制里的2) 1001(十进制里的9) 1010(十进制里的a) 

                 化为十六进制->  0x 0000 029a

        -666(十进制) 化为二进制-> 111...(20个1) 1101 (十进制里的13/d) 0110(十进制里的6) 0110(十进制里的6)

                 化为十六进制-> 0x FFFF 0d66

转移指令有以下几类:

        无条件跳转指令(jmp)

        条件转移指令

        循环指令(loop)

        过程

        中断:cpu是跳来跳去的,不停的终端

j-Jump 跳转 

e-Equal 相等的时候发生跳转

z-Zero 相减得0时发生跳转

s-Sign 符号,当他是负的时候发生跳转   

c-Carry 如果发生借位会发生跳转     

l-Less、b-Below 当操作数1 < 操作数2 时发生跳转

a-Above、g-Greater 当操作数1 > 操作数2 时发生跳转 

p-Parity

o-Overflow

JE/JZ - jump if equal/zero

JNE/JNZ - jump if not equal/zero

JB/JNAE/JC - jump if below/not above equal/carry 低于/不高于等于/有借位

JNB/JAE/JNC - jump if not carry 不低于/高于等于/无借位

JP-jump if parity 奇偶位为1

JNP-jump if not parity 奇偶位不为1

JO- 结果溢出

JNO

JS-结果为负

JNS 

跳转原理:

        CMP 操作数1,操作数2

        操作数1 - 操作数2,不改变数值

        效果:改变状态标志位CF、SF、ZF、PF、OF、AF

        判断标志位情况

相关文章:

  • 蒲公英旁路组网:总部旁路,分部一级组网方案
  • 安卓六种页面加载优化方案对比总结
  • Linux安装PostgreSQL脚本
  • 装饰模式:鸡腿堡
  • 提高联盟营销收入的秘密武器
  • Nginx实战:https 配置SSL证书
  • 弱密码系统登录之后强制修改密码
  • Codeforces Round 916 (Div. 3) C. Quests (贪心 + 模拟)
  • 鸿蒙开发接口图形图像:【@ohos.display (屏幕属性)】
  • Qt子线程更新UI的一种新玩法
  • 【Numpy】深入解析numpy中的ravel方法
  • Flink Task 性能指标
  • 【运筹学】前言:基础知识
  • 【MATLAB】数字滤波器的设计
  • 详解Java ThreadLocal
  • 【Leetcode】104. 二叉树的最大深度
  • 2017-08-04 前端日报
  • CSS 提示工具(Tooltip)
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • hadoop集群管理系统搭建规划说明
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript设计模式与开发实践系列之策略模式
  • java中具有继承关系的类及其对象初始化顺序
  • Js基础知识(一) - 变量
  • MySQL QA
  • SpringBoot 实战 (三) | 配置文件详解
  • Transformer-XL: Unleashing the Potential of Attention Models
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Wamp集成环境 添加PHP的新版本
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 对JS继承的一点思考
  • 多线程 start 和 run 方法到底有什么区别?
  • 分享几个不错的工具
  • 简析gRPC client 连接管理
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 七牛云假注销小指南
  • 前嗅ForeSpider采集配置界面介绍
  • 通信类
  • Linux权限管理(week1_day5)--技术流ken
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (万字长文)Spring的核心知识尽揽其中
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net dataexcel 脚本公式 函数源码
  • .net FrameWork简介,数组,枚举
  • .NET 材料检测系统崩溃分析
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /usr/bin/env: node: No such file or directory