汇编语言第一周学习

目录

前言

汇编语言

一.基础知识

1. 汇编语言的组成

2.储存器

3.储存单元

4.CPU对储存器的读写

5.地址总线

6.数据总线

7.控制总线

8.接口卡

9.随机储存器(RAM)只读储存器(ROM)

二.寄存器

1.通用寄存器

2.字在储存器中的储存

3.几条汇编指令

4.物理地址

5. 16位结构的CPU

6.8086CPU给出物理地址的方法

7.段寄存器

8.CS和IP

9.Debug

10.修改DS和IP指令

三.寄存器(内存访问)

1.add和sub指令不能对段寄存器进行操作

2.栈

总结



前言

在学长推荐下阅读王爽的《汇编语言》进行自学,第一次接触底层的语言也是新奇,但是由于刚开始不会使用markdown,将笔记写在了doc文件中,无法进行转移qwq哇哇哭

下周一定是完完整整的笔记qwq


汇编语言

  • 一.基础知识

    1. 汇编语言的组成

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

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

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

    2.储存器

    要想让CPU工作,必须向他提供指令和数据。指令和数据在储存器中存放,也就是内存

    3.储存单元

    储存器被划分成若干储存单元。 计算机最小信息单位是bit(比特),也就是一个二进制位。8个bit组成一个Byte(字节) 常用计量单位:KB、MB、GB、TB

    4.CPU对储存器的读写

    CPU要进行数据读写,必须与外部器件(芯片)进行3类信息交互。 1)储存单元的地址(地址信息)

    2)器件的选择,读或写的命令(控制信息)

    3)读或写的数据(数据信息) 总线:专门连接CPU和其他芯片的导线,包括地址总线、控制总线和数据总线

    5.地址总线

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

    6.数据总线

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

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

    7.控制总线

    控制总线的宽度决定了 CPU对外部器件的控制能力。

    8.接口卡

    CPU对外部设备都不能直接控制(如显示器、音箱)

    CPU通过总线向接口卡发送命令,接口卡根据CPU的命令控制外设进行工作

    9.随机储存器(RAM)只读储存器(ROM)

    储存器相同点 *都和CPU的总线相连。 *CPU对它们进行读或写的时候都通过控制线发出内存读写命令。

    假想的逻辑储存器(内存地址空间)

    内存地址空间的大小受CPU地址总线宽度的限制。8086CPU的地址总线宽度为20,可以传送220个不同的地址信息(大小从О至220-1)。即可以定位220个内存单元,则8086PC 的内存地址空间大小为 1MB。同理,80386CPU 的地址总线宽度为32,则内存地址空间最大为4GB。

二.寄存器

在CPU中:

*运算器进行信息处理;

*寄存器进行信息存储;

*控制器控制各种器件进行工作;

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

1.通用寄存器

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

AX、BX、CX、DX这四个储存器通常用来存放一般性的数据,被称为通用寄存器

8086上一代CPU中的寄存器都是8位的,为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用

AX可以分为AH和AL(high low)BCD同理 AX的低8位(0位~7位)构成了AL寄存器,高8位(8位~15位)构成了AH寄存器,两者都是可以独立使用的8位寄存器

2.字在储存器中的储存

字:记为word,一个字由两个字节组成,这两个字节分别称为高位字节和低位字节,正好存在一个16位的寄存器中

3.几条汇编指令

汇编指令不区分大小写

4.物理地址

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

5. 16位结构的CPU

特点:1)运算器一次可以处理16位数据

2)寄存器的最大宽度为16位

3)寄存器和运算器的通路之间是16位

6.8086CPU给出物理地址的方法

8086有20位地址总线,可传送20位地址,寻址能力为1MB 8086内部为16位结构,它只能传送16位的地址,寻址能力只有64KB

当CPU要读写内存时: (1)CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;

(2)段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;

(3)地址加法器将两个16位地址合成为一个20位的物理地址;

(4)地址加法器通过内部总线将20位物理地址送入输入输出控制电路;

(5)输入输出控制电路将20位物理地址送上地址总线;

(6)20位物理地址被地址总线传送到存储器。 地址加法器采用物理地址=段地址x16(左移一位)+偏移地址的方法用段地址和偏移地址合成物理地址

7.段寄存器

段地址在8086CPU的段寄存器中存放。8086CPU有四个段寄存器:CS、DS、SS、ES,由这四个提供内存单元的段地址

8.CS和IP

IP:指令指针寄存器

9.Debug

R:查看CPU内容

D:查看内存中内容

E:改变内存中内容

U:将机械指令翻译成汇编指令

A:以汇编指令的格式写入机械指令

T:执行机械指令

q:退出debug

R+...(改变寄存器地址)

Rip:改ip的偏移地址;

rcs:改CS的段地址

10.修改DS和IP指令

若同时修改CS、IP的内容,可用“jmp段地址:偏移地址”的指令

若仅修改IP的内容,可用“jmp 某一合法寄存器”的指令(功能:用寄存器的值修改IP)jmp ax就相当于mov IP,ax

三.寄存器(内存访问)

1.add和sub指令不能对段寄存器进行操作

2.栈

入栈出栈指令:push, pop

在8086CPU中,有两个与栈相关的寄存器:

栈段寄存器SS:存放栈顶的段地址

栈顶指针寄存器SP:存放栈顶的偏移地址

任意时刻,SS:SP指向栈顶元素

Push ax的执行分两步:1)sp-2 2)送入ax的内容

Pop ax的执行:1)数据送入ax中 2)sp+

 


总结

这两天为了赶进度去写作业看的有点快,基础知识不够扎实,像转移指令之类的,希望下周再巩固一下。

加油啊下周的胡小楠

Guess you like

Origin blog.csdn.net/weixin_63051469/article/details/122525756