(一)基础知识--汇编笔记

汇编语言

Posted by YiMiTuMi on March 11, 2020

汇编基础

汇编的3类指令:

 1)汇编指令:机器码的助记符,有对应的机器码。

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

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

汇编语言的核心是汇编指令,它决定了汇编语言的性质。

磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用。

CPU进行数据读写与外部器件的3类交互:

 1)存储单元的地址(地址信息)。-> 地址总线

 2)器件的选择,读或写的命令(控制信息)。-> 控制总线

 3)读或写的数据(数据信息)。-> 数据总线

一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。

有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制,所以,控制总线的宽度决定了CPU对外部器件的控制能力。

在CPU中:

 1)运算器进行信息处理。

 2)寄存器进行信息存储。

 3)控制器控制各种器件进行工作。

 4)内部总线连接各种器件,在它们之间进行数据的传送。

寄存器是CPU中程序员可以用指令读写的部件。程序员通过各种寄存器中的内容来实现对CPU的控制。

汇编指令

mov ax,18 将10送入寄存器AX

mov ah,78 将78送入寄存器AH

add ax,8  将寄存器AX中的数值加上8

mov ax,bx 将寄存器BX中的数据送入寄存器AX

add ax,bx 将AX和BX中的数值相加,结果存在AX中

sub bx,ax 相当于bx = bx - ax

当ax分为al和ah之后就分为两个独立的8位寄存器所以al产生的进位并不会存储在ah中。

在进行数据传递或运算时,要注意指令的两个操作对象的位数应当是一致的。即16寄存器不能add内存单元的数据(8位)

物理地址

CPU访问内存单元,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址。

CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。

16位结构的CPU

运算器一次最多可以处理16位的数据。

寄存器的最大宽度为16位。

寄存器和运算器之间的通路位16位。

内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放,对于16位CPU,能一次性处理和传输、暂时存储16位地址。

给出物理地址的方法

CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址,

乘16在16进制中相当于左移一位。

8086CPU : 基础地址 + 偏移地址 = 物理地址 (大多都是)

偏移地址16位,变化范围为0 ~ FFFFH,仅用偏移地址来寻址最多可寻64KB个内存单元。

在8086PC中,存储单元的地址用两个元素来描述,段地址偏移地址

油桐花 – 情窦初开