三、8086/8088的寻址方式 计算机是 通过执行指令序列来解决问题的 因为每种计算机都有一组指令集提供给用户用.. 这组指令就叫做计算机的 *指令集 计算机中的指令集就是由 *操作码字段 和 *操作数字段 两部分组成 指令操作码字段在机器里面的表示比较简单, 只需要对每一种操作的指定确定的二进制代码就可以了 。。。。。{比唐僧还啰嗦} /*机器智能识别二进制代码,所以用汇编来制定二进制代码 汇编语言就是符号语言,,用它来表示操作码, 和机器指令相对应*/ ADD AX,[1234]//ADD 是操作码 ,,,后面两个是操作数 引出:寻址方式 表示指令中用于说明操作数所在地址的方法 有七种:/****这些东西都是在DS数据段后面表示的 物理地址都要加上DS数据段~~****/ 1.立即寻址方式 操作数包含在指令中,作为指令一部分,在代码段中 还是 *高的高位 *低的低位 2.寄存器寻址方式 16:AX... 8:AL AH...//通用寄存器 例如 mov ax,bx 把bx中值给ax 3.直接寻址方式 操作数在寄存器里面,指令直接包含有操作数的有效地址 偏移地址: MOV AX,[8054]//省略DS 应该是mov ax,ds:[8054] 例子: MOV AX,VALUE MOV AX,ES:[VALUE]//ES是附加段 MOV AX,ES:VALUE//同上 4.寄存器间接寻址 操作数在,SI.DI.BX.BP里面 MOV AX,[SI];//变样子而已....DS:[SI] 5.相对加寻址方式 mov ax,[si+1000H];//哈哈哈 各种加 6.基址加变址寻址方式 操作数在寄存器中,操作数的有效地址由: EA=[BX]+[SI]/[BP][DI]; MOV AX,[BX][DI]//会加上DS数据段 如:[DS]=2100H [BX]=0158H [DI]=10A5H 则 [EA]=0158+10A5=11FD 物理地址=21000(DS)+11FD=221FDH 7.相对基址加变址寻址方式 MOV AX,[BX+DI+1100H]//最后再加上8位或者16位偏移 BP->SS 要不然以DS 给定的如果是8位 那么补成16位 如果超过FFFFH,用64K模式 例如: MOV AX,[BX+DI-2] 假设,(DS)=50000H,(BX)=1223H,(DI)=54H (51275)=54H (51276)=76H //其中-2的补码形式0000 0000 0000 0010 反码 1111 1111 1111 1110 FFFE 物理地址单元: 物理地址=50000+1223+0054+FFFE =51275H 执行完后 AX=7654H 、 相对基址变址寻址方式多样,下面四种表示的等价。 MOV AX,[BX+DI+1234H] MOV AX,1234H[BX][DI] MOV AX,1234H[BX+DI] MOV AX,1234H[DI][BX]//都是在数据段后面的数据
练习题: