汇编语言-复习自用
- 本文用于自我复习汇编语言,参考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启动完…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
