王爽《汇编语言》第四章 笔记

news/2025/10/14 0:12:25/文章来源:https://www.cnblogs.com/niedongliang/p/19139786

4.2 源程序

4.2.1 伪指令

在汇编语言的源程序中包含两种指令:汇编指令、伪指令。
(1)汇编指令:有对应机器码的指令,可以被编译为机器指令,最终被CPU所执行。
(2)伪指令:没有对应的机器指令,最终不被CPU所执行;伪指令由编译器执行,编译器根据伪指令来进行相关的编译工作。

segment…ends

segment和ends的功能是定义一个段,segment说明一个段开始,ends说明一个段结束。

段名 segment
...
段名 ends
  • segment和ends是一对成对使用的伪指令。

  • segment和ends是在写可被编译器编译的汇编程序时,必须用到的一对伪指令。

  • 一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。

  • 一个有意义的汇编程序中至少要有一个代码段。

end

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

  • 写完程序要在结尾处加上伪指令end。否则编译器不知道程序在何处结束。

  • 区分end和ends:ends与segment成对使用,标记一个段的结束,ends可以理解为end segment;而end的作用是标记整个程序的结束。

assume

伪指令assume的含义是“假设”。它假设某一段寄存器和程序中的某一个用segment…ends定义的段相关联。

通过assume可以使编译程序将段寄存器和某一个具体的段相联系。

4.2.2 源程序中的“程序”

4.2.4 程序的结构

// 程序4.2:计算2的立方
assume cs:abc // (4)abc被当作代码段来用,所以应该将abc和cs联系起来
abc segment // (1)定义一个段,名称为abc,与结尾abc ends搭配使用// (2)在这个段中写入汇编指令mov ax, 2  add ax, axadd ax, ax// (5)程序返回mov ax, 4c00Hint 21H
abc ends
end // (3)指出程序在何处结束

4.2.5 程序返回

// 程序返回指令举例,本章暂时只需要记忆这两条指令即可
mov ax, 4c00H
int 21H // 必须输入H才能通过,int可以理解为interrupt

4.3 编辑源程序

参考blog

【王爽《汇编语言(第4版)》笔记】第4章:第一个程序_操作系统的外壳 王爽-CSDN博客

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

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

相关文章

10.13总结

import java.util.*; import java.util.concurrent.TimeUnit; public class ArithmeticPractice { private Set generatedQuestions = new HashSet<>(); private List questions = new ArrayList<>(); pri…

MySql安装中的问题

是一台已经安装过但是失败了的win 1. 2025-10-13T12:42:20.566779Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting. 2025-10-13T12:42:20.566788Z 0 [ERR…

10.14总结

import java.util.*; import java.util.concurrent.TimeUnit; public class ArithmeticPractice { private Set generatedQuestions = new HashSet<>(); private List questions = new ArrayList<>(); pri…

题解:AT_agc050_b [AGC050B] Three Coins

传送门 注:如无特殊说明,本篇题解中所有的序列,均用红色标示已经放置硬币的位置。若本次操作为拿走硬币,用蓝色标示本次操作拿走的硬币的位置,用黑色标示从未放过硬币或放置过硬币且在本次操作之前的操作中被拿走…

go:generate 指令

gogenerate 指令 go generate 命令是在Go语言 1.4 版本里面新添加的一个命令,当运行该命令时,它将扫描与当前包相关的源代码文件,找出所有包含 //go:generate 的特殊注释,提取并执行该特殊注释后面的命令。 命令格…

光栅化

光栅化 Rasterrization—光栅化(三角形的离散化) 屏幕(Screen)在图形学我们可以被抽象为一个二维数组,其中二维数组中的每个元素是像素( pixel )。 屏幕空间(screen space)是由数组构成的平面坐标系,每一个像…

图形学中的变换

图形学中的变换 二维变换 缩放变换(Scale)如上图,如果想把一个图形缩小为原来的0.5倍,那么就需要x坐标变为0.5倍,y坐标也变为0.5倍,可以用以下表达式表示这两个表达式可以用矩阵的形式表示如下Sx表示在x轴方向上…

Unity URP 体积云

Unity URP 体积云 ​ 好久之前开的体积云,因为期末考试和过年拖了很久,这几天才算整完。记录一样实现的思路,方便日后忘记了回来复习。 ​ 云的渲染有多种实现方法,我实现的是基于RayMarching的体积云体渲染,也…

使用DirectX绘制天空盒并实现破坏和放置方块

使用DirectX绘制天空盒并实现破坏和放置方块 绘制天空盒 由于项目中的DxTex软件使用不了,所以直接使用了方法二,将项目中的文件名直接修改,不过这里要注意获取的六个正方形贴图要用正确的顺序读取,也就是+X,-X,+…

编写DX12遇到的坑

编写DX12程序遇到的坑 ​ 写DX12每次遇到Bug都会卡好久,结果大部分时候最后都发现是一些小问题导致的,故将自己遇到的坑都写下来,方便后续遇到时回头查阅。 使用ClearDepthStencil清理DepthBuffer的时候把其他资源…

编写DX12时使用的辅助类

编写DX12时使用的辅助类 有一段时间没有学DX12,导致很多东西都忘了,跟着教程里写的东西还好,略看一遍教程就想起来的,但是自己封装的很多类就算写了注释过了一段时间也基本忘光,而且翻来翻去的也不方便,为了快速…

HLSL语法

语义 语义的概念语义xxxx:+ 大写单词,是用来限定输入值的来源、输出值的去向,其中那些大写单词都是系统提供的,我们需要用他们去填充我们的参数,然后传到顶点着色器和片元着色器中,进行进一步的计算,最后再通过…

DirectX12初始化

DirectX12初始化 这几天跟着龙书把dx12的初始化过了一遍,写点东西记一下,免得之后又忘了。 创建d3d设备 d3d设备相当于对显示适配器的抽象,显示适配器一般为显卡,也可由软件来模拟。可通过下列接口来创建一个d3d设…

用Vmware ESXI6.7离线包封装网卡驱动

用Vmware ESXI6.7离线包封装网卡驱动本来想装最新版的Vmware ESXI9.0的,但安装时提示找不到网卡无法安装,于是在网上搜索一番,发现可以用离线升级包封装网卡驱动的办法进行安装,但由于我的网卡是Realtek瑞昱RTL811…

CF2159B

Sol 假设 \(n<m\)。 考虑枚举列,然后对于每个位置分别做。 但是这非常难做,然后我们考虑包含 \([l,r]\) 这几行的最小矩形,然后发现这个东西可以在枚举列的时候同时计算,然后就做完了。 Code Link。

登录校验---Filter过滤器

过滤器(Filter)概念: Filter 过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。 过滤器一般完成一些通用的操作,比如: 登录校验、统一编码…

环境变量 Path 配置实战指南:从“能用”到“专业”--两种配置环境变量的方法

本指南将通过一个完整的实例,手把手教你如何配置 `Path` 环境变量。我们将超越“如何做”,深入探讨“为什么这么做”,让你彻底理解直接路径与引用路径的本质区别。我们将以配置 Java 开发环境为例,让你清晰地看到每…

10月13日

上午建模语言和数据结构课程 下午听讲Java知识点和练习数据库

Ubuntu22.04安装CH340/CH341驱动

转载自: 陈拓 2024/12/20-2024/12/20 https://zhuanlan.zhihu.com/p/137683332711. 我的系统硬件系统架构arch操作系统版本lsb_release -a2. CH340G,USB-串口转换器3. Ubuntu22.04安装CH340驱动 3.1 用lsusb查看USB插…