汇编语言知识整理(持续更新)

438 阅读3分钟

######本文适合刚开始学习的同学,大佬轻喷

引入(可跳过)

汇编语言特点:汇编语言特点:

​ 1.直接对计算机CPU硬件进行操作

​ 2.执行速度快

​ 3.以靠硬件、可移植性差


微型计算机系统相关概念:

微处理器(μp):运算器+控制器+寄存器组

基本结构:1.I/O设备将各种外部信息转化为标准信息

​ 2.总线为各种信息在计算机各部件流动提供通路


总线接口部件(BIU):与外部总线相连,为EU和内存、外设接口之间提供信息通路

功能:从内存的指定那部分取出指令,送至指定队列排队;从内存的指定那部分取出执行指令时所需的操作数,送至EU部分

20位的地址加法器:将左移4位的段寄存器的内容与偏移地址相加,形成20位的物理地址,以便对1M空间的存储器寻址

6字节的指令队列:指令队列中包含若干个(8086-6个;8088-4个)8位寄存器,用于顺序存放从寄存器中取出的指令,供执行单元执行

4个段寄存器:

CS——16位的代码寄存器;DS——16位的数据寄存器;

ES:16位的扩展段寄存器;SS:16位的堆栈段寄存器;

16位的指令指针寄存器IP:

执行部件(EU):

内部寄存器:

8位寄存器:

AX:累加器

BX:基地址寄存器

CX:计数器

DX:数据寄存器

16位寄存器:

SP:堆栈指针寄存器

BP:基地址寄存器

SI:源变址寄存器

DI:目的变址寄存器

IP:指令指针寄存器

FLAG:状态标志寄存器

CS

DS:

SS:

ES:

FLAG标志寄存器:

进位标志CF:当结果的最高位产生一个进位或借位,则CF=1,否则*CF=0;

溢出标志OF:在算术运算中,带符号数的运算结果超出8位或16位带符号数能表达的范围,则OF=1,否则OF=0;

符号标志SF:结果的最高位(D15或D7)为1,则SF=1;否则SF=0;

零标志ZF:若运算结果为0;则为1,否则0;

奇偶标志PF:结果里的1为偶数则为1,否则为0

辅助进位标志AF:在字节操作时,由低半字节向高半字节,字操作时低字节向高字节进位或借位,则为1,否则0;


基础知识(正文开始)

储存单元:一个储存单元可以储存1个Byte,也就是8个bit

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

数据总线:8根数据总线一次可以传送1个B的数据

寄存器

通用寄存器:

  • AX:AH;AL

  • BX:BH;BL

  • CX:CH;CL

  • DX:DH;HL

几条汇编指令:

mov ax,18
mov ah,78
add ax,8
mov ax,bx
add ax,bx
==结果是044CH==
==因为ax是16位寄存器,所以最高位将不会被保存==
==同理,在AL/AH里面一旦溢出也不会被保存==

8086CPU给出物理地址的方法:

段地址*16+偏移地址=物理地址

因为偏移地址是16位,所以一个段的长度最大就是64KB

寻址方式

==立即寻址(把 值 直接放进 寄存器 )
MOV AL,12H
==寄存器寻址(把 寄存器里面的值 放进 寄存器 )
MOV AL,BH
==直接寻址(把 地址里的值 放进 寄存器)
MOV AL,[12H]
==寄存器间接寻址(把 寄存器里的地址里的值 放到另一个 寄存器)
MOV AL,[BX]
==寄存器相对寻址(寄存器+位移量)
MOV AL,[BX+12H]
==基址变址寻址(基址+偏移量)
MOV AL,[BX+SI]
==相对基址变址寻址(基址+偏移量+位移量)
MOV AL,[BX+SI+12H]