【汇编】第一个汇编程序(学习笔记)

news2025/2/25 21:13:19

一、程序从编写到执行的过程

1、编写

Notepad++ / UltraEdit + 汇编语言

2、编译、连接

MASM.EXE:编译产生目标文件

LINK.EXE:连接,产生可执行文件

连接作用:源程序分为多个子程序编译后,连接在一起。或程序调用其他库的子程序

可执行文件

1、程序:汇编语言的机器码

2、数据:源程序中定义的数据

3、相关描述信息

3、执行

将程序和数据加载到内存中,并初始化

二、源程序

assume cs:codesg
codesg segment
start:	mov ax,0123H
		mov bx,0456H
		add ax,bx
		add ax,ax
		
		mov ax,4c00h
		int 21h
codesg ends
end

1、汇编指令:有对应机器码,被执行

2、伪指令:(除了汇编的部分)不被CPU执行,是由编译器执行的命令,编译器根据伪指令进行编译工作

3、段:段名 segment段名 ends 是成对使用的伪指令。一个汇编程序是由多个段组成

4、段的作用:存代码、存数据、作栈空间

5、end是汇编的结束标记(伪指令)

6、assume:关联假设。假设某一段寄存器和程序中的某一个用segmert…ends定义的段相关联,编译程序可以将段寄存器和其一个具体的段相联系

7、标号:代替了一个地址

8、程序返回:DOS是单任务操作系统,程序执行结束后,将CPU的控制权还给DOS

;中断机制
mov ax,4c00h
int 21h

三、编写程序

源文件:*.asm

编译:masm 1.asm

连接:link 1.obj

执行:1.exe

编译连接也可以用:ml 1.exe

四、exe执行原理

1、CMD运行

2、cmd将1.exe加载进内存

3、cmd把cpu的CS:IP指向1.exe入口

4、运行结束,把CS:IP指回cmd

五、操作系统的外壳

操作系统提供一个Shell(外壳)程序,用户使用shell操作操作系统

DOS中有一个cmd.exe,是DOS中的命令解释器,也就是DOS的Shell

六、Debug

Debug将1.exe加载入内存,没置入口,但Debug利用中断指令,不放弃CPU的控制

debug 1.exe

t:执行下一条代码

R:查看寄存器地址

P:执行int 21

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

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

相关文章

【JavaEE】网络编程---UDP数据报套接字编程

一、UDP数据报套接字编程 1.1 DatagramSocket API DatagramSocket 是UDP Socket,用于发送和接收UDP数据报。 DatagramSocket 构造方法: DatagramSocket 方法: 1.2 DatagramPacket API DatagramPacket是UDP Socket发送和接收的数据报。…

SQL查询优化---单表使用索引及常见索引失效优化

如何避免索引失效 1、全值匹配 系统中经常出现的sql语句如下: EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.age30 EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.age30 and deptid4EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.age30 and dept…

美团真题解析

文章目录 🌟 美团真题解析🍊 美团面试真题-美团招聘简介🍊 美团面试真题-介绍一下MyBatis的缓存机制🎉 一级缓存🎉 二级缓存 🍊 美团面试真题-谈谈jvm的内存模型🍊 美团面试真题-谈谈你知道的垃…

手写 Promise(1)核心功能的实现

一:什么是 Promise Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。 Promise对象有以下两个特点。 (1)对象的状态不受…

[SQL开发笔记]WHERE子句 : 用于提取满足指定条件的记录

SELECT DISTINCT语句用户返回列表的唯一值:这是一个很特定的条件,假设我需要考虑很多中限制条件进行查询呢?这时我们就可以使用WHERE子句进行条件的限定 一、功能描述: WHERE子句用于提取满足指定条件的记录; 二、WH…

nginx快速部署一个网站服务 + 多域名 + 多端口

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

C#,数值计算——分类与推理Phylo_slc的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Phylo_slc : Phylagglom { public override void premin(double[,] d, int[] nextp) { } public override double dminfn(double[…

OS 处理机调度

目录 处理机调度的层次 高级调度 作业 作业控制块 JCB 作业调度的主要任务 低级调度 中级调度 进程调度 进程调度时机 进程调度任务 进程调度机制 排队器 分派器 上下文切换器 进程调度方式 非抢占调度方式 抢占调度方式 调度算法 处理机调度算法的目标 处理…

