汇编笔记(1)
最近看王爽的汇编语言,同时配合小甲鱼的视频看了一些章节,对于一些知识点还有一些容易混淆的地方在这里总结一下,希望大家来指正。
第一章: 基础知识
一、汇编语言
- 计算机只识别机器码(0和1组成),非常难认,因此产生了汇编。
- 三类指令:汇编指令,伪指令,其他符号(由编译器识别)。
二、存储器
- 数据和指令存放的地方。其实就是所说的内存。
- CPU的正常工作,就必须向它提供数据和指令。
- 指令和数据没有任何区别,都是二进制。CPU在工作时候,有的信息看作指令,有的信息看作数据。
- 每个存储单元从0开始顺序编号的。存储器的容量是以字节为最小单位来计算的。
- CPU对存储器的读写:地址信息 + 控制命令 + 数据信息。
三、三大总线
- 地址总线----CPU是通过地址总线来指定存储单元的。
- 数据总线----CPU与内存或其他器件之间的数据传送是通过数据总线进行的。
- 控制总线----CPU对外部器件的控制是通过控制总线来进行的。
三、内存地址空间
- 由地址总线决定。
- 主板---CPU和核心器件等,用地址总线、数据总线、控制总线相连。
- 接口卡--CPU不能对外设进行控制,需要通过接口卡间接控制。
- 各类存储器芯片---随机存储器(RAM)、BIOS(主板和各类接口卡)的ROM、接口卡上的RAM。
CPU在操控他们时,把他们当作内存来对待,把他们总的看作一个由若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。
第二章:寄存器
一、组成
- CPU中含有运算器、寄存器(CPU的工作原理)、控制器等构成,这些器件靠内部总线相连。
- 运算器进行信息处理。
- 寄存器进行信息存储。
- 控制器控制各种器件进行工作。
- 内部总线连接各类器件,在它们之间进行数据传送。
二、通用寄存器
- AX,BX,CX,DX这四个寄存器通常用来存放一般性的数据,被称为通用寄存器。
- 在8086CPU中,AX的低8位(0-7)构成了AL寄存器,高8位(8-15)构成了AH寄存器。
- 注意范围:16位的2^16-1,8位的2^8-1.
- 进行数据传送或运算时要注意位数对应,否则会报错。
三、8086CPU给出物理地址的方法:
- 当8086CPU要读写内存时:相关的部件提供两个16位的地址:段地址和偏移地址。
- 物理地址=段地址 * 16 + 偏移地址。
四、段
- 段地址为16的倍数。
- 一个段的长度最长为64K;因为偏移地址为16位,寻址能力为64K。
五、段寄存器
- 段地址在8086CPU的段寄存器中存放。
- 8086CPU有四个段寄存器:CS、DS、SS、ES。
- 当8086CPU要访问内存时由这四个段寄存器提供内存单元的段地址。
- CS(代码段寄存器)、IP(指令指针寄存器);CS为存放指令的段地址。
- 修改CS,IP-----mov不能用于设置CS、IP的值,而jmp指令可以。
- jmp 段地址:偏移地址-------用指令中给出的段地址修改CS,偏移地址修改IP。
- jmp 某一合法的寄存器-------用寄存器中的值修改IP。
六、代码段
- 要小于64K。
- 存放后用CS,IP指向第一条指令的首地址。
七、Debug使用
- 用Debug的R命令查看、改变CPU寄存器的内容。
- 用Debug的D命令查看内存中的内容。
- 用Debug的E命令改写内存中的内容。
- 用Debug的U命令将内存中的机器指令翻译成汇编指令。
- 用Debug的T命令执行一条机器指令。
- 用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
玩无线安全,工控安全,无线电安全等等此相关的技术人员欢迎加群。63309269