资源描述:
《指令系统和寻址方式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章指令系统和寻址方式指令和指令系统寻址方式80x86的指令系统简介3.1指令和指令系统指令由操作码和操作数组成。操作码说明计算机要执行的操作,而操作数是在指令执行过程中所需要的操作数。操作数可以是操作数本身,也可以是操作数地址或是与操作数有关的其他信息。一般格式操作码操作数...操作数代码指令的格式当一条汇编指令译成代码指令时,由汇编指令中的操作码和操作数共同决定代码指令的格式。对8086,代码指令所占字节1~6不等。第1个字节固定为操作码(OPCODE),其余字节为操作数。操作数字节的确定与指令的寻址方式有关。汇编指令的书写形式格式[name]operationopera
2、nd[;comment]名字项(name):可以是标号或变量,表示本语句的符号地址。标号在代码段中定义,后跟冒号。变量在数据段或附加数据段中定义,后面不跟冒号。名字项组成:字母打头的字符串组成。包含字符(A~Z,0~9,_,?,$,@等),如MainLoop,Calc_long_sum。单独的$或?有特殊含义,不能做符号名。保留字不能用在名字项。操作项(operation):可以是指令、伪指令、宏指令的助记符。操作数项(operand):可以是一个或多个表达式组成,多个操作数之间用逗号分隔。操作数可能是一个或多个,也可能没有。算术操作符:+,-,*,/,MOD逻辑操作符:AND
3、,OR,XOR,NOT关系操作符:EQ,NE,LT,GT,GE其他操作符操作数的主要类型立即操作数可采用数制:二、八、十、十六进制,后缀分别为B,Q或O,D,H若十六进制以字母开头,必须加前导“零”。寄存器操作数寄存器的内容参加运算或存放结果。存储器操作数指内存某地址的字节、字、双字等是指令的处理对象,这时必须把处理对象取出或送入相应地址。有效地址和段超越存储单元的物理地址由两部分组成:段寄存器保存的段基值,偏移地址。在8086/8088的各种寻址方式中,寻找存储单元所需的偏移地址,称为有效地址,用EA表示。不同的寻址方式,组成有效地址EA的各部分内容也不一样,寻址方式主要是E
4、A如何计算与寻找的问题。存储器存取时的默认段寄存器一般情况下,使用寻址方式中规定的默认段寄存器来确定段的基地址。指令中的操作数若不在原默认的区段内,必须在指令中指定段寄存器,这称为段超越。如MOVAL,ES:[2000H]教材P25表4-13.2寻址方式8086的寻址方式80x86新增的寻址方式与转移地址有关的寻址方式注:重点介绍第1种,其他可放在后面讲。1.8086的寻址方式与数据有关的寻址方式:以MOV指令为例立即寻址MOVAX,3069H寄存器寻址MOVAL,BH直接寻址MOVAX,[2000H]寄存器间接寻址MOVAX,[BX]寄存器相对寻址MOVAX,COUNT[SI
5、]基址变址寻址MOVAX,[BP][DI]相对基址变址寻址MOVAX,MASK[BX][SI]附:MOV指令格式:MOV目的操作数,源操作数(1)立即寻址方式——操作数在指令中直接给出指令格式:MOV目的操作数,立即数MOVAL,5MOVAH,0FFHMOVAX,3064HMOVAL,‘A’说明:立即数存储在代码段中立即数只能用于源操作数字段MOV40H,AL“源”和“目的”的字长一致MOVAH,3064H(2)寄存器寻址方式—操作数在指定的寄存器中MOVAX,BXMOVAL,BH说明:字节寄存器只有:AHALBHBLCHCLDHDL16位:AX,BX,CX,DX,SI,D
6、I,SP,BP32位(386以上):EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP“源”和“目的”的字长一致,MOVAH,BXCS不能用MOV指令改变,MOVCS,AX举例说明下列指令采用的寻址方式和执行结果:MOVAX,1234HMOVBX,AXMOVAH,AL(AX)=?(BX)=?(1)(AX)=1234H立即寻址。(2)(BX)=1234H,(AX)保持不变。寄存器寻址。(3)(AL)=34H,(AH)=34H最后结果:(AX)=3434H(BX)=1234H(3)直接寻址方式*—有效地址EA由指令直接给出例:MOVAX,[2000H]EA=2000
7、H,假设(DS)=3000H,那么PA=32000H。*隐含的段为数据段DS,有效地址EA存储在代码段中。*可使用段跨越前缀MOVAX,ES:[2000H]*操作数地址可由变量(符号地址)表示,但要注意变量的属性VALUEDB10MOVAH,VALUEMOVAX,VALUEMOVAX,WORDPTRVALUE503032000AHAL3050(AX)=3050H(4)寄存器间接寻址*—操作数的有效地址EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中,而操作数在存储器中。MOVA