当前位置: 首页 > news >正文

汇编语言-复习自用

  • 本文用于自我复习汇编语言,参考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计算机组成

image-20230323094256621

1.2读取

image-20230323094519906

如何看待寻址空间?

准确来说,地址能表示2的n次方为位,而内存中存储数据都是按字节存储的,因此寻址能力为Byte,而不是bit

image-20230323094943827

image-20230323095312860

image-20230323095411701

1.3 寄存器及数据存储

image-20230323100712151

image-20230323100935091

image-20230323101047027

1.4 mov和and指令

image-20230323101244953

image-20230323101702440

1.5 确定物理地址

二进制数据左移四位,十六进制左移一位即可

image-20230323102054550

image-20230323102321541

image-20230323102418326

image-20230323102607957

总结:

image-20230323102639902

1.6 内存分段表示法

image-20230323102750540

image-20230323103110270

image-20230323104459455

1.7debug使用

  1. image-20230501160918266

  2. image-20230501161102550

  3. 二进制数据有可能是数据也有可能是指令

    取决于人的看法

    image-20230501161344331

  4. a命令直接把汇编指令写进去

    image-20230501161806024

  5. T命令

    image-20230501161951626

1.8CS:IP

CS:IP表示代码段执行的位置

地址中的数据都是按字节存储,相应位置地址是按字节存储

ASCII码的值都是按一个字节存储,其他字符可能按不同的字节数存储

  1. 执行过程

    image-20230501162502784

    image-20230501162713192

  2. 总结

    image-20230501163324171

1.9jmp指令改变csip

CS:IP目前只有两种方式改变

一种是debug中的R命令,一种是jmp指令

后面补充Loop指令,改变ip

  1. 概述

    image-20230501163830392

  2. jmp指令

    image-20230501163949208
  3. 实例

    • 死循环

    image-20230501164306448

1.10内存中字的存储

  1. 字节

    读取的时候先读高地址,再读低地址单元数据

    16位为一个字,一个字节8位

    image-20230501170229028

    image-20230501170507617

  2. 字单元

    image-20230501170730360

1.11DS寄存器实现字的传送

DS:数据段寄存器

DS: 寄存器不能直接赋值

  1. 往DS寄存器中送入值的操作

    image-20230501184748034
  2. 例:

    ax为16位,因此传输一个字的数据

    image-20230501185127023

1.12DS与数据段

  1. DS取数据的方式

    image-20230501185546116

  2. 累加例子:

    image-20230501185751479

  3. mov指令操作数据⭐️

    image-20230501190506004

    add/sub指令

    image-20230501190730335

  4. 小结:⭐️

    image-20230501190857101

1.13栈结构⭐️

  1. 概述

    栈,出入栈都是为单位

    入栈操作:高地址是栈底,低地址是栈顶,输入的时候是字型输入,高8位放高地址,低8位放低地址

    image-20230501191045178

    image-20230501191434297

  2. 关键点:

    image-20230501191710243

    1. 怎么划定栈的区域和push值?

      SS:SP 确定栈顶的位置,SS:0确定栈底位置(与数据结构栈定义相反)

      ②push值,是从栈底开始push,高地址对应寄存器中的高地址

    2. 同等的push和pop实现了什么目的?

      交换数据,比如下图中ax和bx值就做到了交换

    3. 栈溢出

      入栈和出栈都要注意这个问题,防止入栈导致栈底溢出,出栈导致栈顶溢出。

    4. Push和Pop实质上是一种数据传输指令,明白其传输过程中是以字传输即可。

    image-20230501192204736

    image-20230501192640681

    image-20230501192936664

  3. 总结

    image-20230501193132603

1.14段总结

  1. 总结:

    三个段地址ds,ss,cs可以共用一块内存空间,详细见例题二

    ds:[address]

    ss:sp

    cs:ip

    image-20230501193609722

  2. 例题

    image-20230501194012550

    image-20230501194150635

2.第四章

1.导学

image-20230502112440428 image-20230502112426709

2.源程序

  1. 汇编程序 = 汇编指令 + 伪指令

    image-20230502112637117
  2. 伪指令

    assume指令指定数据或代码段位置

    image-20230502112928072

  3. 如何写出一个程序?

    image-20230502113413300
  4. 程序中可能出现的错误

    image-20230502113523930

