######本文适合刚开始学习的同学,大佬轻喷
引入(可跳过)
汇编语言特点:汇编语言特点:
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]