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

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

第一步:编写汇编源程序

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

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

二、源程序

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 命令结束程序 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

向量数据库引领 AI 创新——Zilliz 亮相 2024 亚马逊云科技中国峰会

2024年5月29日,亚马逊云科技中国峰会在上海召开,此次峰会聚集了来自全球各地的科技领袖、行业专家和创新企业,探讨云计算、大数据、人工智能等前沿技术的发展趋势和应用场景。作为领先的向量数据库技术公司,Zilliz 在本次峰会上展…

[代码复现]Self-Attentive Sequential Recommendation

参考代码:SASRec.pytorch 可参考资料:SASRec代码解析 前言:文中有疑问的地方用?表示了。可以通过ctrlF搜索’?。 环境 conda create -n SASRec python3.9 pip install torch torchvision因为我是mac运行的,所以device是mps 下面…

【计算机网络】——概述(图文并茂)

概述 一.信息时代的计算机网络二.互联网概述1.网络,互连网,互联网(因特网)1.网络2.互连网3.互联网(因特网) 2.互联网简介1.互联网发展的三个阶段2.互联网服务提供者(ISP)3.互联网的组…

计算器状态的初始化之旅

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、状态属性的创建与初始化 三、内部函数与显示逻辑 四、总结与展望 一、引言 在…

使用element的提示框并修改css

使用el-tooltip来做提示框&#xff1a; <el-tooltip popper-class"popper" content"敬请期待" placement"right"><div><i class"iconfont icon-lianjie-01"></i><span>输入链接</span></div&…

掀桌子、降价、免费...之后,国内大模型应用进入高速时代

5月15日&#xff0c;字节跳动打响大模型市场价格战第一枪&#xff1b;5月21日阿里云更狠&#xff0c;价格降了97%&#xff0c;比字节还便宜37.5%同日&#xff0c;百度更为激进&#xff0c;直接宣布其两款主力模型ENIRE Speed和ENIRE Lite全面免费&#xff1b;5月22号&#xff0…

怎么花草识别?方法有三种!

怎么花草识别&#xff1f;在这个五彩斑斓的世界里&#xff0c;花草是我们生活中不可或缺的一部分。它们点缀着我们的环境&#xff0c;为我们带来无尽的美丽与惊喜。然而&#xff0c;面对众多的花草种类&#xff0c;你是否曾感到困惑和迷茫&#xff0c;不知道如何识别它们&#…

沃通CA参与《证书透明规范》及《自动化证书管理规范》两项商密标准制定

沃通CA加入由零信技术牵头的两项商密标准《证书透明规范》及《自动化证书管理规范》编制工作。沃通CA作为国内依法设立的电子认证服务机构与领先的SSL证书服务商&#xff0c;很荣幸参与到两项商密标准的编制工作中&#xff0c;不仅提供多年SSL证书领域的应用经验&#xff0c;还…

Spring Boot详解:深入了解与实践

文章目录 1. Spring Boot简介1.1 什么是Spring Boot&#xff1f;1.2 Spring Boot的历史背景1.3 Spring Boot的核心特点 2. Spring Boot的核心概念2.1 自动配置2.1.1 自动配置原理2.1.2 自定义配置 2.2 Spring Boot Starter2.3 Spring Boot CLI 3. Spring Boot的主要功能模块3.1…

php 实现:给图片加文字水印,图片水印,压缩图片

演示环境: 1、windows10 2、phpstudy 3、php7.4 一、案例演示: 二、素材准备 1、准备一张原始图片 2、准备一张水印图片(透明底图的最好) 3、字体库(windows系统自带的字体库,路径在:C:\Windows\Fonts) 4、开启GD库 三、图片添加水印 1、文字水印封装类 FontWater…

Qt Creator中, ui设计中设置属性无效, 会自动变回去问题

