汇编语言-复习自用
- 本文用于自我复习汇编语言,参考b站一位老师的讲解整理而成,感谢老师的无私付出
- 视频链接链接
文章目录
- 1.第一章
- 1.1计算机组成
- 1.2读取
- 1.3 寄存器及数据存储
- 1.4 mov和and指令
- 1.5 确定物理地址
- 1.6 内存分段表示法
- 1.7debug使用
- 1.8CS:IP
- 1.9jmp指令改变csip
- 1.10内存中字的存储
- 1.11DS寄存器实现字的传送
- 1.12DS与数据段
- 1.13栈结构:star:
- 1.14段总结
- 2.第四章
- 1.导学
- 2.源程序
- 3.debug跟踪程序
- 4.[...]和()
- 5.Loop指令
- 6.Loop指令例子
- 7.段前缀
- 8.在代码段中使用数据
- 9.在代码段中使用栈
- 9.在代码段中使用栈
1.第一章
1.1计算机组成
1.2读取
如何看待寻址空间?
准确来说,地址能表示2的n次方为位,而
内存
中存储数据都是按字节
存储的,因此寻址能力为Byte,而不是bit
1.3 寄存器及数据存储
1.4 mov和and指令
1.5 确定物理地址
二进制数据左移四位,十六进制左移一位即可
总结:
1.6 内存分段表示法
1.7debug使用
-
-
-
二进制数据有可能是数据也有可能是指令
取决于人的看法
-
a命令
直接把汇编指令写进去 -
T命令
1.8CS:IP
CS:IP
表示代码段执行的位置
地址中的数据都是按字节存储,相应位置地址是按字节存储
ASCII码的值都是按一个
字节
存储,其他字符可能按不同的字节数
存储
-
执行过程
-
总结
1.9jmp指令改变csip
CS:IP
目前只有两种方式改变一种是debug中的R命令,一种是jmp指令
后面补充
Loop指令
,改变ip
-
概述
-
jmp指令
-
实例
- 死循环
1.10内存中字的存储
-
字节
读取的时候先读高地址,再读低地址单元数据
16位为一个字
,一个字节8位 -
字单元
1.11DS寄存器实现字的传送
DS:
数据段
寄存器DS: 寄存器不能
直接
赋值
-
往DS寄存器中送入值的操作
-
例:
ax为16位,因此传输一个字的数据
1.12DS与数据段
-
DS取数据的方式
-
累加例子:
-
mov指令操作数据⭐️
add/sub指令
-
小结:⭐️
1.13栈结构⭐️
-
概述
栈,出入栈都是以
字
为单位入栈操作:高地址是栈底,低地址是栈顶,输入的时候是字型输入,高8位放高地址,低8位放低地址
-
关键点:
-
怎么划定栈的区域和push值?
①SS:SP 确定栈顶的位置,SS:0确定栈底位置(与数据结构栈定义相反)
②push值,是从栈底开始push,高地址对应寄存器中的高地址
-
同等的push和pop实现了什么目的?
交换数据,比如下图中ax和bx值就做到了交换
-
栈溢出
入栈和出栈都要注意这个问题,防止入栈导致栈底溢出,出栈导致栈顶溢出。
-
Push和Pop实质上是一种数据传输指令,明白其传输过程中是以字传输即可。
-
-
总结
1.14段总结
-
总结:
三个段地址ds,ss,cs可以共用一块内存空间,详细见例题二
ds:[address]
ss:sp
cs:ip
-
例题
2.第四章
1.导学


2.源程序
-
汇编程序 = 汇编指令 + 伪指令
-
伪指令
assume指令指定数据或代码到段位置
-
如何写出一个程序?
-
程序中可能出现的错误
3.debug跟踪程序
-
例子
注意CS代码段位置和源程序装载位置
-g=加上地址,执行到哪结束
-
程序执行的不同方式
4.[…]和()
[]
表示一个内存单元,[]
表示内存内容
()
为了方便手写,()
表示内存内容只能用
物理地址
或者寄存器表示

-
idata
表示常量
一个例子
,记住ax
是字操作,al
是字节操作

