汇编语言——王爽版 总结

news2024/11/25 10:51:20

汇编语言-王爽summary《考试复习版》

摆烂一学期,期末抱佛脚


只针对必要内容总结,并非按目录总结

文章目录

  • 汇编语言-王爽summary《考试复习版》
    • `只针对必要内容总结,并非按目录总结`
  • 前言
  • 一、基础知识
    • 汇编语言的组成
    • 存储器
    • 指令和数据
    • 存储单元
    • CPU对于存储器的读写
    • 数据总线
    • 数据总线
    • 控制总线
    • 主板
    • 接口卡
    • 各类存储器芯片
    • 内存地址空间
  • 二、寄存器
    • 2.1通用寄存器
    • 16位结构的CPU
      • 8086给出物理地址的方法
    • 段地址
      • 段寄存器
  • 三、寄存器(内存访问)
      • mov add sub 指令
    • 栈段
  • 五、BX 和LOOP
      • 段前缀
  • 六、包含多个段的程序
  • 七、更灵活的定位内存地址的方法
  • 数据处理的两个基本问题
    • 寻址方式
    • div 指令
    • dup
  • 九、转移指令的原理
    • jmp 指令
    • jcxz 指令
    • loop 指令
    • 十、call 和ret 指令
    • ret and retf
    • call
    • call 和 ret 配合使用
    • mul 指令
    • 参数和结果传递的问题
  • 十一、标志寄存器
    • abc 指令
    • sbb指令
    • **CMP** 指令
    • 检测比较结果的条件转移指令
  • 十二、内中断
    • 中断过程
  • 十三、由int 指令引发的中断
  • 十四、端口
  • 总结


前言

根据章节进行总结,有可能会考的知识点,针对知识点进行总结。速成了解语法和大致原理。这本书十分注重实践,当然知识点也很多,讲的通俗易懂,基本看一遍就知道基本原理,小白也可以很好的去读懂。强烈推荐、


一、基础知识

学习之前必要的知识,讲述一些原理,在计算机组成中也有涉及,要融会贯通。

汇编语言的组成

  • 汇编指令:机器码的助记符。有对应的机器码
  • 伪指令:没有机器码,由编译器执行。计算机并不执行。
  • 其他符号:如+、-、*、等,编译器执行,没有对应的机器码、

存储器

  • 指令和数据在存储器中存放,也就是内存。

指令和数据

CUP在工作时把有的信息当做指令,有的信息当做数据。为同样的信息赋予了不同的意义。
也可以说成,意义的二进制字符串。对于cpu来说,可能会有不用的意义。

存储单元

存储单元从0 开始进行编号。
八个bit组成一个Byte ,也就是说八二进制位构成一个字节。
微型存储去机中 字节 是最小的单位,拥有128个存储单元的存储器,可以说是容量有128个字节。

CPU对于存储器的读写

存储器被划分为多个存储单元,从零开始进行编号。
CPU在内存中读取数据,要指定存储单元的地址,CPU想要进行数据的读写,是和外部器件进行信息的交互、

  • 存储单元的地址。(地址信息)
  • 器件的选择。读写的命令,(控制信息)
  • 读或写的数据(数据信息)
    在计算机中有专门链接CPU和其他芯片的导线,通常称为总线,总线在逻辑上分为三类
  • 地址总线
  • 控制总线
  • 数据总线
    在这里插入图片描述

数据总线

在这里插入图片描述

  • 地址总线的位数访问存储的大小有关。
  • 访问2的n次方的存储单元,有n根地址总线。
    在这里插入图片描述

数据总线

在这里插入图片描述

  • 数据总线的位数,与传输速度有关。
    在这里插入图片描述在这里插入图片描述

