描述性符号 reg 和 sreg

使用描述性的符号 reg 来表示寄存器,用 sreg 表示一个段寄存器

reg 的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di
sreg的集合包括:ds、ss、cs、es

bx、si、di 和 bp

  1. 8086 CPU 中,只有 4 个寄存器可以用在 “[…]”中来进行内存单元寻址。(bx、si、bp、di)

    1. mov ax,[bx]
    2. mov ax,[bx+si]
    3. mov ax,[bx+di]
    4. mov ax,[bp]
    5. mov ax,[bp+si]
    6. mov ax,[bp+di]
  2. 在 […] 中,这 4 个寄存器可以单个出现,或者只能以 4 种组合出现:bx和si、bx和di、bp和si、bp和di,如下示例: ```shell mov ax,[bx] mov ax,[si] mov ax,[bx+di]

;错误指令 mov ax,[bx+bp] mov ax,[si+di]


3. 只要在 [...] 中使用寄存器 `bp`,而指令中没有显性地给出段地址,段地址就默认在 `ss` 中,如下示例:
```shell
mov ax,[bp]    ;含义(ax)=((ss)*16+(bp))
mov ax,[bp+si]    ;含义(ax)=((ss)*16+(bp)+(si))
...

div指令

  1. 除数:有8位和16位两种,在一个reg或内存单元中。
  2. 被除数:默认放在AX或DX和AX中,如果除数为8位,被除数则为16位,默认在AX中存放:如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。
  3. 结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数:如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。