ch0_汇编介绍

学习参考:

https://helijian.blog.csdn.net/article/details/60885095
参考贺利坚老师的汇编课程

在这里插入图片描述

1. 汇编作用

1.1 汇编是所有语言的老祖宗

在这里插入图片描述

1.2 不可替代的使用场景

汇编语言仍在发挥不可替代的作用:

  • 效率
    . 运行效率:开发软件的核心部件,快速执行和实时响应。
    . 开发效率:做合适的事,开发效率无敌

  • 底层:计算机及外围设备的驱动程序
    . 操作系统的内核
    . 嵌入式系统:家用电器、仪器仪表、物联网……

  • 汇编语言在学习计算机中起到的独特作用——直击计算机系统的核心

  1. 便于加深对计算机原理和操作系统等课程的理解。
  2. 通过学习和使用汇编语言,能够感知、体会和理解机器的逻辑功能
  3. 向上为理解各种软件系统的原理,打下技术理论基础
  4. 向下为掌握硬件系统的原理,打下实践应用基础。
  5. 学会底层的程序调试和错误分析方法。

1.3 学习内容

定位:理解硬件结构,掌握指令集,理解程序的运行过程

内容: 8088、8086指令集与汇编语言程序设计

视频, 加上自己动手实践;

2. 机器语言到汇编语言

2.1机器语言与机器指令

  • 机器语言是机器指令的集合。

  • 机器指令是一台机器可以正确执行的命令。

机器指令由一串二进制数表示,例 01010000

电平脉冲:

在这里插入图片描述

早期程序员们的工作形态
将 0、1 数字编程的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。

:例:计算S = 768 + 12288 - 1280的程序
:机器码

在这里插入图片描述

2.2汇编语言与汇编指令

: 汇编语言的主体是汇编指令。

汇编指令和机器指令的差别在于指令的表示方法上

汇编指令是机器指令便于记忆的书写格式。
汇编指令是机器指令的助记符。

机器指令: 1000100111011000
操作:将寄存器BX的内容送到AX中
汇编指令:MOV AX, BX

寄存器:CPU中可以存储数据的器件。
一个CPU中有多个寄存器。
在这里插入图片描述

2.3用汇编语言编写程序的工作过程

  1. 伪指令, 编译器执行
  2. 汇编指令,机器码的助记符;
  3. 其他符号, 编译器识别

在这里插入图片描述

3.  计算机的组成

在这里插入图片描述

3.1 计算机的组成

CPU 是计算机的核心部件,它控制整个计算机的运作并进行运算。要想让一个CPU工作,就必须向它提供指令和数据。

在这里插入图片描述

指令和数据在存储器(内存)中存放。离开了内存,性能再好的CPU也无法工作

3.2 指令和数据的表示

计算机中的数据和指令,存储在内存或磁盘上。
在这里插入图片描述

指令和数据是存放在存储器中的,而计算机包含多种存储器;

但是,在计算机工作的过程中, 指令和数据则必须存放到内存中
而对于cpu 而言,访问指令和数据都是从内存中读取或写出;

数据和指令,都是二进制信息。
问题:二进制信息1000100111011000是数据,还是指令?
; 1000100111011000 ─> 89D8H (数据)
; 1000100111011000 ─> MOV AX,BX (程序)

同样是一串二进制数, 到底代表的是数据还是指令, 这取决于cpu 如何去使用它

  • 数据如何表示?
    ; 1000100111011000B (二进制)
    ; 89D8H (十六进制)
    ; 104730O(八进制)
    ; 35288D(十进制)

  • 数据量:B、KB、MB、GB、TB…

3.4 计算机中的存储单元

每个存储单元中,放一个字节的数据;

存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号;

例如:
一个存储器有128个存储单元,
编号从0~127,
如右图示:

在这里插入图片描述

实际
内存空间很“大”,
8086有20条数据线,
20位,代表5个十六进制数

寻址空间 2 20 2^{20} 220,为1MB

3.5 计算机中的总线

在计算机中专门有连接CPU和其他芯片的导线,通常称为总线。

物理上:一根根导线的集合;

在这里插入图片描述

逻辑上划分为
. 地址总线
. 数据总线
. 控制总线

逻辑上划分:

  1. 地址总线

CPU是通过地址总线来指定存储单元的。
• 地址总线宽度,决定了可寻址的存储单元大小。
• N根地址总线(宽度为N),对应寻址空间 2 N 2^N 2N

在这里插入图片描述

  1. 数据总线

CPU与内存或其它器件之间的数据传送是通过数据总线来进行的。
• 数据总线的宽度决定了CPU和外界的数据传送速度。

例:向内存中写入数据89D8H时的数据传送

在这里插入图片描述

  1. 控制总线

CPU通过控制总线对外部器件进行控制。
• 控制总线是一些不同控制线的集合
• 控制总线宽度决定了CPU对外部器件的控制能力。

在这里插入图片描述

在这里插入图片描述

4. 内存的读写与地址空间

4.1 CPU对存储器的读写

CPU要想进行数据的读写,必须和外部器件进行三类信息的交互:

  1. 存储单元的地址
    (地址信息)
  2. 器件的选择(选择是寄存器,内存组空间,端口,),读或写命令
    (控制信息)
  3. 读或写的数据
    (数据信息)

