1.书中的描述性符号:reg寄存器,sreg段寄存器

在8086CPU中只能有这4个寄存器可以用在[。。。]中进行内存单元的寻址

bx,si,di,bp
这四个寄存器可以单个出现,或者以4种组合出现,bx,和si、bx和di、bp和si、bp和di(可以加上idata常量)
特别地:在[]中使用寄存器bp,指令中没有显性地给出段地址,段地址默认在ss

2.指令在执行之前,所要处理的数据可以在3个地方:CPU内部,内存,端口

3.在没有寄存器名存在的情况下,用work ptr或byte ptr显性地指明所要访问的内存单元的长度是很有必要的

如:
用work ptr指明了指令访问的内存单元是一个字单元
mov word ptr ds:[0],1
inc word ptr [bx]

用byte ptr指明了指令访问的内存单元是一个字节单元
mov byte ptr ds:[0],1
inc byte ptr [bx]

特别地:有一些指令默认了访问的是字单元还是字节单元,如push,只能进行字操作
在c语言中可以用dec.cp[i]定位,在汇编中可以用 bx.10h[si]定位

4.div是除法指令,

(1)除数:有8位和16位,在一个reg或者内存单元中
(2)被除数:默认在ax或ax和dx中,若除数为8位,则被除数则为16位,默认在ax中存放,若除数为16位,则被除数则为32位,在dx和ax中存放,dx存放高16位,ax存放低16位
(3)结果:若除数为8位,则al存放除法操作的商,ah存放除法操作的余数
      若除数为16位,则ax存放除法操作的商,dx存放除法操作的余数
如:div byte ptr ds:[0]
含义:(al)=(ax)/((ds)*16+0) 的商
    	  (ah)=(ax)/((ds)*16+0)的余数

5.db== define byte dw== define word dd==double word

如:
data segment
db 1
dw 1
dd 1
data ends
第一个数据为01H,在data:0处,占1个字节
第二个数据为0001H,在data:1处,占1个字
第三个数据为00000001H,在data:3处,占2个字
题目:用div计算data段中第一个数据除以第二个数据后的结果,商存在第三个数据的存储单元中
data segment
dd 100001
dw 100
dw 0
data ends
code sement
start:
mov ax,data
mov ds,ax
mov ax,ds:[0]
mov dx,ds:[2]
div word ptr ds:[4]
mov ds:[6],ax
mov ax,4c00h
int 21h
code ends
end startki

6.dup

dup是和db,dw,dd配合使用的,用来进行数据重复

如
db 3 dup (0) == db 0,0,0
db 3 dup ('abc','ABC') == 'abcABCabcABCabcABC'

dup的使用格式
db 重复的次数 dup (重复的字节型数据)
dw 重复的次数 dup (重复的字型数据)
dd 重复的次数 dup (重复的双字型数据)