汇编入门

原文:https://blog.csdn.net/Gibbs_p/article/details/72257840

本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,是王爽所著的《汇编语言》的简单版,感谢ttps://my.csdn.net/baidu_36313748的,在建议此感谢小甲鱼和像他一样共享资源、帮助他人的筒子们==本文比较长,由于笔者个人能力有限,错漏在所难免,欢迎读者们批评指正。

 

一、基础知识
引言
基本了解硬件系统的结构;
利用硬件系统的编程结构和指令集,有效灵活地控制系统进行工作。
1.1 机器语言
机器语言是机器指令的集合。电子计算机的机器指令是一系列二进制数字。计算机将之转换为一系列高低电平脉冲信号来驱动硬件工作的。
1.2 汇编语言的产生
由于机器语言指令都是由01组成,难以编写,记忆和维护程序.所以汇编语言为了解决这一问题产生。汇编语言的主体是汇编指令,汇编指令是机器指令的助记符。
寄存器: CPU中存储数据的器件,一个CPU中有多个寄存器。
1.3 汇编语言的组成
1、汇编指令(机器码的助记符,有对应的机器码);
2、伪指令(由编译器执行)和其他符号(由编译器识别)。
1.4 存储器
CPU工作需要指令和数据,指令和数据存储在存储器中。
1.5 指令和数据
在内存或者磁盘中存储的都是为二进制信息,指令和数据由我们设定(走的总线)。
1.6 存储单元
存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号。
B、KB、MB、GB、TB等单位。
1.7 CPU对存储器的读写
CPU要对数据进行读写,必须和外部器件进行以下三类信息的交互:

1、存储单元的地址(地址信息);
2、器件的选择、读或写命令(控制信息);
3、读或写的数据(数据信息) 。
总线是连接CPU和其他芯片的导线,逻辑上分为地址总线、数据总线、控制总线。

 

CPU从内存单元中读写数据的过程:

1、CPU通过地址线将地址信息发出;
2、CPU通过控制线发出内存读命令,选中存储器芯片,并通知它将要从中读或写数据;
3、存储器将相应的地址单元中的数据通过数据线送入CPU或CPU通过数据线将数据送入相应的内存单元。
1.8 地址总线
CPU是通过地址总线指定存储单元,地址总线传送的能力决定了CPU对存储单元的寻址能力。(一般32位CPU,寻址能力为2^32=4G)
1.9 数据总线
CPU通过数据总线来与内存等器件进行数据传送,数据总线的宽度决定了CPU和外界的数据传送速度。
1.10 控制总线
控制总线是一些不同控制的集合,CPU通过控制总线对外部器件的控制。控制总线的宽度决定了CPU对外部器件的控制能力。
小结
1、汇编指令时机器指令的助记符,与机器指令一一对应。
2、每一种CPU都有自己的汇编指令集。
3、CPU可以直接使用的信息在存储器中存放。
4、在存储器中指令和数据都是二进制信息。
5、存储单元从0开始顺序编号。
6、一个存储单元可以存储8个bit。
7、B、KB、MB、GB等单位之间的转换。
8、CPU管脚和总线相连。总线的宽度表示CPU不同方面的性能:
地址总线的宽度决定了CPU的寻址能力;
数据总线的宽度决定了CPU与其他器件进行一次数据传送的量;
控制总线宽度决定了CPU对系统中其他器件的控制。
检测点 1.1


1.11 内存地址空间(概述)
CPU可寻的内存单元构成这个CPU的内存地址空间。例如一个CPU的地址总线宽度为10,那么可以寻址的1024个内存单元构成了这个CPU的内存空间。
1.12 主板
主板主板,主要的电路板 :laughing:
1.13 接口卡
CPU通过接口卡间接控制外部设备。
1.14 各类存储器
随机存储器RAM(主板上的RAM、拓展插槽上的RAM和接口卡上的RAM)和只读存储器器ROM(装有BIOS的ROM)。

1.15 内存地址空间
各类存储器在物理上是独立的,但是:

1、都和CPU的总线相连;
2、 CPU对他们进行读或写的时候都通过控制线发出的内存读写命令。


不同的计算机系统的内存地址空间分配情况是不同的。
二、寄存器(CPU的工作原理)
引言
CPU由运算器、控制器、寄存器 等器件组成,靠内部总线相连。
内部总线实现CPU内部各器件之间的联系;外部总线实现CPU和主板上其他器件的联系。
在CPU中:
运算器进行信息处理;
寄存器进行信息存储;
控制器控制各种器件进行工作;
内部总线连接各种器件在它们之间进行数据的传送。
2.1 通用寄存器
8086有14个寄存器:
AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、CS、ES、PSW。
AX、BX、CX、DX通常用来存放一般性数据,被称为通用寄存器。
16位寄存器所能存储的数据最大值为2^16^-1 。
为保证兼容性,8086 CPU的通用寄存器可以分为两个独立的8位寄存器使用。例: AX可分为AH和AL。
2.2 字在寄存器中的存储
8086 CPU所有的寄存器是16位,可以存放2个字节(一个字)。

