汇编语言(一) 电路与十六位处理器

计算机架构

计算机使用的架构主要是基于cpu而决定的

如下是我们日常生活中使用的一些电子设备应用的的结构

电脑:x86和x86_64两种架构

手机设备:ARM架构

物联网设备:Mips架构      

指令集:架构说明书

计算机为什么使用二进制

汇编语言(一) 电路与十六位处理器_第1张图片

一个电路形象说明:二进制是最简单的计算,所以二进制的计算非常快

一个电路形象说明:二级制是最简单的计算,所以二进制的计算非常快

电路加法运算

八根电线代表一个数的八位二进制形式,这十六根电线代表两个值,电线之间的相互触碰,完成了数与数之间的运算,结果由另外八根电线输出结果

汇编语言(一) 电路与十六位处理器_第2张图片

触发器

汇编语言(一) 电路与十六位处理器_第3张图片

利用触发器可以实现一个电线的加减法运算

电线第一次输入,触发器将其值存储在锁存中,到电线第二次输入,第一次的值和第二次的值进行

相互运算输出

寄存器

如图所示一个八位的寄存器,有八个触发器组成汇编语言(一) 电路与十六位处理器_第4张图片

每根电线都有对应的触发器,每次有电线输入数据时,触发器将值存储在锁存中,当有需要时,锁

存中的值和输入的值进行运算输出。输出的结果可以保存在当前寄存器中也可以别的寄存器中

寄存器的四则运算

具体操作同加法运算一致

汇编语言(一) 电路与十六位处理器_第5张图片

内存

内存的物理形态:

汇编语言(一) 电路与十六位处理器_第6张图片

内存的实际形态:   

       汇编语言(一) 电路与十六位处理器_第7张图片

如图:此处是八根地址线,决定了只能传输0-255位的地址范围。控制下此处由一根,用作开关状

态,决定是读是写,然后在地址线的位置进行读写操作。此处数据线由八根,用于在一个地址线的

位置上取出八位的值进行传输

汇编指令

汇编语言(一) 电路与十六位处理器_第8张图片

如上图就是一些汇编指令的演示,为更直观的表现,前三个我们自行创建类似指令以便形象演示:

一串汇编指令被我们分割成两份,左边那份是指令,右边那份是指令作用的地址

处理器雏形

如下是一个八位处理器汇编语言(一) 电路与十六位处理器_第9张图片

两个数据寄存器用于存储数据,运算器指定运算方式并发布指令,由某地址线指向特定内存地址进

行内存操作,由控制线控制读写操作,由数据线控制数据的取出写入

指令指针寄存器永远指向执行代码的下一行

编程形式

开关 – 打孔 – 输入设备

cpu只能识别01,开关很形象的表示01,最初的编程就是用打孔机打孔,表示01,输入设备交给

cpu执行

汇编语言的出现

由于二进制值难记,每种功能的二进制控制码取一个容易记住的名字,叫做助记符,也称之为指

令。

以下是一些二进制值对应的助记符

00B - add

01B - sub

10B - xor

如上便是一个汇编语言在内存中的形式

从左到右依次是内存地址 硬编码(用于cpu识别) 汇编指令

eax ebx寄存器,5 6是值 mox add是汇编指令

如mov eax,5指的是移动5到寄存器eax中进行保存  

汇编程序的执行过程

汇编源代码经过汇编编译器汇编成处理器可识别的二进制代码程序交给处理器执行

16位处理器的通用寄存器

汇编语言(一) 电路与十六位处理器_第10张图片

以下以AX寄存器演示其内部构造

AX分为高八位AH和低八位AL分别存储高三位和低八位的二进制代码

内存字节序

以下以0x12345678展示其在内存中的大端序和小端序

在大端序系统中,最高有效字节存储在最低的内存地址,而最低有效字节存储在最高的内存地址:

12345678

在小端序系统中,最低有效字节存储在最低的内存地址,而最高有效字节存储在最高的内存地址:

78563412

段的概念

汇编语言(一) 电路与十六位处理器_第11张图片

cs段就是代码段,每个段都有基址,十六位处理器段寄存器直接存放它的基址

可执行代码之间并不是单纯的前后关系,而是分为两种情况,以下以一条指令为例讲解第一种情况

第一个可执行汇编指令地址中,汇编指令的硬编码有五个字节,则下一个可执行汇编代码地址由该

指令地址加上五个字节便是下一个指令地址

第二种情况:下一条汇编指令要跳转指令,硬解码中后面包括跳转地址,直接跳转下一个地址

一些其他段

CS:代码段

DS:数据段

ES:扩展段

SS:堆栈段

你可能感兴趣的:(汇编)