在学习本章时,我们要考虑两个基本问题:
为了解决这两个问题,我们先对我们学过的寄存器做一个定义。我们定义描述性符号:reg(register)和sreg(segment register)。
reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、cl、sp、bp、si、di
sreg的集合包括:cs、ds、ss、es
8.1 bx、si、di和bp
在8086CPU中,只有这四个寄存器(bx、si、di、bp)可以用在“[...]”中来进行内存单元寻址
mov ax,[bx]
mov ax,[bx+si]
mov ax,[bx+di]
mov ax,[bp]
mov ax,[bp+si]
mov ax,[bp+di]
而下面这些指令是错误的:
mov ax,[cx]
mov ax,[ax]
mov ax,[dx]
mov ax,[ds]
在"[...]“中,这四个寄存器可以单独出现,或是以四种组合出现:bx+si、bx+di、bp+si、bp+di
下面这些指令是错误的:
mov ax,[bx+bp]
mov ax,[si+di]
只要在[...]中使用寄存器bp而指令中没有显示地给出段地址,段地址就默认在ss中
mov ax,[bp] ;含义:(ax) = ((ss)*16+(bp))
8.2 机器指令处理的数据在什么地方
绝大部分奇迹指令都是进行数据处理的指令,处理大致可以分为3类:读取、写入、运算。在机器指令这一层面来讲,并不关心数据的值为多少,只关心指令执行前一刻,想要处理的数据所在位置
所要处理的数据可以在三个地方:CPU内部、内存、和端口

8.4 寻址方式汇总

8.5 指令要处理的数据有多长