汇编 - ORG指令详解

2023-11-08

ORG指令
ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。例如:
             ORG 2000H   
   START:MOV  AX,#00H


汇编语言源程序中若没有ORG伪指令,则程序执行时,指令代码被放到自由内存空间的CS:0处;若有ORG伪指令,编译器则把其后的指令代码放到ORG伪指令指定的偏移地址。两个ORG伪指令之间,除了指令代码,若有自由空间,则用0填充

预处理-->编译-->汇编-->链接,这是高级语言的编译全过程。对于纯汇编,就只有汇编和链接两个步骤。


org指令是链接时使用的,不是汇编那一步使用的。即不是cpu的一条指令,而是给编译器看的伪指令。


在51单片机、x86 dos、win32 exe中实现都有差异。


以最简单的51单片机为例,编译器最终链接生成HEX文件,再烧录到51的rom中去。单片机很简单,没有x86的分段、分页,启动就是从rom的0x0的位置开始执行。同时0x30H位置开始存放中断向量,
所以单片机程序一般开头就是:

   ORG 0000H


   AJMP MAIN


   ORG 0030H



这里的ORG 0000H指令,使得程序链接成HEX文件时,AJMP MAIN这条指令的机器码就在HEX文件的0x0位置。这是链接器的工作。

至于x86 dos和win32 exe,ORG的实现就复杂了,ORG不再是绝对定位,只能在一个段里相对定位。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