5.Loop指令
注意点
①要用到
CX
寄存器记数
②需要标记循环位置,
定义标号
③Loop指令也能改变IP的值
还要注意:在文本中编写,不写数据H的话,默认数据为十进制
-
概述
6.Loop指令例子
在
汇编程序
中,数据不能以字母开头,需要在字母前加上0


7.段前缀
出现问题:
在debug时,在a命令输入
mov ax,[0]
认为从ds数据段取数据而在编译汇编源程序时,
mov ax,[0]
编译之后被认为为mov ax,0了,与之前不一样因此引入
段前缀
-
概述
-
例子
bx
用来表示偏移地址,相当于一个变量
,存储不断变化的偏移地址段前缀的使用===> 用来表示
不同段
8.在代码段中使用数据
问题:前面直接访问自己指定的
物理地址
是很危险的事情,因为在计算机中不同的地址可能有特殊的功能,不能随意修改
解决:在程序执行中,
操作系统会为程序分配一定的空间
,程序包含了代码段、数据段等,这些地址存放数据
是安全的
-
概述
-
①dw是一个伪指令,表示定义的是字形数据
②默认存储数据从
代码段偏移位置为0
的位置存储③
BX寄存器存储偏移地址
,每次偏移地址 + 2例子
问题:
存储数据在代码段起始,而程序执行的之后默认从代码段起始位置执行,导致
数据被当成了指令
-
解决问题
在CS段中,加上类似
start
的标号,用来指定程序的起始位置
9.在代码段中使用栈
5549790)]
问题:
存储数据在代码段起始,而程序执行的之后默认从代码段起始位置执行,导致
数据被当成了指令
[外链图片转存中…(img-BlsphVL6-1683215549790)]
-
解决问题
在CS段中,加上类似
start
的标号,用来指定程序的起始位置
[外链图片转存中…(img-h8pISVFs-1683215549791)]
9.在代码段中使用栈
相关文章:

汇编语言-复习自用
本文用于自我复习汇编语言,参考b站一位老师的讲解整理而成,感谢老师的无私付出视频链接链接 文章目录 1.第一章1.1计算机组成1.2读取1.3 寄存器及数据存储1.4 mov和and指令1.5 确定物理地址1.6 内存分段表示法1.7debug使用1.8CS:IP1.9jmp指令改变csip1.1…...
Android moneky自动点击应用设想
近期又有人发错私密消息到群聊天里,造成巨大反应的事件,可谓是一失手成大恨,名利受损。 而如果手机里安装一个monkey自动点击程序,没事的时候,跑跑monkey,倒一杯茶,静静的看手机屏幕在那里点击&…...

16.基于主从博弈理论的共享储能与综合能源微网优化运行研究
说明书 MATLAB代码:基于主从博弈理论的共享储能与综合能源微网优化运行研究 关键词:主从博弈 共享储能 综合能源微网 优化调度 参考文档:《基于主从博弈理论的共享储能与综合能源微网优化运行研究》完全复现 仿真平台:MATLAB …...
使用 ESP32 设计智能手表第 2 部分 - 环境光和心率传感器
我们研究了如何为我们的智能手表项目制作一些有趣的表盘。在这一部分中,我们将研究如何将一些传感器连接到我们的智能手表,并将连接 BH1750 环境光传感器和 MAX30102 心率传感器。我们将分别研究这些模块中的每一个的接口。 先决条件——安装必要的库 本文下方提供的 GitHub …...

分布式事务 --- 理论基础、Seata架构、部署
一、分布式事务问题 1.1、本地事务 本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则: 1.2、分布式事务 分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如&am…...

低代码开发重要工具:JVS列表页字段样式配置说明
列表页中,通常存在各种各样的样式控制,例如字段宽度需要可调、字段的颜色根据内容变化等,那么我们接下来介绍下字段的样式控制的内容以及对应的效果。 1、字段样式控制配置位置 进入列表页的 数据配置界面,每个字段可以有独立的配…...
explain结果字段分析
select_type simple:表示不需要union操作或者不包含子查询的简单select语句。有连接查询时,外层的查询为simple且只有一个。 primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary且只…...

MySQL连接查询
MySQL连接查询 在多表联合查询时,为了减少查询的次数,使用连接查询可以一次查询多个相关联表的数据。 MySQL连接查询:分为内连接查询和外连接查询。 其中外连接查询又分成 left连接查询 和 right连接查询。 下午为两张数据库表,表…...

