8086 汇编笔记(三):第一个程序

news2024/12/29 17:17:27

一、一个源程序从写出到执行的过程

第一步:编写汇编源程序

第二步:对源程序进行编译连接

第三步:执行可执行文件中的程序 

二、源程序

codesg segment         ; 定义一个段,段的名称为“codesg”,这个段从此开始

    mov ax,0123H
    mov bx,0456H
    add ax,bx
    add ax,ax

    mov ax,4C00H
    int 21H

codesg ends            ; 名称为“codesg”的段到此结束

end

伪指令: 

        1. segment 和 ends 的功能是定义一个段,segment 说明一个段开始,ends 说明一个段结束。一个段必须有一个名称来标识 

        2.  end 是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指 end 就结束对源程序的编译

标号:

        汇编源程序中,除了汇编指令和伪指令外,还有一些标号,比如 “codesg“ 一个标号指代了一个地址。

程序返回:

        mov ax,4C00H
        int 21H 

三、编译

完成对源程序的编辑后,可以对其进行编译,生成包含机器代码的目标文件 

VS Code 中下载插件 MASM/TASM

打开DOSBox 挂载 

编译过程:

解析:

        1. 运行 masm 程序,第一个默认文件后缀名是 .asm,所以直接输入 1 (在同一目录下)

        2. 提示输入要编译出的目标文件的名(回车默认为 1.obj)

        3. 提示输入列表文件的名称(回车跳过)

        4. 提示输入交叉引用文件的名称(回车跳过)

1. 源文件(.asm)

源文件是你编写的汇编代码,通常扩展名为 .asm。这是编译过程的输入文件,其中包含了你的汇编语言指令。

作用

  • 包含程序的汇编源代码。
  • 由 MASM 编译器读取和处理,生成目标文件。

2. 目标文件(.obj)

目标文件是汇编源文件经过编译后生成的中间文件,通常扩展名为 .obj。它包含了机器码,但还不是一个可执行文件。

作用

  • 包含了机器码和重定位信息,可以被链接器处理。
  • 由 MASM 编译器生成,用于后续的链接步骤。

3. 列表文件(.lst)

列表文件是编译过程中可选生成的文件,通常扩展名为 .lst。它包含了源代码、生成的机器码、符号表以及其他调试信息。

作用

  • 用于调试和查看编译过程中的详细信息。
  • 方便开发者检查源代码与生成的机器码的对应关系。

4. 交叉引用文件(.crf)

交叉引用文件也是编译过程中可选生成的文件,通常扩展名为 .crf。它列出了源代码中每个符号(变量、标签等)的定义和使用位置。

四、连接

连接过程

解析:

        1. 运行 link 程序,第一个默认文件后缀名是 .obj,所以直接输入 1 (在同一目录下)

        2. 提示输入要生成的可执行文件的名称,默认为 1.exe

        3. 提示输入映像文件的名称(回车跳过)

        4. 提示输入库文件的名称(回车跳过)

        5. 最后一个警告是没有栈段

1. 目标文件(.obj)

作用

  • 包含汇编代码编译后的机器码和重定位信息。
  • 被 LINK 程序读取并链接成可执行文件。

2. 可执行文件(.exe)

作用

  • 最终生成的可执行程序文件。
  • 可以在操作系统下运行。

3. 映像文件(.map)

作用

  • 可选文件,用于调试。
  • 包含程序的内存映像和符号信息。
  • 帮助开发者理解程序的内存布局和符号地址。

4. 库文件(.lib)

作用

  • 可选文件,包含预编译的函数和程序代码。
  • 在链接过程中,LINK 程序可以使用库文件中的代码。
  • 有助于重用代码和减少可执行文件的大小。 

五、以简化方式进行编译和连接

注意:同一目录下才不用加路径

六、程序执行过程的跟踪

为了观察程序的运行过程,可以使用 Debug

使用 T 命令单步执行每一条命令,到了 int 21H 用 P 命令结束程序 

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

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

相关文章

day25-XML

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

散射技术在AI去衣中的作用及其伦理考量

引言: 在人工智能的众多应用领域中,图像处理一直是一个热门话题。近年来,随着深度学习技术的飞速发展,AI去衣功能引起了广泛的关注和讨论。这项技术的核心在于利用先进的算法对图像进行处理,以实现从图片或视频中移除衣…

java家政上门系统源码,一套同城预约、上门服务的家政系统源码

一款同城预约、上门服务的家政系统源码,用户端、服务端、管理端各端相互依赖又相互独立,支持选择项目、选择服务人员的下单方式,支持多城市并且设置每个城市专属服务项目。 技术架构:java1.8springboot mysql htmlThymeleaf uni…

Spring Cloud Alibaba-09-Seata分布式事务

Lison <dreamlison163.com>, v1.0.0, 2024.5.03 Spring Cloud Alibaba-09-Seata分布式事务 文章目录 Spring Cloud Alibaba-09-Seata分布式事务分布式事务基础事务本地事务分布式事务分布式事务的场景 分布式事务的解决方案全局事务可靠消息服务最大努力通知TCC事务 Se…

【C++】vector和list的迭代器

目录 前言 一.迭代器的使用 1.vector迭代器 2.list迭代器的使用 二.迭代器失效问题 1.vector迭代器失效问题 2.list迭代器失效问题 三.vector和list的对比 前言 我们在学习CSTL部分的时候&#xff0c;在vector和list的部分初步认识了迭代器&#xff0c;以及在初学阶段…

autocad背景色、引线文字大小

一、改变背景 在命令行输入op&#xff0c;回车&#xff0c;弹出配置对话框&#xff1a; 二、改变引线文字大小 选中引线&#xff0c;右键选择【特性】&#xff0c;在文字选项卡中设置文字高度&#xff1a;

