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

汇编基础知识

CPU:一种可以执行机器指令进行运算的芯片(微处理器)。

存储器(内存):存放CPU可以工作的指令和数据(指令和数据都是二进制信息)。  磁盘不同于内存,磁盘中的数据要读到内存中才能被CPU使用          

磁盘>>内存>>CPU

存储器分若干存储单元,并从0开始按顺序编号(一个存储器有128个存储单元,编号0~128)

电子计算机最小信息单位是bit(比特),即一个二进制位。

8个bit(8个二进制位)组成一个字节(Byte)。

大容量存储器计量容量的单位(磁盘单位也一样):

1KB=1024B

1MB=1024KB 

1GB=1024MB 

1TB=1024GB

机器指令就是一台机器可以正确执行的命令。(电子计算机的机器指令是一列二进制数字0、1)

主板:上面有核心器件和主要器件,还有拓展插槽(上面一般有RAM内存条和各类接口卡)他们通过总线相连

接口卡:CPU对外部设备(显示器、音响、打印机等)不能直接控制,插在扩展插槽上的接口卡才能直接控制,CPU又可以通过总线直接控制接口卡,达到根据CPU间接命令控制外设进行工作的目的  (很长一大段总结下来的)

二进制数字>高低电平>驱动计算机电子器件>进行运算

寄存器:CPU中可以存储数据的器件,一个CPU含有多个寄存器

汇编指令是机器指令便于记忆的书写格式。(用于编写源程序)

操作:寄存器BX的内容送到AX中(其中一个寄存器的代号,即另一个寄存器)

机器指令:1000100111011000

汇编指令: mov ax,bx

(汇编语言写出)源程序 >> 汇编编译器(编译为) >> 机器码(计算机可执行)

因为存储器被划分成多个存储单元并编号,可将编号视为地址,方便CPU从指定地址中读取数据

CPU要想进行数据的读写,必须和芯片进行3类信息交互:

(1)存储单元的地址(地址信息)

(2)器件的选择,读或写的命令

(3)读或写的数据(数据选择)

如图

我将其通俗的理解为   1找、2回、3去

专门连接CPU和其他芯片的导线:总线(逻辑上分为 地址总线、控制总线、数据总线)

即 “”一找地址线、二回数据线、三去控制线”,这样感觉方便理解一点

写、读操作的步骤都一样。

地址总线

一根导线只能传送 高电平 或 低电平 两种稳定状态,二进制表示 0 或 1.

10根导线可传送10位二进制数据;10位二进制数据可表示2**10(2的10次方)个不同的数据(最小0,最大1023)

地址总线的宽度决定了CPU的寻址能力

如10根地址线的CPU向内存发出地址信息11时 10根地址线上传送的二进制信息为:

数据总线

数据总线:CPU与内存或其他器件之间进行数据传输的介质,其宽度(根数)决定CPU与外界的数据传输速度。

如8根数据总线一次可传送一个8位2二进制数(即一字节)

8088CPU(总线宽为8)的数据传输情况为:

8086CPU(总线宽16)的数据传输情况:

控制总线

CPU可通过控制总线(是一些不同控制线的集合)对外部器件进行控制。有多少根控制总线就意味着CPU对外部的控制有多少种。(越多控制能力越强,包括读或写命令)

总之,

汇编指令是机器指令的助记符,他们一 一对应。

每一种CPU都有自己的汇编指令集

CPU可以直接使用的信息存放在存储器中

存储器中指令和数据没有任何区别(都是二进制信息)

最终运行程序的是CPU,用汇编语言编程的时候,必须要从CPU的角度考虑问题。

对于CPU来讲,系统中所有 存储器 中的 存储单元 都处于一个统一的 逻辑存储器 中,它的容量受CPU 寻址能力 的限制(这句话或许要在后期的学习中逐渐体会)

典型的CPU是由寄存器(核心)、运算器控制器等器件组成。

