汇编语言程序设计学习笔记
参考书目:汇编语言第四版 王爽
2.1 通用寄存器
8086cpu寄存器共有14个,分别是AX BX CX DX SI DI SP BP CS SS DS ES PSW
每个寄存器都是16位的,可以存储16个bit
其中AX BX CX DX为通用寄存器,存储一些一般的数据,为了兼容基于上一代的cpu的汇编
程序,这四个寄存器都分别可以被分为两个8位寄存器去操作,AX变成AL AH 其中AL占据原
AX的0到7 剩下的位AH,BX也可分为BL,BH,其他通用寄存器也相同
2,2 字在寄存器中的存储
8086 cpu 可以一次性处理两种尺寸的数据
1 字节:byte 就是一个字节,可以存在八位寄存器中
2 字:word 一个字由两个字节构成,这两个字节分为高位字节和低位字节
一个字可以存储在一个16位寄存器中,其中AL存储了低位字节,AH存储了高位字节
应为cpu可以存储和处理的数据最低单位为byte,用16表示更为直观,所以我们一般采用16
进制去表示
2.3 几条汇编指令
常见的汇编指令有mov add
mov用于将数据存入寄存器比如:
mov ax,18
就是将18存入寄存器ax
mov ax,bx
就是将bx寄存器的数据送入寄存器AX
add用于在原有的寄存器数据上叠加
add ax,18
用于将18加到ax寄存器的原数据中
add ax,bx
用于将bx寄存器的内容加到ax寄存器的数据中
我们需要主义的是寄存器的位数有限,要是叠加后的结果超过其范围,超出范围的位会溢
出,没有超出的部分会被留下,但溢出的这部分并不是真正的被丢弃,以后会涉及相关的内
容 ,在我们对寄存器进行操作时,如果直接去操作al寄存器,此时cpu将其看作一个独立的
寄存器,认为其和ax,ah寄存器没有直接关系,所以即使在al中发生了进位,也不会将进位
部分存入ah,如果我们直接对ax进行操作,即使超过低位寄存器的范围,超出的部分也会
进入高位寄存器中,因为在cpu在执行指令时只认为有一个16为寄存器ax
注意: 在进行数据传送或者运算时,需要注意两个操作对象的位数应该一致,否则就是错
误的指令