一字节由8 bit 组成,可以存在8位寄存器中。

字(word)是两字节,16位。

 

2.3 几条汇编指令
汇编指令对大小写不敏感

汇编指令举例

汇编指令 控制CPU完成的操作 用高级语言的语法描述
mov ax,18 将8送入AX AX=18
mov ah,78 将78送入AH AH=78
add ax,8 将寄存器AX中的数值加上8结果存入AX中 AX=AX+8
mov ax,bx 将寄存器BX中的数据送入寄存器AX AX=BX
add ax,bx 将AX,BX中的内容相加结果存入AX中 AX=AX+BX
检测点 2.1


2.4 物理地址
所有的内存单元构成一个一维的线性存储空间。
CPU访问内存单元时要给出内存单元的唯一地址就是物理地址。
2.5 16位结构的CPU
1、运算器一次最多可以处理16位数据。
2、 寄存器的最大宽度为16位。
3、寄存器和运算器之间的通路是16位。
2.6 8086 CPU给出物理地址的方法
8086有20位的地址总线,可以传送20位地址,寻址能力为1M;但8086内部为16位结构,只能传送16位的地址。
8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。


8086CPU读写内存的步骤:
1、CPU中的相关部件提供段子和偏移地址这两个16位的地址;
2、段地址和偏移地址通过内部总线送入到一个称为地址加法器的部件;
3、地址加法器将两个16位地址合并成一个20位的地址;
4、地址加法器通过内部总线将20位物理地址送送入输入输出地址;
5、输入输出控制电路将20位物理地址送上地址总线;
6、20位物理地址被地址总线传送到存储器。
地址加法器工作原理:物理地址=段地址*16+偏移地址。

- 段地址*16就是数据左移4位(二进制)

移位位数 二进制 十六进制 十进制
0 10B 2H 2
1 100B 4H 4
2 1000B 8H 8
3 10000B 10H 16
4 100000B 20H 32
一个数据的二进制形式左移N位,相当于该数据乘以2的N次方。一个数据X进制形式左移N位,相当乘以NX。
2.7 段地址*16+偏移地址=物理地址
CPU可以通过不同的段地址和偏移地址形成一个相同的物理地址。


段地址*16是移位

2.8 段的概念
人为定义的,将若干地址连续的内存单元看作一个段。用段地址*16定位段的起始地址(基址),用偏移地址定位段中的内存单元。


一个段的起始地址是16的倍数。偏移地址为16位,寻址能力为64K,所以段的最大长度也是64K。

检测点 2.2


2.9 段寄存器
8086 CPU有4个段寄存器:CS(代码段)、DS(数据段)、SS(堆栈段)、ES(附加段),这4个段提供给8086CPU内存单元的段地址。
2.10 CS和IP
CS(代码段寄存器) 和IP(指令指针寄存器) 是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。在任意时刻CPU将CS:IP指向的内容当作指令执行。
8086CPU工作过程的简要概述:

1、从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;

8086PC机刚开始启动时,CPU从内存FFFF0h单元中读取指令执行,FFFF0h单元中的指令时8086PC机开机后执行的第一条指令。

2、 IP=IP+所读取指令的长度,从而正确的指向下一条指令;

3、执行指令。转到步骤1,周而复始。
2.11 修改CS、IP的指令
mov指令(传送指令) 可以改变8086CPU大部分寄存器的值,但不能用于设置CS、IP的值。
jmp指令(转移指令) 可以用来同时修改CS和IP的值,格式为
jmp 段地址:偏移地址;同时修改CS和IP
jmp 某一合法寄存器;则是仅修改IP
1
2
2.12 代码段
对于8086PC机,在编程时可以将长度为N(N小于等于64KB)的一组代码存在一组地址连续、起始地址为16的倍数的内存单元中,这段内存是用来存放代码的,从而定义了一个代码段。
利用CS:IP来指向内存单元从而让CPU执行其中的内容。
检测点 2.3


使用Debug
windows xp系统自带debug,请使用xp以上系统的读者执行自行下载debug.exe和dosbox,使用方法笔者不再赘述,在dosbox中可以使用debug。

————————————————
版权声明:本文为CSDN博主「PGibbs」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Gibbs_p/article/details/72257840

posted @ 2023-02-28 23:56  MaxBruce  阅读(180)  评论(0)    收藏  举报