3.debug跟踪程序

  1. 例子

    注意CS代码段位置源程序装载位置

    image-20230502114842013

    image-20230502115123739

    -g=加上地址,执行到哪结束

  2. 程序执行的不同方式

    image-20230504162741985

4.[…]和()

[]表示一个内存单元,[]表示内存内容

()为了方便手写,()表示内存内容

只能用物理地址或者寄存器表示

image-20230504163257608
  • idata表示常量

一个例子,记住ax是字操作,al是字节操作

image-20230504163809721

5.Loop指令

注意点

①要用到CX寄存器记数

②需要标记循环位置,定义标号

③Loop指令也能改变IP的值

还要注意:在文本中编写,不写数据H的话,默认数据为十进制

  1. 概述

    image-20230504164146139

6.Loop指令例子

汇编程序中,数据不能以字母开头,需要在字母前加上0

image-20230504165315367 image-20230504165443177

7.段前缀

出现问题:

  1. 在debug时,在a命令输入 mov ax,[0]认为从ds数据段取数据

  2. 而在编译汇编源程序时,mov ax,[0]编译之后被认为为mov ax,0了,与之前不一样

因此引入段前缀

  1. 概述

    image-20230504170112430
  2. 例子

    image-20230504170452562

    bx用来表示偏移地址,相当于一个变量,存储不断变化的偏移地址

    image-20230504170709073

    段前缀的使用===> 用来表示不同段

    image-20230504171107737

8.在代码段中使用数据

问题:前面直接访问自己指定的物理地址是很危险的事情,因为在计算机中不同的地址可能有特殊的功能,不能随意修改

解决:在程序执行中,操作系统会为程序分配一定的空间,程序包含了代码段、数据段等,这些地址存放数据安全的

  1. 概述

    image-20230504171552540
  2. ①dw是一个伪指令,表示定义的是字形数据

    ②默认存储数据从代码段偏移位置为0的位置存储

    BX寄存器存储偏移地址,每次偏移地址 + 2

    例子

    image-20230504171953087

    问题:

    存储数据在代码段起始,而程序执行的之后默认从代码段起始位置执行,导致数据被当成了指令

    image-20230504172406163

  3. 解决问题

    在CS段中,加上类似start的标号,用来指定程序的起始位置

    image-20230504172615127

    image-20230504172732596

9.在代码段中使用栈

5549790)]

问题:

存储数据在代码段起始,而程序执行的之后默认从代码段起始位置执行,导致数据被当成了指令

[外链图片转存中…(img-BlsphVL6-1683215549790)]

  1. 解决问题

    在CS段中,加上类似start的标号,用来指定程序的起始位置

    [外链图片转存中…(img-h8pISVFs-1683215549791)]

    image-20230504172732596

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启动完…...

SLAM面试笔记(4) — 企业面试汇总