汇编 - ORG指令详解 的相关文章

  • PX4源码分析6:位置解算模块需要掌握哪几个核心点?

    转载自 xff1a https blog csdn net XL MAX article details 105780717 PX4源码分析6 xff1a 位置结算模块需要掌握哪几个核心点 xff1f XL MAX 2020 04 27 0
  • Vector源码分析

    Vector源码分析 1 Vector基本介绍与类图 Vector 类实现了一个动态数组 和 ArrayList 很相似 但是两者是不同的 Vector 是同步访问的 Vector 包含了许多传统的方法 这些方法不属于集合框架 Vector
  • pixhawk 源码分析-SPI驱动-MS5611

    最近学习了一下SPI的驱动软件 xff0c 在此将其进行总结 本文使用的代码为pixhawk 1 5 5版本的源码 源码下载地址 第一步函数入口 xff1a 老规矩 xff0c 所有px4的代码的函数入口都是在启动脚本中 xff0c 启动脚
  • ovn-controller源码分析

    ovn controller是运行在chassis hypervisor上的后台进程 xff0c 向上通过OVSDB协议连接到OVN sourthbound数据库 xff0c 向下通过OVSDB协议连接到ovs数据库 xff0c 并通过op
  • RxJava2源码分析——Map操作符

    本文章用的RxJava和RxAndroid版本如下 xff1a implementation 39 io reactivex rxjava2 rxjava 2 2 6 39 implementation 39 io reactivex rx
  • RxJava 2.x 源码分析 之 FlatMap

    FlatMap 官方定义 xff1a 把被观察者发射出去的事件转化成新的子被观察者 xff0c 然后把这些发射量展开平铺后统一放到一个被观察者中 官方文档 简单来讲就是把被观察者每次发射的事件转化成一个子被观察者 xff0c 然后通过合并
  • 【docker 17 源码分析】docker pull image 源码分析

    一 Image主要命令 docker images xff08 所有 xff09 docker images java xff08 所有java xff09 docker images java 8 xff08 固定tag的jave xff
  • 微信 Mars Android Sample 源码分析

    注 xff1a 原文首发地址 零 前言 Mars 是微信官方开源的跨平台跨业务的终端基础组件 xff0c 具有高质量网络连接模块 长短连接 智能心跳机制 高性能日志模块和网络监测组件等 而整个 Android Sample 是基于 Mars
  • Hadoop源码分析——JobClient

    1 MapReduce作业处理过程概述 当用户使用Hadoop的Mapreduce计算模型来进行处理问题时 xff0c 用户只需要定义所需的Mapper和Reduce处理函数 xff0c 还有可能包括的Combiner Comparator
  • MAVROS 源码分析

    一 安装 MAVROS 利用机载计算机对 PX4 飞控进行 OFFBOARD 控制 xff0c 需要在机载计算机上安装 ROS 的 MAVROS 包 安装方式可以参考 PX4 开发者网站 xff0c 有二进制文件安装和源码安装两种方式 xf
  • Android 11 PackageManagerService源码分析(二):Packages.xml详解

    1 开篇 在上一篇文章中提到Settings类会在PackageManagerService启动过程中对packages xml等一些列xml文件进行解析 那么有以下问题 xff1a 这些文件记录了什么内容 xff1f 为什么需要这些文件
  • 自己动手写C++迭代器

    综述 关于STL iterator和 iterator adapter 的部分我已在先前的博客 stl源码剖析笔记之iterator 中有所提及 xff0c 下面我们可以试着自己动手写一个简单的迭代器工具 step iterator xff
  • Android 进阶解密:根 Activity 启动过程

    一 根 Activity 启动过程 可以分为三个部分 Launcher 请求 AMS 过程 AMS 到 ApplicationThread 的调用过程 ActivityThread 启动 Activity 二 Launcher 启动 AMS
  • 如何动态调试Python的第三方库

    注意 本文方法仅限于调试安装时附带py源码的库 如sklearn 引入 用sklearn中的sklearn feature extraction text TfidfTransformer来获取TF特征 但发现sklearn的计算结果与我手
  • Mybatis执行过程源码解析

    使用Mybatis执行查询sql代码示例 SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder build Resources getResourceAsReade
  • 阿里云OSS请求文件跨域问题Access-Control-Allow-Origin

    跨域问题网上很多解决方案提示到这里配置但是不生效 一定要勾选Vary Origin这个选项 请求的时候浏览器记得请求在控制台要清理缓存
  • kaldi中SHELL调用C++程序过程源码分析

    引入 kaldi真正的核心源码 都是C 写成的 这个结论可以从如下两点得以确认 1 在kaldi的源码kaldi src目录下 能看到很多扩展名为 cc的源程序 这是linux下C 源码 2 在源码中 比如kaldi src featbin
  • Spring创建Bean的全过程(一)

    Spring测试环境搭建 Spring模块概览 Spring中八大模块 黑色表示该模块的jar包 也就是组件 例如我们想要使用IOC容器 也就是绿色的CoreContainer 我们需要导入Beans Core Context SpEL s
  • Log4j2注入漏洞万字剖析-汇总收藏版(攻击步骤、漏洞原理、2.15.0-RC1绕过原理以及2.15.0、2.16.0修复原理)

    系列文章 2 15 0之前版漏洞相关文章 Log4j2注入漏洞 CVE 2021 44228 万字深度剖析 一 开篇与基础知识 Log4j2注入漏洞 CVE 2021 44228 万字深度剖析 二 漏洞原理 Log4j2注入漏洞 CVE 2
  • Golang 中实现注解功能的思路分析

    文章目录 注解的作用 一些实现注解的开源 Golang 工程 Golang 中实现注解的基本思路 第一步 源码词法分析 第二步 代码生成 第三步 自动执行 番外 Golang 中一种代替注解的方案 注解的作用 提到注解 需要短暂的说明其前世