最近学qt遇到个问题, 很奇怪, 具体表现为: 我想修改这个字体大小为12, 但是修改后会自动变回9, 我读取qss方式设置样式, 依然无效&#xff01;找了很久&#xff0c;最终发现是我在最上层设置了字体大小&#xff0c; 导致下面的所有控件&#xff0c; 全部设置字体无效&#xff…

丢失的数字 ---- 位运算

题目链接 题目: 分析: 解法一: 哈希表解法二: 高斯求和解法三:位运算 异或运算根据运算的性质, 相同的两个a异或 0 以示例一为例: 数组中有0,1,3, 缺失的数字是2, 那么只要我们将数组与0,1,2,3 异或, 就会得到2 代码: class Solution {public int missingNumber(int[] num…

干货教程【AI篇】| 腾讯开源数字人生成神器MuseTalk+MuseV完整整合包获取

关注文章底部公众号回复关键词【muset】获取整合包 双击即可使用&#xff0c;简单方便&#xff01; MuseVMuseTalk MuseV和MuseTalk均为腾讯开源的数字人AI工具 完整流程是&#xff1a; 一张数字人照片->MuseV生成数字人视频->MuseTalk生成音频唇形同步视频 其中Mus…

超简单白话文机器学习 - 模型检验与评估(含算法介绍,公式,源代码实现以及调包实现)

1. 模型检验 1.1 Holdout交叉验证 1.1.1 算法 在这种交叉验证技术中&#xff0c;整个数据集被随机划分为训练集和验证集。根据经验&#xff0c;整个数据集的近 70% 用作训练集&#xff0c;其余 30% 用作验证集。 优点&#xff1a;可以快速进行区分&#xff0c;仅仅通过一次区…

期权的时间价值是什么?和期权内在价值有啥不同?

今天带你了解期权的时间价值是什么&#xff1f;和期权内在价值有啥不同&#xff1f;期权的内在价值&#xff0c;是指期权立即执行产生的经济价值。 期权的时间价值是什么&#xff1f; 期权的时间价值是期权价格的一个重要组成部分&#xff0c;也被称为期权的外在价值。它是指期…

【React篇】简述React-Router 的实现原理及工作方式

React Router 路由的基础实现原理分为两种&#xff0c;如果是切换 Hash 的方式&#xff0c;那么依靠浏览器 Hash 变化即可&#xff1b;如果是切换网址中的 Path&#xff0c;就要用到 HTML5 History API 中的 pushState、replaceState 等。在使用这个方式时&#xff0c;还需要在…

【Linux】多线程——线程概念|进程VS线程|线程控制

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;理解【Linux】多线程——线程概念|进程VS线程|线程控制 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! &…

如何使用前端表格控件实现多数据源整合?

前言 作为表格产品的典型应用场景之一&#xff0c;几乎所有的行业都会存在类 Excel 报表开发这样的应用场景&#xff0c;而在这些应用场景中&#xff0c;经常会遇见下面的这些痛点&#xff1a; 报表数据往往来自多个不同的数据源&#xff0c;需要报表系统能够同时连接多个数据源…

数字化转型推动生物技术企业增长—纷享销客与集萃药康共探新动力

上周&#xff0c;在南京锦创书城&#xff0c;一场主题为“生物技术企业增长新动力&#xff1a;以客户为中心的数字化转型与创新”的研讨会圆满落幕。此次活动由纷享销客江苏分公司联合江苏集萃药康生物科技股份有限公司共同举办&#xff0c;吸引了众多生物技术领域企业的负责人…

华媒舍:10种欧洲地区媒体发稿推广技巧

1.了解欧洲地区媒体自然环境必须掌握欧洲地区媒体的发稿推广方法&#xff0c;首先要对欧洲地区媒体自然环境有一定的了解。包含不一样国家的主力媒体&#xff0c;他的阅读者人群、销售市场遮盖及其报导风格等。仅有熟悉媒体自然环境&#xff0c;才能更好的制订营销推广策略。 …