机器码: 101000000000001100000000
16进制:A00300
汇编指令:MOV AL,[3]
含义:从3号单元读取数据送入寄存器AL;

在这里插入图片描述

执行操作,将编号为3的内存单元中的数据,送到寄存器AL 中,包含三个步骤;

  1. cpu 要读取的内存地址 通过地址线送到内存单元中,找到对应的地址;
  2. 控制器通过控制线, 发出读命令到内存单元;
  3. 从对应地址的内存单元中取出数据送到寄存器中;

4. 2 内存地址空间

RAM: 可读可写;
ROM: 只读存储器, 计算机启动时需要用到的信息,比方系统的BIOS;

什么是内存地址空间:

代表了可以有多少空间容量,专门用来存放地址的。

CPU地址总线宽度为N,寻址空间为 2 N 2^N 2NB
8086CPU的地址总线宽度为20,那么可以寻址1MB个内存单元,其内存地址空间为1MB。

从CPU角度看地址空间分配

在这里插入图片描述

在这里插入图片描述

4.3 统一编址

将各类存储器看做是一个逻辑存储器,统一编址;

所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器;

在这里插入图片描述

4.4 内存地址空间的分配方案

每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间;

CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。
在这里插入图片描述

4.5

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL高级篇笔记-数据库的设计规范(中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、为什么要数据库设计 二、范式 1、范式简介 2、范式都包括哪些 3、键和相关属性的概念 4、第一范式(1st NF) 5、第二范式(2nd NF) 6、第三范式(3rd NF) 7、小结 三、反范式化 1、概述 2、 应用举例 3、反范式的新问…

split()分割字符串【JavaScript】

分割字符串 在JavaScript中,我们可以使用split( )方法把一个字符串分割成一个数组, 这个数组存放的是原来字符串的所有字符片段。 有多少个片段,数组元素个数就是多少。 语法 字符串名.split("分割…

【Vue3】学习笔记-shallowReactive与ShallowRef

shallowReactive:只处理对象最外层属性的响应式(浅响应式)。 shallowRef:只处理基本数据类型的响应式, 不进行对象的响应式处理。 什么时候使用? 如果有一个对象数据,结构比较深, 但变化时只是外层属性变化 > sh…

Spring Cache

Spring Cache 一.Spring Cache介绍 Spring Cache是一个框架,实现了基于注解的缓存功能,只需要加一个注解,就能实现缓存功能 Spring Cache整合了很多的缓存产品,提供一层抽象(接口),底层可以切换不同的缓存 具体是通过CacheManager接口来统一不同的缓存技术 二.Spring Cache…

RocketMQ on openEuler 提供高性能消息队列的稳定性解决方案

RocketMQ on openEuler,是一种将 RocketMQ 消息中间件通过容器化的方式部署在 openEuler 操作系统上运行,借助 openEuler 系统对于 OS 缓存回收效率增强的内核特性,提升消息中间件在面向超大规模高并发、高吞吐量、低延迟场景下稳定性和可靠性…

windows 10 安装Python 3.10版

一、查找官网 1.python官网需要VPN(建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。),打开VPN进行代理之后,打开网址:https://www.python.org/ 二、查找所需下载的系统及版本 1.本机是winodws操作系统&…

详解JAVA Socket

目录 1.概述 2.使用 3.使用场景 3.1.web server中的网络通信 3.2.长连接 3.3.性能问题 1.概述 什么是网络通信: 就像打电话一样,两点间要通信,两点间就必须有连接,为了实现任意两个节点之间的通信,我们就必须采…

Zabbix监控

Zabbix监控 1.Zabbix监控概述1.1 zabbix是什么1.2 zabbix监控原理1.3 Zabbix 6.0新特性1.4 Zabbix 6.0功能组件1.5 Zabbix与prometheus区别对比 2. 部署Zabbix6.02.1 安装NginxPHP2.2 部署Mariadb数据库2.3 安装zabbix Server服务端2.4 部署Web前端,进行访问2.5 部署…

Vue 2.0 学习笔记——day01(环境配置+入门)

vue安装 版本 兼容性问题: Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。 有关EMCA:https://zhuanlan.zhihu.com/p/367249029 最新版本:v 2.7.14 …

Flink写入数据到ClickHouse

文章目录 1.ClickHouse建表1.ClickHouse依赖2.Bean实体类3.ClickHouse业务写入逻辑4.测试写入类5.发送数据 1.ClickHouse建表 ClickHouse中建表 CREATE TABLE default.test_write (id UInt16,name String,age UInt16 ) ENGINE TinyLog();1.ClickHouse依赖 Flink开发相关…

【Web3】认识NFT

NFT(非同质化代币)在Web3中扮演着重要的角色。Web3是指下一代互联网,它建立在区块链技术之上,旨在实现更加去中心化、透明和用户掌控的互联网。 NFT在Web3的一些重要作用: 唯一性和可证明稀缺性:NFT是一种…

第十二章 原理篇:vision transformer

参考教程: https://arxiv.org/pdf/2010.11929.pdf https://zhuanlan.zhihu.com/p/340149804 【大佬总结的非常好,他的好多篇文章都很值得学习】 文章目录 为什么会使用transformerVIT详解method获得patchpatch embeddingposition embedding 代码实现eino…