x86汇编语言学习(一)基础知识
学习参考资料:《汇编语言》(第三版)清华大学出版社 王爽著
总线
地址总线的宽度决定CPU的寻址能力。一个CPU有N根地址总线,最多可以寻找2N内存单元(B)。
例如:地址总线宽度分别为16根、20根、24根、32根的CPU,寻址能力分别为:64KB,1MB,16MB,4GB.
数据总线的宽度决定CPU与其他器件进行数据传送时的一次数据传送量。一个CPU有N根数据总线,一次可传送一个N位二进制数据。
例如:数据总线宽度分别为8根、16根、32根的CPU,一次可以传送的数据分别为:1B,2B,4B.
控制总线的宽度决定CPU对系统中其他器件的控制能力。有多少根控制总线,意味着CPU提供了多少种对外部器件的控制。
寄存器
8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。都是16位的。
通用寄存器
AX、BX、CX、DX
常用来存放一般性的数据。每个都能存储一个16位的数据,也可以分成两个独立的8位寄存器使用,如AX可以分成AH和AL。高8位构成AH,低8位构成AL。
| 寄存器 | 寄存器中的数据 | 表示的值 |
|---|---|---|
| AX | 0100111000100000 | 20000(0x4E20) |
| AH | 01001110 | 78(0x4E) |
| AL | 00100000 | 32(0x20) |
在8086CPU中,只有BX、SI、DI、BP这四个寄存器可以用在“[…]”中来进行内存单元的寻址。这四个寄存器可以单独出现,或只能以四种组合出现:BX和SI,BX和DI,BP和SI,BP和DI。而只要在“[…]”中使用BP且没有显性给出段地址,段地址默认在SS中。
段寄存器
CS、DS、SS、ES
8086CPU访问物理内存时,地址加法器采用物理地址=段地址*16+偏移地址的方法用段地址和偏移地址合成物理地址。
本质上的寻址模式是物理地址=基础地址+偏移地址。
CS是代码段寄存器,IP是指令指针寄存器。8086CPU从内存CS*16+IP单元开始读取指令并执行,即CPU将CS:IP指向的内容当作指令执行。读取一条指令后,IP中的值会自动增加所读取指令的长度,从而指向下一条指令。
修改CS和IP寄存器可以使用jmp指令,形如“jmp CS:IP”。
DS通常存放要访问的数据的段地址。比如读取0x10000单元的内容。
// Read 0x10000

本文介绍了x86汇编语言的基础知识,包括总线的类型和作用,8086CPU的14个寄存器及其功能,如通用寄存器、段寄存器和标志寄存器。此外,还讲解了汇编指令的基本概念,如mov、add、sub指令,以及伪指令如segment ends、end和assume。最后,提到了寻址方式和寻址模式在汇编语言中的应用。
基础知识&spm=1001.2101.3001.5002&articleId=99564404&d=1&t=3&u=15a61e83b894416fb95cd408f4be7c2a)
3093

被折叠的 条评论
为什么被折叠?