UE5 虚幻引擎中UI、HUD和UMG的区别与联系

目录 0 引言1 UI 用户界面2 HUD 用户界面3 UMG4 总结 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:UE5 虚幻引擎中UI、HUD和UMG的区别与联系❣️ 寄语:加油,一次专注一件事…

Java编写图片转base64

图片转成base64 url , 在我们的工作中也会经常用到,比如说导出 word,pdf 等功能,今天我们尝试写一下。 File file new File("");byte[] data null;InputStream in null;ByteArrayOutputStream out null;try{URL url new URL(&…

C++初阶 入门(2)

目录 一、缺省函数 1.1什么是缺省函数 1.2为什么要有缺省函数 1.3使用缺省函数 1.4测试代码 二、函数重载 2.1什么是函数重载 2.2为什么要有函数重载 2.3什么情况构成函数重载 2.4函数重载例子及代码 三、引用 3.1什么是引用 3.2如何引用 ​3.3常引用(可略过) 3…

【宝塔面板建站】本地连接云服务器的数据库 以阿里云服务器为例子(保姆级图文)

目录 实现效果实现过程1. 获取云服务的数据库root密码 2.尝试本地连接2.1 端口放行2.2 云服务器授权本地访问MySQL权限 实现代码总结 『宝塔面板建站』分享宝塔面板从安装到实战的宝塔面板本机免云服务器免域名搭建网站等内容。 欢迎关注 『宝塔面板建站』 系列,持续…

Plex Media Server for Mac: 打造您的专属媒体库

在数字媒体时代,我们越来越依赖各种媒体应用来丰富我们的生活。其中,Plex Media Server for Mac以其高效、稳定和多功能性,逐渐成为了Mac用户们的首选。今天,我们就来深入探讨这款个人媒体软件的优势和应用场景。 Plex Media Serv…

【Zero to One系列】微服务Hystrix的熔断器集成

前期回顾: 【Zero to One系列】springcloud微服务集成nacos,形成分布式系统 【Zero to One系列】SpringCloud Gateway结合Nacos完成微服务的网关路由 1、hystrix依赖包 首先引入hystrix相关的依赖包,版本方面自己和项目内相对应即可&#…

ABB变频器使用PROFINET IO通信协议时的输入和输出介绍

ABB变频器使用PROFINET IO通信协议时的输入和输出介绍 前面和大家分享了 ABB变频器使用PROFINET IO通信模块时的激活方法 本次继续和大家分享ABB变频器使用PROFINET IO通信协议时的数据输入和输出。 如下图所示,在参数号52、53中可以设置现场总线适配器的数据输入和数据输出,…

MyBatis:配置文件

MyBatis 前言全局配置文件映射配置文件注 前言 在 MyBatis 中,配置文件分为 全局配置文件(核心配置文件) 和 映射配置文件 。通过这两个配置文件,MyBatis 可以根据需要动态地生成 SQL 语句并执行,同时将结果集转换成 …

深入探索:AbstractQueuedSynchronizer 同步器的神秘面纱

文章目录 🌟 一、AQS的底层实现原理🍊 1. AQS的概述🍊 2. AQS的数据结构🎉 (1) 同步状态🎉 (2) 等待队列 🍊 3. AQS的锁请求和释放过程🎉 (1) 独占模式🎉 (2) 共享模式 &#x1f34a…

Electron 学习

Electron基本简介 如果你可以建一个网站,你就可以建一个桌面应用程序。Eletron 是一个使用 JavaScript, HTML和 CSS等Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。 Electron 可以让你使用纯 Jav…

s27.linux运维面试题分享

第一章 计算机基础和Linux安装 1.冯诺依曼体系结构组成部分 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。2.Linux哲学思想(或Liunx基本原则、思想、规则) 一切都是一个文件(包括硬件)。小型,单一用途的程序。连…

分享一个月份连续的MSSA插值的GRACE level03数据集

1. 背景介绍 我们通常使用的GRACE数据包含球谐数据和mascon数据。而不管是球谐产品还是mascon产品,都存在月份数据的缺失,如下图所示(Yi and Sneeuw, 2021)。本专栏分享了一个利用多通道奇异谱分析(MSSA&#…