随机推荐

  • Blender基础:几何节点修改器

    1 几何节点修改器 几何节点修改器Geometry Node Editor 本质上一种自定义修改器 2 节点的添加 添加节点 节点Node 代表一个函数 功能 演示 添加一个节点 几何数据 变换 连接端口 修改节点的参数 几何节点修改器 是
  • ssh端口转发禁用

    配置1 vi etc ssh sshd config 修改内容 AllowTcpForwarding yes GatewayPorts yes 生效 etc rc d init d sshd restart 配置2 vi etc sysct
  • react中使用useMemo和useCallback

    之前学到的memo是用来优化函数组件的重渲染问题 当传入的属性值都没变化时就不会触发组件的重渲染 否则组件就会重渲染 和类组件中的PureComponent组件是类似 useMemo功能是判断组件中的函数逻辑是否重新执行 用来优化性能 im
  • LUA中的and与or

    逻辑运算符认为false和nil是假 false 其他为真 0也是true and的优先级比or高 其它语言中的and表示两者都为真的时候 才返回为真 而只要有一个假 都返回假 lua虽不仅返回假的语义 还返回导致假的值 也就是说 a an
  • webbench 压力测试软件

    1 安装 wget http home tiscali cz cz210552 distfiles webbench 1 5 tar gz tar xzvf webbench 1 5 tar gz cd webbench 1 5 make
  • Ubuntu Linux输入法fcitx方块乱码解决设置

    Ubuntu Linux 10 04自带的输入法不是很好用 linux下的输入法和windows下的比起来还是有很大差距的 相对来说比较好的输入法我看还是fcitx还不 错 不过在Ubuntu下通过 sudo apt get install
  • java 接口返回json数据封装

    前言 首先 采用的是springboot 在controller中使用了 RestController或者 ResponseBody注解 返回的数据本身就是json格式 但是这样的json串在前后端分离使用中并不满足实际的效果 因此需要进行
  • 18. Python中的模块与包

    Hi 大家好 我是茶桁 这一段Python之旅怎么样 还算顺利吧 之前我们都学习了些什么 有基本常识 流程 函数 不同类型的数据以及一些模块对吧 并且还做了一些练习来巩固所学过的内容 那么今天 我们接着来学习模块 不过今天要学的模块和以往不
  • IPP图像处理常用函数说明

    IPP图像处理常用函数 专栏目录 说明 一 阈值处理 1 函数原型 2 计算公式 3 Threshold Val函数 1 函数原型 2 说明 4 相关参数含义 1 源图像指针和步长 2 roiSize 3 ippCmpOp 5 官网开发手册
  • mysql日期和字符串相互转化

    一 日期转字符串 1 函数 date format date format 2 例 select date format now Y m d H i S 结果 2017 10 29 14 02 54 select date format n
  • C++成员函数指针的定义与使用

    成员函数指针是相对于对象来说的 在说成员函数指针之前 先要明白普通函数指针的定义与使用 用vs先建立一个项目 名称随意 然后在源文件中声明并且定义一个函数 代码如下 include pch h include
  • uboot简介

    1 嵌入式Linux软件结构与分布 在一般情况下嵌入式Linux系统中的软件主要分为以下及部分 1 引导加载程序 其中包括内部ROM中的固化启动代码和Boot Loader两部分 而这个内部固化ROM是厂家在芯片生产时候固化的 作用基本上是
  • CUDA学习笔记(5) 原子操作

    原子操作是指 当一个线程 Thread 要对同一个显存变量依次进行 读 计算 写 的操作时 这个 读 计算 写 的操作必须连贯地执行 中间不能插入任何其他操作 举个例子 假设我们想要用GPU统计 char data 0 32 1 0 1 这
  • 数学建模—降维—主成分分析(PCA)

    清风数学建模笔记 可用python或者matlab实现 主成分分析是一种降维算法 它能将多个指标转换为少数几个主成分 这些主成分是原始变量的线性组合 且彼此之间互不相关 且能反映出原始数据的大部分信息 一般来说 当研究的问题涉及到多变量且变
  • elasticsearch 中获得 分词匹配 +(or) 全词模糊匹配 的查询结果(boolQuery)

    Override public Response selectStructuredDataList StructuredDataDTO structuredDataDTO StructuredDataTypeEnum structuredD
  • Unity3d开发中,用Visual Studio编写c#脚本代码出现无法代码补全的解决方案

    VS版本 Visual Stduio 2017 第一步 VS菜单栏 gt 工具 gt 获取工具和功能 gt 打开visual studio installer 如下图勾选unity工作负载后安装 第二步 Unity菜单栏 gt edit g
  • GPT应用开发 - langchain 初始化

    依赖安装 langchain pip install langchain or conda install langchain c conda forge 配置环境 使用langchain依赖一个或者多个模型 数据库 外部的api接口等 下
  • 力扣刷题系列——位运算篇

    目录 几道常见的位运算算法题 1 不用加号的加法 2 最大单词长度乘积 3 比特位计数 4 整数替换 5 每个元音包含偶数次的最长子字符串 6 绘制直线 7 只出现一次的数字III 8 颠倒二进制位 9 两数相除 几道常见的位运算算法题 以
  • python基础知识三——try与except处理异常语句

    try except介绍 与其他语言相同 在python中 try except语句主要是用于处理程序正常执行过程中出现的一些异常情况 如语法错 python作为脚本语言没有编译的环节 在执行过程中对语法进行检测 出错后发出异常消息 数据除
  • 汇编 - ORG指令详解

    ORG指令 ORG是Origin的缩写 起始地址 源 在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址 如果不用ORG规定则汇编得到的目标程序将从0000H开始 例如 ORG 2000H START MOV AX 00