16位寻址是有效地址的三种成分的组成 成分 16位寻址 位移量 0,8,16位 基址寄存器「 BX, BP 变址寄存器 SI, DI 8086/8088段寄存器和相应存放偏移地址的寄存器之间的默认组合 段 偏移 CS IP sP或BP DS B、DⅠ、SI或一个16位数 ES DI(用于串指令)
段 偏移 CS IP SS SP或BP DS BX、DI、SI或一个16位数 ES DI(用于串指令) 8086/8088段寄存器和相应存放偏移地址的寄存器之间的默认组合 成分 16位寻址 位移量 0,8,16位 基址寄存器 BX,BP 变址寄存器 SI,DI 16位寻址是有效地址的三种成分的组成
直接寻址方式 操作数的有效地制只包含位移量一种成分,其值就存 放在代码段中指令的操作码之后。位移量的值就是操 作数的有效地址。 例: MOV AX,[2000H] 假设(DS)=3000H OP 代 AX 码物理地址=3000H*16+2000H 30 段 32000H 30000H 假设(32000H)=3050H 32000H 50 数 据则指令执行后,AX=3050H 30 段
◼ 直接寻址方式 ◼ 操作数的有效地制只包含位移量一种成分,其值就存 放在代码段中指令的操作码之后。位移量的值就是操 作数的有效地址。 例: MOV AX , [2000H] 假设(DS)= 3000H 物理地址 = 3000H * 16 +2000H = 32000H 30000H 32000H 64 30 ………… ………… OP ………… 代 码 段 50 30 ………… 数 据 段 AX 假设(32000H)= 3050H 则指令执行后,AX = 3050H
可以用符号来代替数值地址 MOV AX VALUE MOV AX IVALUET 如果在附加段,则应指定段前缀 MOV AX ES: VALUE MOV AX, ES: [ VALUE 直接寻址方式只适用于处理单个变量。例如某个存放在 存储器中的变量,可以用直接寻址方式先把变量取出送 到一个寄存器中,然后再做进一步的处理
◼ 可以用符号来代替数值地址 MOV AX , VALUE MOV AX , [VALUE] 如果在附加段,则应指定段前缀 MOV AX , ES:VALUE MOV AX , ES:[VALUE] 直接寻址方式只适用于处理单个变量。例如某个存放在 存储器中的变量,可以用直接寻址方式先把变量取出送 到一个寄存器中,然后再做进一步的处理
寄存器间接寻址方式可以用于表格处理,执行完一条指令后, 只需修改寄存器内容就可以取出表格的下一项 寄存器间接寻址方式 操作数的有效地址只包含基址寄存器或变址寄存器的 内容。因此有效地址就在某个寄存器中,而操作数在 存储器中 16位寻址,可用的寄存器是BX,BP,SI,DI 使用BX、SⅠ、DI,其默认段是数据段DS 使用BP,其默认段是堆栈段SS AX 例: MOV AX,[B] 如果(DS)=2000H(BX)=1000H 20000H 物理地址=2000H*16+1000H 21000H AO 数 21000H 50 段如果(21000H)=50A0H 指令执行后AX=50A0H
◼ 寄存器间接寻址方式 ◼ 操作数的有效地址只包含基址寄存器或变址寄存器的 内容。因此有效地址就在某个寄存器中,而操作数在 存储器中。 ◼ 16位寻址,可用的寄存器是BX,BP,SI,DI。 使用BX、SI、DI,其默认段是数据段DS 使用BP,其默认段是堆栈段SS 例:MOV AX , [BX] 如果(DS)= 2000H (BX)= 1000H 物理地址 = 2000H * 16 + 1000H = 21000H 如果(21000H)= 50A0H 指令执行后 AX = 50A0H 20000H 21000H ………… ………… A0 50 ………… 数 据 段 AX 寄存器间接寻址方式可以用于表格处理,执行完一条指令后, 只需修改寄存器内容就可以取出表格的下一项
寄存器相对寻址方式同样可以用于表格的处理,表格的首地 址可设置为偏移量的地址,利用修改基址或变址寄存器中的 内容来取得表格中的值 寄存器相对寻址方式 操作数的有效地址为基址寄存器或变址寄存器的内容 和指令中指定的位移量之和。 例:MOVA, COUNT[SI(也可以表示为 OP 代 MOV AX,[ COUNT+SI) 00 码如果(DS)=3000H(SI)=2000H 30 段 COUNT= 3000H 30000H COUNT← 33000H 数物理地址=30004*16+2000+ 35000H 34 据段 3000H=35000H 如果(35000H)=1234H AX 指令执行后AX=1234H
◼ 寄存器相对寻址方式 ◼ 操作数的有效地址为基址寄存器或变址寄存器的内容 和指令中指定的位移量之和。 例:MOV AX , COUNT[SI](也可以表示为 MOV AX , [COUNT+SI]) 如果(DS)= 3000H (SI)= 2000H COUNT = 3000H 物理地址 = 3000H * 16 + 2000H + 3000H = 35000H 如果(35000H)= 1234H 指令执行后 AX = 1234H 30000H 35000H 00 30 ………… ………… OP ………… 代 码 段 34 12 ………… 数 据 段 AX ………… 33000H COUNT SI 寄存器相对寻址方式同样可以用于表格的处理,表格的首地 址可设置为偏移量的地址,利用修改基址或变址寄存器中的 内容来取得表格中的值