寄存器:信息存储。程序员可以用指令读写,并通过改变寄存器中的内容来实现对CPU的控制。其最大宽度为16位

运算器:信息处理。一次最多可处理16位的数据  (寄存器和运算器之间的通路为16位 )

控制器:控制器件工作

内部总线:实现CPU内各器件间联系,进行数据传输。

 十六进制数的一位相当于二进制数的四位,如二进制数0100111000100000表示为

4(0100)、E(1110)、2(0010)、0(0000)四位十六进制数

十六进制数后加H、二进制数据后加B、十进制数后啥也不加

如 十进制数20000  十六进制:4E20 二进制:0100111000100000B

8086CPU所有寄存器都是16位(可存放两个字节),

通用寄存器:AX、BX、CX、DX(ABCD埃克斯(X))存放一般数据

8086CPU上一代寄存器为8位,其稍加修改就可运行在8086之上,即ABCD埃克斯(X)四个寄存器每个都可分为两个独立使用的8位寄存器来用(二8  16嘛)

ABCD埃克斯(X)下分的两个寄存器就是HL(即AX>>AH、AL;BX>>BH、BL.......)

简单粗暴但好记。

汇编语言的组成

(1)汇编指令(核心,其决定了汇编语言的特性):机器码的助记符,有对应的机器码

(2)伪指令:没有对应的机器码,由编译器执行,计算机不执行

(3)其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码

为方便理解,有时会用文字描述和高级语言描述两种方式来描述一条汇编指令的含义。

在写汇编指令或寄存器名称时不区分大小写,如 mov ax,18和 MOV AX,18 含义相同。

注意 add ax, bx 表示将寄存器ax中的数值加上寄存器bx中的数值,但bx中的数值不改变。

在进行数据传输或运算时,要注意指令的两个操作对象的位数(8位、16位)应当是一致的,如

mov ax,bl(在8位和16位寄存器间传送数据)

mov bh,ax(在16位和8位寄存器间传送数据)

mov al,20000(8位寄存器最大可存放值为255的数据)

add al,100H(将一个高于8位的数据加到一个8位寄存器中)

等都是错误指令(指令得到两个操作对象位数不一致)

相关文章:

  • 压测实战 | 微信小程序商城 “双 11” 的压测实践
  • 开源文档管理系统 Paperless-ngx
  • Java学习------内部类
  • 4G模组Air780EPM:解锁物联网时代的硬件接口奥秘!
  • 【eNSP实战】(续)一个AC多个VAP的实现—将隧道转发改成直接转发
  • 有了大模型为何还需要Agent智能体
  • Mysql-经典实战案例(3): pt-archiver 实现 MySQL 千万级大表分库分表(上)
  • 设计模式之外观模式:原理、实现与应用
  • 设备物联网无线交互控制,ESP32无线联动方案,产品智能化响应
  • OpenCV计算摄影学(23)艺术化风格化处理函数stylization()
  • 【Android Studio】解决遇到的一些问题
  • Vue3项目中可以尝试封装那些组件
  • SpringSecurity——如何实现验证码登录页面
  • 内存回收异常导致OOM的问题
  • Android中的Wifi框架系列
  • JS中的变量提升
  • OpenCV 图像双线性插值
  • 地球46亿年历史的“微观褶皱”
  • 六十天前端强化训练之第二十二天之React 框架 15天深度学习总结(大师版)
  • 节点编辑器STNodeEditor快速入门,流程图编程
  • 国铁集团:铁路五一假期运输收官,多项运输指标创历史新高
  • 央行将增加3000亿元科技创新和技术改造再贷款额度
  • 大规模空袭也门一日后,以军又对也门萨那机场发出撤离警告
  • 有人悬赏十万寻找“全国仅剩1只”的斑鳖,发帖者回应并证实
  • 微软通讯软件Skype正式停止运营:斥资85亿美元购入,月活用户曾超3亿
  • GOMU超马世锦赛,男女冠军刷新世界纪录