文档详情

8086的指令系统1.ppt

发布:2017-06-17约6.71千字共35页下载文档
文本预览下载声明
第三章 8086的指令系统I 8086指令格式和寻址方式 8086指令系统 3-1 8086的指令格式和寻址方式 指令通常包含操作码和操作数两部分, 操作码指出操作的性质,操作数给出操作的对象。 寻址方式就是指令中说明操作数所在地址的方式。 1. 指令有单操作数、双操作数和无操作数之分。 如果是双操作数指令,要用逗号将两个操作数分开。 例: MOV AX,CX ;数据传送指令 ;CX为源操作数,AX为目的操作数。 XLAT ;表转换指令 一、立即寻址方式(Immediate Addressing) 立即数寻址: 操作数(一个8位或16位)常数直接包含 在指令中。该指令常用来给寄存器赋初值。 例 MOV AL,07H 表示将一个8位立即数07H送到AL寄存器中 立即数只能是源操作数,不能作目的操作数。 二.寄存器寻址方式(Register Addressing) 操作数包含在指令规定的寄存器中。 寄存器16位:AX, BX, CX, DX, SI, DI, SP, BP 8位:AH, AL, BH, BL, CH ,CL, DH, DL. 例 MOV DX, AX 设执行前AX=3A68H, DX=18C7H, 则执行后DX=3A68H, AX=3A68H(内容保持不变) 例 MOV CL, AH ;表示将AH中的8位数送到CL中。 注意: 源操作数的长度必须与目的操作数一致。 三、 存储器寻址方式 1.直接寻址方式 存储单元的有效地址(EA)直接由指令给出,并存放在CS段中指令的操作码之后。 把操作数的偏移地址称为有效地址EA。 例 MOV AX, [2000H] 设DS=3000H,则操作数的物理地址: 10H×DS+EA=10H×3000H+2000H=32000H 上述指令的操作数默认在DS段中。 例 MOV AL, [2000H] 段超越前缀 例 MOV AX, ES: [500H]; 该指令的源操作数的物理地址=10H×ES+500H 注意:在8086系统中,数据通常在数据段中,但 若需要,数据也可存放在代码段,堆栈段以及附 加段中,这种情况就是段超越。应用时,需在指 令中加以说明。 MOV ES:[1234H] , BL ;:是修改属性运算符 在没有声明的情况下,逻辑段地址是指寄存器DS,如使用其它段寄存器,则需在指令中给出。 段寄存器与表示逻辑偏移地址的寄存器的隐式关系: CS:IP SS:SP DS:DX DS:SI DS:DI DS:直接偏移地址 存储器寻址时的段约定 符号地址--事先定义的符号,表示逻辑偏移地址,实际编程中经常使用。 例 MOV AX , AREA1 从形式上看 AREA1 既可表示为符号地址,亦可表示 为一个16位的立即数,应事先用伪指令来加以说明。 例 AREA1 EQU 0867H ;AREA1代表立即数 : MOV AX , AREA1 ;执行后 AX=0867H MOV AX , [AREA1] 段超越: MOV AX, ES:AREA1 2. 寄存器间接寻址方式 指令中给出的寄存器中的值不是操作数本身,而是操作数的有效地址,并在寄存器外面加方括号以示区别。 有效地址EA= [寄存器] 寄存器有: BX, SI, DI (默认在DS段中) BP (默认在SS段中) 例 MOV BX, [SI] 设DS=1000H, SI=2000H, (12000H)=318BH 4. 基址变址寻址方式 操作数的有效地址是一个基址寄存器(BX或BP)和一个变址寄存器(SI或DI)的内容之和。 EA=[基址寄存器] + [ 变址寄存器 ] 若为BX时,段寄存器用DS 则物理地址=16 × DS+BX+SI 或=16 × DS+BX+DI 若为BP时,段寄存器用SS 则物理地址=16 × SS+BP+
显示全部
相似文档