欢迎光临散文网 会员登陆 & 注册

汇编语言

2022-10-31 14:46 作者:Vector永远的神  | 我要投稿

汇编语言是在机器语言之上的一层语言,在直接操作硬件层面之上的,控制硬件系统去工作。简单来说,汇编语言就是机器指令便于记忆的书写格式。

机器指令就是由汇编指令,伪指令和其他符号构成,汇编指令相当于是助记分符号,伪指令就是编译器来负责运行,其他符号就是编译器来识别。

CPU对于数据的读写,在存储的内存或磁盘单元上,指令和数据是没有任何区别的,都是0101式的二进制文件。

CPU根据地址总线、数据总线和控制总线来分别传输对应的内容。

CPU通过地址总线来指定存储单元,地址总线的位数就是同时能传输多少不同的信息,CPU就可以对多少个存储单元进行寻址,N位地址线对应2^N个地址位。

CPU是由低位到高位进行索引的,先存储的是个位数,再是十百千。

数据总线的宽度决定了CPU与外界的数据传输速度。

CPU通过控制总线来完成对外部元件的控制,控制总线的数量代表着对器件的控制能力,也就是能产生多少种不同的控制命令。

每一款CPU都有自己的汇编指令集,CPU可以直接使用的信息在存储器中存放。

CPU的地址宽度为10,可以搜寻到2^10个位置,构成内存地址空间。BIOS,Basic Input/Output System。RAM 随机存储器,ROM 只读存储器。

CPU对存储器的控制

所有的存储器都和CPU的主线相连接,对于它们的读写命令都是通过控制总线,CPU是看不见具体的内存空间,只有根据地址来分别访问,将这些不同的存储器看作一个大的逻辑存储器来进行使用。

汇编语言指令举例

汇编指令注意逗号的位置,mov ax是一整个指令,只用一个字节进行存储,中间是没有逗号的。mov指令是将后面的寄存器里面的数据放到前面寄存器。AX BX等普通的通用寄存器的最大宽度为16位,为了兼容8位系统,可以将其划分为上8位和下8位寄存器,分别用AH和AL来表示。

ALU运算器一次能处理16位的数据运算,寄存器的最大宽度为16位,运算器和寄存器之间的链路宽度为16位。

当在处理add指令时出现进位的情况需要处理的时候,会出现进位丢失的情况,不在当前的寄存器中存储进位数据,而是会专门存储,并不是真正意义上的丢失。

地址控制的逻辑结构

8086CPU的与外部器件相连的地址总线的宽度为20位,寻址能力为1MB,但是内部的宽度仅为16位,64KB的寻址能力,存在差距。因此使用两个16位的地址合成一个20位的物理地址。

物理地址=段地址*16+偏移地址,内存中是不存在段这种物理结构的,短的划分是来自于CPU的逻辑运算。*16的操作就相当于二进制数左移4位。偏移地址的长度为16位,也就是最多一个段内有64KB的内存单元。注意:一个物理地址可以由很多不同的段地址和偏移地址相加来形成。


汇编语言的评论 (共 条)

分享到微博请遵守国家法律