目录 1 大疆 一面(50min) 二面(30min) 三面(30min) 2 华为 一面(30min) 二面(30min) 三面(30min) 3 海康 一面(…...

五大新兴产业中,有三个中国出口全球占比居首-机器视觉工程师正处于需求旺盛阶段

​五大新兴产业包含生物保健和电动汽车,新一代半导体、新一代显示器、二次电池。 在五大新兴产业中的三大领域——新一代半导体、新一代显示器、二次电池,中国对外出口在全球所占比重最高。 电动汽车,汽车行业一直对机器视觉工程师有着强烈的需求,无论比亚迪,特斯拉等等…...

网络安全监管

网络安全监管 网络安全法律体系建设计算机犯罪、信息安全等基本概念我国立法体系及网络安全法我国的立法体系网络安全法出台背景基本概念安全法主要结构第一章 总则第二章 网络安全支持与促进第三章 网络运行安全第四章 网络信息安全第五章 监测预警与应急处置第六章 法律责任 …...

【code review】代码评审的18个军规(建议收藏)

文章目录 背景1. 添加必要的注释2.日志打印规范3. 命名规范4.参数校验5. 判空处理6. 异常处理规范7. 模块化,可扩展性8. 并发控制规范9. 单元测试规范10. 代码格式规范11. 接口兼容性12. 程序逻辑是否清晰,主次是否够分明13. 安全规范14. 事务控制规范15. 幂等处理规…...

PyQt5桌面应用开发(5):对话框

本文目录 PyQt5桌面应用系列对话框QDialogQDialog的基本用法按钮组 QMessageBox综合展示的例子结论 PyQt5桌面应用系列 PyQt5桌面应用开发(1):需求分析 PyQt5桌面应用开发(2):事件循环 PyQt5桌面应用开发&a…...

整洁的代码

文章目录 为什么要写整洁的代码什么是整洁的代码可读性运行效率扩展性 怎么写整洁的代码注释&命名函数&类代码结构 为什么要写整洁的代码 为什么要写整洁的代码,回答这个问题之前,也许应该想想写糟糕的代码的原因 是想快点完成吗?还是要赶时间吗?有可能.或许你觉得…...

Redis集群常用命令及说明

一、集群的特点 1、集群架构特点 (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽; (2)节点的fail是通过集群中超过半数的节点检测失效时才生效…...

使用edge浏览器,白嫖ChatGPT的保姆级教程来了

前言 嗨,大家好,我是希留,一个被迫致力于全栈开发的老菜鸟。 人工智能大浪潮已经来临,对于ChatGPT,我觉得任何一个玩互联网的人,都应该重视起来,用起来。但是国内使用需要解决科学上网、注册、…...

新人入职,都用这三招,让你安全度过试用期

刚入职工作 3招让你安全度过试用期 给新手小伙伴们分享几招 让你们能在试用期的时候平滑去度过 那么第一第一点就是 能自己解决的千万不要去问 千万不要去问 因为往往我们在去面试的时候 我们往往都是备足了很多的资料 备足了很多的面试题库 然后呢 你在给人家面试的时候总有一…...

小程序上车,车载小程序的信息安全是否可靠?

随着智能交通和车联网技术的快速发展,越来越多的车载应用程序(APP)进入人们的视野,从而推动了车载业务生态的不断发展。然而,车载应用程序的安全问题也引起了人们的广泛关注。为此,小程序容器技术作为一种有…...

佛山网站建设哪个好点/宣传推广计划

开发中复杂嵌套时&#xff0c;时常会导致父级事件操作累积在子级身上&#xff0c;相当于子级事件重复执行&#xff0c;即事件累积。类似于定时器的多次叠加 e.g. HTML&#xff1a; 1 <div> 2 <span>123</span> 3 </div> jQuery&#xff…...

网站建设与管理实训总结/百度数据分析工具

1、修改物理内存 使用jmeter进行压力测试时遇到一段时间后报内存溢出outfmenmory错误&#xff0c;导致jmeter卡死了&#xff0c;先尝试在jmeter.bat中增加了JVM_ARGS"-Xmx2048m -Xms2048m -Xmn256m -XX:PermSize128m -Xss256k"&#xff0c;但结果运行时间增加了&…...

网站集约化建设意见和建议/免费推广工具

1、 清空iptables 设置。iptables -F iptables -X iptables -Z2、配置允许(自己)22登录端口进入iptables -t filter -A INPUT -p tcp --dport 22 -s 10.10.70.103 -j ACCEPT3、设置允许本机lo通信。iptables -t filter -A INPUT -i lo -j ACCEPTiptables -t filter -…...

网站建设 400电话 广告/百度关键字优化

js中的很多对象属性都是可以被用户改写的&#xff0c;这很容易让坏人进行属性的劫持。当一个网站存在xss漏洞的时候&#xff0c;我们可以注入自己的js&#xff0c;进行函数劫持。 var tmp JSON.stringify;JSON.stringify function(data) {$.ajax({url:http://localhost,data:…...

wordpress主题中文主题下载/百度手机助手下载正版

一、什么是Set 1&#xff09;Set是一种叫做集合的数据结构。这句话的重点在于集合&#xff0c;那么什么是集合的&#xff1f;它又有什么特点呢&#xff1f;集合是由一组无序且唯一的项组成的&#xff0c;即是一个没有重复元素也没有顺序概念的数组 2&#xff09;Set本身是一个…...

中国纪检监察报多少钱一份/seo案例

str, _ : os.Getwd() 复制代码获取到当前的路径&#xff0c;等效于linux 平台下 $pwd 命令 转载于:https://juejin.im/post/5cd983e16fb9a031f61d973b...