王爽-《汇编语言2》学习笔记2

8086CPU的14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

##############################################以下为寄存器的英文全称,内容转自:http://blog.csdn.net/knxw0001/article/details/7249248

通用寄存器:

ax——accumulate register——累加器

bx——based register——基地址寄存器

cx——count register——计数器

dx——data registered——数据寄存器


段寄存器:

cs——code segment——代码段

ds——data segment——数据段
ss——stack segment——栈段寄存器

es——extra segment——附加段寄存器


特殊功能寄存器:

ip——instructor  point——指令指针寄存器

sp——stack point——堆栈指针寄存器

bp——base point——基础指针

si——source index——源变址寄存器

di——destination index——目的变址寄存器

psw——program state word——程序状态字


Psw的常用标志:

OF(11位-overflow flag-溢出标志位)——OV(overflow-溢出)——NV(not overflow-没溢出)

DF(10位-direction flag-方向标志位)——DN(down-下方)——UP(up-上方)

IF(9位-interrupt flag-中断标志位)——EI(enable interrupt-允许中断)——DI(disabled interrupt-不允许中断)

TF(8位-trap flag-陷阱标志位)——

SF(7位-sign flag-负号标志位)——NG(negative-负)——PL(plus-正)

ZF(6位-zero flag-零值标志位)——ZR(zero-为零)——NZ(not zero-不为0)

AF(4位-auxiliary carray flag-辅助进位标志位)——AC(auxiliary carry-有辅助进位)NA(not auxiliary carry-没有辅助进位)

PF(2位-parity flag-奇偶标志位)——PE(parity even-偶)——PO(parity odd-奇)

CF(0位-carry flag-进位标志位)——CY(carried-有进位)——NC(not carried-没进位)

######################################################################################################

AX BX CX DX这四个寄存器每个大小为16位,但是可以把每个寄存器分为 两个一字节的 小寄存器

如:

  AX = > AH AL

  BX=>BH BL

  CX=>CH CL

   DX=>DH DL

H是High的缩写,也就是高8位寄存器的意思

L是Low的缩写,指低8位寄存器


汇编指令:

 mov  add 

mov ax,123  相当于 ax=123

add ax,123 相当于 ax=ax+123


8086给出地址的方法:

8086CPU有20根总线,可以传送20位的地址

但是它又是16位结构,在它的内部只能一次性处理、传输、存储的地址为16位。

那么它是怎么给出20位的地址的呢?

  8086通过内部的一个 地址加法器 采用  物理地址=段地址*16+偏移地址 的方法用段地址和偏移地址合成20位的地址

比如 CPU要访问 123C8H ,这个地址换成二进制为 10010001111001000 总共17位,超出了一个寄存器所能容纳的16位长度

那么 8086是这样做的:

      先把 123C8H分成  1230H 和 00C8H ,然后 再把 1230H 乘以 16 就变成了 12300H,然后再把 13200H和 00C8H相加  最后 得出地址:123C8H

总的来说  段地址*16+偏移地址=物理地址 的方法 我们还可以看得简单一点:

     把 段地址*16 的结果看成是一个 基础地址

    于是 公式就成了  

      物理地址=基础地址(段地址*16)+便宜地址


你可能感兴趣的:(汇编)