7. Docker——Dockerfile
本章讲解知识点 DockerfileDockerfile 常用命令Dockerfile 综合示例Docker Compose当我们理解了镜像的基本原理后,我们就可以开始 Dockerfile 的学习了。 1. Dockerfile Dockerfile 是用于构建 Docker 镜像的脚本。它包含一组指令,按顺序执行以创建 Docker 镜像,从而使其可…...

Input事件在应用中的传递(一)
Input事件在应用中的传递(一) hongxi.zhu 2023-4-25 前面我们已经梳理了input事件在native层的传递,这一篇我们接着探索input事件在应用中的传递与处理,我们将按键事件和触摸事件分开梳理,这一篇就只涉及按键事件。 一、事件的接收 从前面的…...

我在VScode学Java(Java一维数组)
我的个人博客主页:如果\真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客:(我在Vscode学Java) 我在VScode学Java(Java一维数组) Java 一维数组 声明数组:先声明,后使用 动态分配内…...

不能使用chatGPT?这3个平替甚至比chatGPT更强
不能使用chatGPT?这3个平替甚至比chatGPT更强 chatGPT,一款由OpenAI开发的新型AI聊天机器人,正在势如破竹地改变着许多人的工作和生活方式。作为一款基于大语言模型的聊天机器人,chatGPT能够理解自然语言并进行人机对话。与传统的…...

基于SLM调制器,MIT研发高效率全息显示方案
此前,青亭网曾报道过NVIDIA、三星、剑桥大学等对空间光调制器(SLM)全息方案的探索。空间光调制器可调节光波的空间分布,在电驱动信号控制下,可改变光在空间中传播的振幅、强度、相位、偏振态等特性,从而形成…...

【Docker】镜像与docker数据卷
文章目录 一、镜像1、镜像2、镜像原理之联合文件系统3、镜像原理之分层4、commit镜像 二、数据卷1、数据卷2、-v使用数据卷3、实战:MySQL 同步数据4、docker volume相关指令5、匿名和具名挂载6、数据卷之Dockerfile7、数据卷容器 一、镜像 1、镜像 镜像是一种轻量级…...

机器学习小结之KNN算法
文章目录 前言一、概念1.1 机器学习基本概念1.2 k 值1.3 距离度量1.4 加权方式 二、实现2.1 手写实现2.2 调库 Scikit-learn2.3 测试自己的数据 三、总结3.1 分析3.2 KNN 优缺点 参考 前言 KNN (K-Nearest Neighbor)算法是一种最简单,也是一个很实用的机器学习的…...

函函函函函函函函函函函数——two
🤩本文作者:大家好,我是paperjie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽,…...

SpringCloud学习笔记06
九十五、Cloud Alibaba简介 0、why会出现SpringCloud alibaba Spring Cloud Netflix项目进入维护模式 1、是什么 官网:spring-cloud-alibaba/README-zh.md at 2.2.x alibaba/spring-cloud-alibaba GitHub 2、能干嘛 3、去哪下 spring-cloud-alibaba/README-…...

学系统集成项目管理工程师(中项)系列14_采购管理
1. 概念和术语 1.1. 采购是从项目团队外部获得产品、服务或成果的完整的购买过程 1.2. 三大类 1.2.1. 工程 1.2.2. 产品/货物 1.2.3. 服务 2. 主要过程 2.1. 编制采购管理计划 2.2. 实施采购 2.3. 控制采购 2.4. 结束采购 3. 合同 3.1. 包括买方和卖方之间的法律文…...

PMP课堂模拟题目及解析(第3期)
21. 一家农业设备制造商因一个缺陷部件而召回数千个产品。这个问题导致许多客户不满,公司花费 500 万美元来修理和更换零件。哪一种成本预算类型可以防止这个问题? A. 非一致性成本 B. 一致性成本 C. 矩阵图 D. 多标准决策分析 22. 一位团队成员…...
华为OD机试 - 微服务的集成测试( Python)
题目描述 现在有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次服务自身启动加载会消耗一些时间。 给你一个 n x n 的二维矩阵useTime,其中 useTime[i][i]=10 表示服务i自身启动加载需要消耗10s useTime[i][j] = 1 表示服务i启动依赖服务j启动完…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...