小程序项目创建与Vant-UI引入

一&#xff0c;创建小程序项目 AppID可先用测试号&#xff1b; 模板来源选择 ’全部来源‘ &#xff0c;’基础‘ 。模板一定JS开头的&#xff1b; vant-weapp 官网 vant-Weapp 二&#xff0c;下载vant-weapp 组件 1&#xff0c;在新项目中打开 ’调试器‘&#xff1b; 2…

2024年人工智能与机械自动化技术国际会议( ICAIMAT 2024)

2024年人工智能与机械自动化技术国际会议( ICAIMAT 2024) 会议简介 随着科技的飞速发展&#xff0c;人工智能和机械化自动化技术已成为全球产业升级和经济发展的重要动力。为了进一步促进国际交流与合作&#xff0c;推动人工智能和机械化自动化技术的创新与应用&#xff0c;我…

【IDEA】-使用IDEA查看类之间的依赖关系

1、父子类的继承、实现关系 1.1、使用CTRL Alt U 选择 java class 依据光标实际指向的类位置 用实心箭头表示泛化关系 是一种继承的关系&#xff0c;指向父类 可以提前设置需要显示的类的属性、方法等信息 快捷键 Ctrl Alt S &#xff0c;然后搜索 Diagrams 1.2、使用…

java期末突击

目录 1. 快速入门 2. 类 3. 成员方法 4. 构造器 5. 单例模式 6. 继承 7. 抽象类 8. 多线程&#xff08;Thread与Runnable&#xff09; 1. 快速入门 public class Hello {public static void main(String[] args){System.out.println("Hello,World&q…

对象转为Map

方案一&#xff0c;Jackson String json objectMapperFace.writeValueAsString(contract);Map<String,Object> map objectMapperFace.readValue(json, Map.class);方案二 &#xff0c; apache BeanUtils Map<String,String> beanMap null;try {beanMap BeanUti…

极简朋友圈rmoments多用户版

什么是 moments &#xff1f; moments 是仿照微信朋友圈开发的个人极简朋友圈。但目前不支持多用户。 什么是 rmoments &#xff1f; rmoments 复刻自 moments&#xff0c;除了支持全部原生功能外&#xff0c;最大的特点是支持多用户。 原版 moments 目前不支持多用户。rmoment…

整理GTX收发器示例工程(高速收发器十一)

前文分析了xilinx官方提供的GTX IP示例工程&#xff0c;该代码的结构比较混乱&#xff0c;本文将该代码进行梳理&#xff0c;形成一个便于使用的模块&#xff0c;后续如果要使用多通道的收发器&#xff0c;多次例化某个模块就行了。 下图是官方例程中GTX IP相关模块的RTL视图&a…

ArcGIS教程(02):创建多模式网络数据集

启动“新建网络数据集”向导 命名网络并选择源要素类 输入网络数据集名称【ParisMultimodal_ND】&#xff0c;点击【下一页】 点击【全选】网络数据集中的要素类 点击【下一页】 设置连通性和高程策略 点击【连通性】 Metro_Entrances 的每个要素与街道要素类的折点重…

九部门联合发文知识产权保护体系建设,微版权打造全链条知产保护

近日&#xff0c;国家知识产权局会同中央宣传部、最高人民法院、最高人民检察院、公安部、司法部、商务部、海关总署、国家市场监督管理总局等八部门联合印发《知识产权保护体系建设工程实施方案》(以下简称《方案》)&#xff0c;共同加强知识产权保护体系建设。 《方案》是新时…

如此简单,一文带你玩转接口自动化上(Python + Pytest + Requests + Allure )

一. 前言 哈喽大伙们好&#xff0c;好久不见距离上次更新博客已经有一年之久了&#xff0c;这将近一年的时间小编主要的时间都花在了实习和24届校招上面了&#xff0c;最终也是收获满满&#xff0c;选择了一个还不错的offer&#xff0c;感谢一路走来的自己和身边朋友的帮助&…

Visual Studio中调试信息格式参数:/Z7、/Zi、/ZI参数

一般的调试信息都保存在pdb文件中。 Z7参数表示这些调试信息保存到OBJ目标文件中&#xff0c;这样的好处是不需要单独分发PDB文件给下游。Zi就是把所有的调试信息都保存在pdb文件中&#xff0c;以缩小发布文件的大小。ZI和Zi类似&#xff0c;但是增加了热重载的能力&#xff1…

【传知代码】MonoCon解读与复现(论文复现)

前言&#xff1a;在快速发展的计算机视觉领域&#xff0c;单目视觉&#xff08;Monocular Vision&#xff09;技术凭借其独特的优势和广泛的应用前景&#xff0c;逐渐成为了研究的热点。MonoCon作为单目视觉领域的一项重要技术&#xff0c;其独特的算法设计和高效的性能表现&am…

使用pkg打包了一个使用了sqlite3的nodejs项目,启动后闪退

从截图来看&#xff0c;问题出在 sqlite3 模块上。说明在打包过程中&#xff0c;sqlite3 模块的 .node 文件没有正确加载。 紧急解决方法&#xff1a; 其实就是exe文件还需要node_modules中的sqlite3 依赖&#xff0c;我们直接在系统顶级放一个node_modules&#xff0c;且其中只…

(2024,Video2Game,NeRF,Mesh,物理模块,游戏引擎)通过单个视频实现实时、交互、逼真且兼容浏览器的环境

Video2Game: Real-time, Interactive, Realistic and Browser-Compatible Environment from a Single Video 公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 3. Video…