控制总线

  • 有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制,所以,控制总线的宽度决定了CPU对于外部器件的控制能力
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/857663699a2a499a89cc32a0711e1211.![在这里入图片描述](https://img-blog.csdnimg.cn/247324c3c5a54e9fb54af250ee88f95d.pn在这里插入图片描述
    在这里插入图片描述

主板

在这里插入图片描述

接口卡

在这里插入图片描述

各类存储器芯片

在这里插入图片描述

内存地址空间

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

二、寄存器

  • CPU 是由 运算器 ,控制器, 和寄存器构成,内部总线连接。内部总线实现CPU内部的各个部件的联系,外部总线实现CPU和主板上的其他器件的联系。
  • 运算器进行信息处理
  • 寄存器进行信息存储
  • 控制器控制各种器件进行工作、
  • 内部总线连接各自器件,在他们之间进行数据的传送。

在这里插入图片描述

2.1通用寄存器

在这里插入图片描述* 16位寄存器可以分为两个独立的8位寄存器来用。
在这里插入图片描述

  • 字节:记为 Byte 一个字节有8个bit组成。可以存在8位寄存器中。
  • 字: 记为word ,一个字由 两个字节组成 ,两个字节分别称为高字节和低字节。
    在这里插入图片描述

16位结构的CPU

8086cpu 是16位机。

  • 运算器一次最多可以处理16位的数据、
  • 寄存器的最大宽度位16位
  • 寄存器和运算器之间的通路位16位
  • 8086内部,能够一次性处理,传输,暂时存储的信息的最大长度是16位。

8086给出物理地址的方法

8086内部有20根地址线,可以传送20位地址,有1MB的寻址能力。
但是8086在内部暂存的地址有16位,只能表现出64kB的寻址能力。
在8086内部采用一种在内部用两个16位地址合成的防风来形成一个20位的物理地址。
在这里插入图片描述

  • 物理地址 = 段地址*16 + 偏移地址。
    在这里插入图片描述
    8086的寻址方式是 基础地址 + 偏移地址 = 物理地址

段地址

段地址并不是指 内存被划分为一段一段的,内存并没有分段,段的划分来自于CPU
对于8086来说,CPU 的寻址方式是 段地址*16 + 偏移地址 = 物理地址、
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
CPU 可以用不同的段地址和偏移地址形成同一个物理地址。

段寄存器

  • 段地址在8086 上的段寄存器存放,8086有四个段寄存器。 CS,DS, SS, ES,
  • CS 为代码段寄存器,IP 为指令指针寄存器。设CS 中的内容为M,IP中的内容为N ,8086 从 M*16+N 的单元开始,读取一条指令并且执行。CS 也叫做代码基址寄存器。
    8086 工作时的过程如下:
    在这里插入图片描述
  • 代码段:CPU 认为CS:IP 指向内存单元中的内容为指令,所以要想叫CPU执行指令的,必须要CS:IP 指向指令的第一条地址。

三、寄存器(内存访问)

在这里插入图片描述
字单元 :存放一个字型数据16位的内存单元,由两个地址存放的内存单元组成,高地址的内存单元中存放高位字节,低地址的内存单元存放低位字节。
任何两个连续地址的内存单元。N号单元和N+1号单元,可以看成两个内存单元,也可以看成一个地址位N的字单元中的高位字节和低位字节。

  • DS 段寄存器 存放数据的段地址。
    在这里插入图片描述
    8086 自动 将 ds 中的数据为内存单元的段地址、
    8086 不支持将数据直接送入段寄存器中,只好用一个寄存器来进行中转。

mov add sub 指令

mov:
在这里插入图片描述
在这里插入图片描述

  • 小结
    在这里插入图片描述
    在这里插入图片描述

栈段

  • 栈是一种具有特殊的访问方式的存储空间,特殊性在于 最后进入空间的数据,最先出去。
  • 栈有两个操作,出栈 POP 和入栈PUSH 。
  • PUSH ax 是将ax 中的数据送入栈中, POP ax 是将栈中的数据取出,放到ax 中。
  • 8086 中的入栈和出栈是以 为单位的。 字单位是用两个单元存放,高地址存高八位,低地址存低八位。
  • 对于栈的使用,CPU中有两个寄存器, 一个是段寄存器SS, 和寄存器SP ,栈顶的段地址存放在SS 中。偏移地址存在SP 中,任意时刻, SS:SP 指向 栈顶元素。 PUSH 和POP执行时,CPU从SS 和SP 中得到栈顶的地址。
  • 在这里插入图片描述
  • 入栈时 ,栈顶从高地址向低地址方向增长
  • 即为SP 指针减小。
    在这里插入图片描述
    在这里插入图片描述
  • 入栈时 ,栈顶从低地址向高地址方向变化
  • 即为 SP 指针增加
  • 8086CPU机器不考虑 栈顶超界 的为题,只考虑当前的情况,当前的栈顶在何处,当前要执行的指令是哪一条。
  • 可以自己定义堆栈段。 在任意时刻,SS:SP 指向栈顶元素,当栈为空的时候,栈中没有元素,也就不存在栈顶元素,所以SS:SP 只能指向栈的最底部单元的下面的单元,该单元的地址为栈的最下面的单元。该单元的地址为栈的最底部的字单元的地址+2 , 栈的最底部单元的地址为1000:FFFE
    所以栈为空 SP = 0000H

五、BX 和LOOP

  • bx和ax 作用类似。都是寄存器。
  • loop 是循环的意思,cx 用来表示循环的次数,每次调用loop,cx = cx -1
  • 调用loop的代码
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

段前缀

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、包含多个段的程序

  • 程序缺德所需空间的方法有两种,一是在加载诚信的时候为程序分配,再就是在执行的过程中向系统申请。
  • 定义数据段时, 使用dw 即为define word 即为定义数据。

在这里插入图片描述
在这里插入图片描述

七、更灵活的定位内存地址的方法

  • [bx + idata ]
    在这里插入图片描述在这里插入图片描述
  • SI 和 DI
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在需要暂存数据的时候,都要应该使用栈,

数据处理的两个基本问题

寻址方式

在这里插入图片描述

div 指令

在这里插入图片描述

dup

在这里插入图片描述

九、转移指令的原理

在这里插入图片描述

  • offset 取得标号的偏移地址
    在这里插入图片描述

jmp 指令

在这里插入图片描述

jcxz 指令

在这里插入图片描述

loop 指令

在这里插入图片描述

十、call 和ret 指令

在这里插入图片描述

  • call 用于跳转,修改IP ,
  • **ret ** 用于返回,修改IP。

ret and retf

在这里插入图片描述
在这里插入图片描述

call

在这里插入图片描述

call 和 ret 配合使用

在这里插入图片描述

mul 指令

  • 乘法指令
    在这里插入图片描述

参数和结果传递的问题

在这里插入图片描述

  • 在调用子程序的时候,如果在子程序中使用的寄存器和在主程序中的寄存器相同,就会在调用子程序的对寄存器中的内容进行更改,所以在有寄存器冲突的时候要使用栈来临时保存寄存器中的数据,然后在子程序使用完成后,弹出保存。

十一、标志寄存器

在这里插入图片描述

  • ZF 标志,0标志位,记录执行相关指令后,结果是否位0 ,如果为0,那么zf = 1;如果不为0 ,zf = 0;
  • PF 标志, 偶标志位,执行相关指令后,如果结果中的bit 位1 的个数是否位偶数,如果1 个数位偶数,PF 位1 ,如果为奇数。PF = 0 ;
  • SF标志 符号标志位,执行指令后,如果结果符号位负数,那么SF = 1 ,如果为整数,SF = 0 ;
  • CF标志 进位标志,如果结果向高位进位, CF 为1 反之为 0
  • OF 溢出标志位,如果符号数运算出现溢出,那么为1 ,反之为 0;

abc 指令

在这里插入图片描述

sbb指令

在这里插入图片描述

CMP 指令

在这里插入图片描述

检测比较结果的条件转移指令

在这里插入图片描述

十二、内中断

在这里插入图片描述

  • 内中断,是当CPU 内部出现某些事情的时候,需要先去处理中断事件,产生相应的中断信息。
  • 当程序出现中断时,会调用中断处理程序。相当于去调用一种特殊的子程序、

中断过程

在这里插入图片描述

十三、由int 指令引发的中断

在这里插入图片描述

十四、端口

在这里插入图片描述

  • 端口的读写指令有两条
  • in 和 out
  • 在这里插入图片描述

总结

字数太多了,敲一半就不想巧了,自己过一遍吧,有能力还是好好看原书,很好理解原理

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

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

相关文章

H2N-Gly-Gly-βAla-COOH, 42538-53-4

用作多肽和蛋白质亚硝化的低分子模型化合物。cas编号(净):627-74-7。 编号: 200129中文名称: 三肽Gly-Gly-βAlaCAS号: 42538-53-4单字母: H2N-GG-βA-OH三字母: H2N-Gly-Gly-βAla-COOH氨基酸个数: 3分子式: C7H13N3O4平均分子量: 203.2精确分子量: 203.09等电点(PI): 6.11pH7…

图解LeetCode——1779. 找到最近的有相同 X 或 Y 坐标的点(难度:简单)

一、题目 给你两个整数 x 和 y ,表示你在一个笛卡尔坐标系下的 (x, y) 处。同时,在同一个坐标系下给你一个数组 points ,其中 points[i] [ai, bi] 表示在 (ai, bi) 处有一个点。当一个点与你所在的位置有相同的 x 坐标或者相同的 y 坐标时&…

带你学习不一样的数据仓库系列-框架概念

编者按:本系列文章参考总结自IBM,FaceBook,Google等数据仓库构建英文文章,部分章节为直译过来,部分内容加上乐哥6年陌陌,快手等工作经验总结而来,让大家了解真实国外大厂数仓构建之路,国外同行对…

【自然语言处理概述】文本词频分析

【自然语言处理概述】文本词频分析 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建设专家…

python-百度API文字识别

最近公司通过网络查询到我们部门有人工作时间逛b站次数太多,这事惊动了上层领导,搅得人心惶惶。突然星期某信服的一套监控员工电脑的系统,不经一颤。想着自己也尝试玩玩电脑屏幕文字识别-----抓取关键字,然后将图片保存下来。 这…

Cocos 帮助更多优秀移动游戏登上 Web 舞台

作者 / Cocos 3D 内容开发引擎对于一款游戏开发引擎来说,关注市场风向,第一时间将合适的技术带给开发者永远是最重要的工作之一。作为一款国际化的 3D 引擎,Cocos 在全球拥有 160 万开发者,覆盖全球设备超 16 亿,曾被用…

STC 51单片机47——外部中断控制流水灯

#include <reg52.h> #include <intrins.h> //仿真与开发板一致&#xff0c;无需修改 sbit INT_0 P3^2; //开发板上&#xff0c;黑色按钮帽的按钮中的一个 unsigned char light0xfe; void delay500ms(void) //约500ms延时子程序&#xff08;12MHZ&a…

【Flink】使用CoProcessFunction完成实时对账、基于时间的双流join

文章目录零 处理函数回顾一 CoProcessFunction的使用1 CoProcessFunction使用2 实时对账&#xff08;1&#xff09;使用离线数据源&#xff08;批处理&#xff09;&#xff08;2&#xff09;使用高自定义数据源&#xff08;流处理&#xff09;二 基于时间的双流 Join1 基于间隔…

【自然语言处理(NLP)】基于预训练模型的机器阅读理解

【自然语言处理&#xff08;NLP&#xff09;】基于预训练模型的机器阅读理解 作者简介&#xff1a;在校大学生一枚&#xff0c;华为云享专家&#xff0c;阿里云专家博主&#xff0c;腾云先锋&#xff08;TDP&#xff09;成员&#xff0c;云曦智划项目总负责人&#xff0c;全国高…

【Pandas数据处理100例】(九十二):Pandas中的transform()函数使用方法

前言 大家好,我是阿光。 本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPandas版本:1.3.5N…

Linux总结

目录学习阶段基本介绍概述Linux和UnixLinux和Windows的比较Linux目录结构远程登录Linux为什么需要远程登录LinuxXShell工具Xftp工具Linux命令关机/重启命令用户登录/注销运行级别Linux系统的7个运行级别运行级别原理帮助指令man获得帮助信息help指令执行历史命令用户管理添加用…

我的网站被攻击了,运维大佬给了我自动封禁ip的脚本。

我的网站被攻击了&#xff0c;发现友圈最近出现这种情况的还不少&#xff0c;真是神奇了&#xff0c;这事也能扎堆发生。 分享出来给大家&#xff0c;万一以后用得着呢~ 故事背景 我的一个小网站最近总是收到云监控报警&#xff0c;一个部署在4核8G单机上的小网站。 查了log…

微信开发者工具 / 反编译工具CrackMinApp 下载安装

微信开发者工具 / 反编译工具CrackMinApp 下载安装 文章目录微信开发者工具 / 反编译工具CrackMinApp 下载安装前言一、微信开发者工具下载安装二、反编译工具CrackMinApp安装三、导入反编译后的文件四、友情提示总结前言 微信开发者工具介绍&#xff1a;微信提供的微信小程序…

CVPR 2022 视频全景分割新 Benchmark:VIPSeg

关注公众号&#xff0c;发现CV技术之美今天向大家分享 CVPR 2022 论文『Large-scale Video Panoptic Segmentation in the Wild: A Benchmark』,介绍一个新的视频全景分割&#xff08;Video Panoptic Segmentation&#xff09;领域 Benchmark&#xff1a;VIPSeg。论文链接&…

GB/T 10707 橡胶燃烧性能

GB/T 10707&#xff1a;Rubber-Determination of the burning GB/T 10707&#xff1a;橡胶燃烧性能的测定 GB/T 10707橡胶燃烧性能的测定–适用范围&#xff1a; 本标准规定了在实验室环境下测定橡胶燃烧性能的两种方法&#xff1a;氧指数法和垂直燃烧法 本标准适用于在实验…

云原生丨MLOps与DevOps的区别

MLOps 是机器学习 (ML) 工程的很重要的一个部分&#xff0c;专注于简化和加速将 ML 模型交付到生产以及维护和监控它们的过程。 MLOps 涉及不同团队之间的协作&#xff0c;包括数据科学家、DevOps 工程师、IT 专家等。 MLOps 可以帮助组织创建和提高其 AI 和机器学习解决方案…

卧式钢筋切割机设计

目 录 1 绪论 1 1.1 国内外钢筋切割技术的发展状况 1 1.2 冷轧带肋钢筋的概述 2 1.2.1 钢筋的种类 2 1.2.2 冷轧带肋钢筋的表面形式 3 1.2.3 冷轧带肋钢筋基本性能 3 1.3 课题的提出和意义 4 2 对钢筋类金属材料弹塑性弯曲的分析 4 2.1 概述 5 2.2 弹塑性弯曲的变形过程 6 3 切…

再次安装torch踩过的坑

没有多余空间 我用conda 从新创建了一个项目环境&#xff0c;安装了一些基础的库。然后当我下载安装torch的时候&#xff0c;报错说安装的空间不足&#xff0c;我看了一下&#xff0c;torch确实比较大&#xff0c;一个多G&#xff0c;但是之前也没有出现过这个问题。 一开始以…

python中如何打印日志信息

日志打印方式 常见的Python日志打印方式为使用内置函数print()或者logging模块打印日志。 print()只能将日志打印至控制台&#xff0c;不推荐此方式logging模块默认将日志打印至控制台&#xff0c;也可以配置打印到指定日志文件&#xff0c;推荐使用此方式 logging模块 日志…

[附源码]JAVA毕业设计高速公路服务区管理系统(系统+LW)

[附源码]JAVA毕业设计高速公路服务区管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项…