您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第3章8086指令系统1
第3章8086指令系统8086的寻址方式8086的指令系统第3章指令的组成指令由操作码和操作数两部分组成操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分操作数是指令执行的参与者,即各种操作的对象有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数操作码操作数第3章指令的助记符格式操作码操作数1,操作数2;注释操作数2,称为源操作数ops,它表示参与指令操作的一个对象操作数1,称为目的操作数opd,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果分号后的内容是对指令的解释示例第3章指令的操作码和操作数每种指令的操作码:用一个唯一的助记符表示(指令功能的英文缩写)对应着机器指令的一个二进制编码指令中操作数的类型:立即数寄存器操作数存储器操作数第3章操作数类型立即数:操作数由指令直接给出。可以是数据,也可以是有确定值的表达式。寄存器操作数:操作数在寄存器中。指令中需指明寄存器的名称。存储器操作数:操作数在内存中,操作数的地址就是它在内存中的物理地址。指令中只要给出操作数的偏移地址。第3章8086的寻址方式指令系统设计了多种操作数的来源寻找操作数的过程就是操作数的寻址操作数采取哪一种寻址方式,会影响机器运行的速度和效率如何寻址一个操作数对程序设计很重要第3章传送指令MOV的格式MOVOPD,OPS;OPD←OPSMOV指令的功能是将源操作传送至目的操作数,例如:MOVAL,05H;AL←05HMOVBX,AX;BX←AXMOVAX,[SI];AX←DS:[SI]MOVAX,[BP+06H];AX←SS:[BP+06H]MOVAX,[BX+SI];AX←DS:[BX+SI]第3章操作数的寻址方式立即寻址方式寄存器寻址方式直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式相对基址变址寻址方式操作数在内存中的寻址方式第3章立即寻址方式指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)这种操作数被称为立即数imm它可以是8位数值i8(00H~FFH)也可以是16位数值i16(0000H~FFFFH)立即数寻址方式常用来给寄存器赋值第3章立即寻址指令MOVAL,05H;AL←05HMOVAX,0102H;AX←0102H立即寻址第3章操作数的寻址方式立即寻址方式寄存器寻址方式直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式相对基址变址寻址方式第3章寄存器寻址方式操作数存放在CPU的内部寄存器reg中,可以是:8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4个段寄存器seg:CS、DS、SS、ES第3章寄存器寻址指令MOVAX,1234H;AX←1234HMOVBX,AX;BX←AX寄存器寻址第3章存储器寻址方式指令中给出操作数的主存地址信息(偏移地址,称之为有效地址EA),而段地址在默认的或用段超越前缀指定的段寄存器中8086设计了多种存储器寻址方式1、直接寻址方式2、寄存器间接寻址方式3、寄存器相对寻址方式4、基址变址寻址方式5、相对基址变址寻址方式第3章直接寻址方式有效地址在指令中直接给出默认的段地址在DS段寄存器,可使用段超越前缀改变MOVAX,[2000H];AX←DS:[2000H];指令代码:A10020MOVAX,ES:[2000H];AX←ES:[2000H];指令代码:26A10020第3章直接寻址方式例:MOVAX,[1000H]设(DS)=4000H,EA=1000H那么:操作数的物理地址PA=?解:PA=40000H+1000H=41000H指令执行后(AX)=5566H第3章操作数的寻址方式立即寻址方式寄存器寻址方式直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式相对基址变址寻址方式第3章寄存器间接寻址方式有效地址存放在基址寄存器BX或变址寄存器SI、DI中默认的段地址在DS段寄存器,可使用段超越前缀改变MOVAX,[SI];AX←DS:[SI]第3章寄存器间接寻址方式例:MOVAX,[DI]操作数的有效地址在DI寄存器中设(DS)=4000H,(DI)=2000H,求操作数的物理地址?解:PA=40000+2000=42000H(AX)=1122H第3章操作数的寻址方式立即寻址方式寄存器寻址方式直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式相对基址变址寻址方式第3章寄存器相对寻址方式有效地址是寄存器内容与8位或16位位移量之和,寄存器可以是BX、BP或SI、DI有效地址(偏移地址)=BX/BP/SI/DI+8/16位位移量段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变第3章寄存器相对寻址指令MOVAX,[DI+06H]操作数的PA=(DS)×16+DI+06HAX←DS:[DI+06H]MOVAX,[BP+06H]操作数的PA=(SS)×16+BP+06HAX←SS:[BP+06H]第3章寄存器相对寻址指令例:MOVAX,[DI+10H]设(DS)=4000H,(DI)=2000H那么操作数的物理地址PA=?解:PA=40000H+2000H+10H=42010H(AX)=3344H偏移地址EA第3章操作数的寻址方式立即寻址方式寄存器寻址方式直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式相对基址变址寻址方式第3章基址变址寻址方式有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:有效地址=BX/BP+SI/DI段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变第3章基址变址寻址指令MOVAX,[BX+SI];AX←DS:[BX+SI]MOVAX,[BP+DI];AX←SS:[BP+DI]MOVAX,DS:[BP+DI];AX←DS:[BP+DI]第3章操作数的寻址方式立即寻址方式寄存器寻址方式直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式相对基址变址寻址方式第3章相对基址变址寻址方式有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:有效地址=BX/BP+SI/DI+8/16位位移量段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变第3章相对基址变址寻址指令MOVAX,[BX+SI+06H];AX←DS:[BX+SI+06H]位移量可用符号表示同一寻址方式有多种表达形式第3章指令操作数的表达-寄存器r8——任意一个8位通用寄存器AHALBHBLCHCLDHDLr16——任意一个16位通用寄存器AXBXCXDXSIDIBPSPreg——代表r8或r16seg——段寄存器CS/DS/ES/SS第3章指令操作数的表达-存储器m8——一个8位存储器操作数单元(所有主存寻址方式)m16——一个16位存储器操作数单元(所有主存寻址方式)mem——代表m8或m16第3章指令操作数的表达-立即数i8——一个8位立即数i16——一个16位立即数imm——代表i8或i16OPD——目的操作数OPS——源操作数第3章例题设DS=2000H,BX=0100H,SI=0002H求AX中的内容,并写出寻址方式。30H00H44H11H…66H58H79H05H…10H0FH内存20100H20101H20102H20103H…….21200H21201H21202H21203H……30000H30001HMOVAX,1000HMOVAX,BXMOVAX,[1200H]MOVAX,[BX]MOVAX,1100H[BX]MOVAX,[BX][SI]MOVAX,1100H[BX][SI]第3章寻址方式的综合应用关于DEC公司的一条记录(1982年)如下:公司名称:DEC总裁姓名:KenOlsen排名:137收入:$40亿著名产品:PDP(小型机)到了1988年DEC公司的信息有了变化:排名变成了38位收入增加了$70亿著名产品变成了VAX系列计算机我们的任务是,编程修改内存中过时的数据要修改的内容是:(1)排名字段(2)收入字段(3)产品的第一个字符,第二个字符,第三个字符‘DEC’‘KenOlsen’13740‘PDP’内存+00H+03H+0CH+0EH+10H…….DS:60H第3章寻址方式的综合应用Movbx,60HMovwordptr[bx+0CH],38Addwordptr[bx+0EH],70Movsi,0Movbyteptr[bx+10H+si],‘V’IncsiMovbyteptr[bx+10H+si],‘A’IncsiMovbyteptr[bx+10H+si],‘X’‘DEC’‘KenOlsen’1373840+70‘PDP’-‘VAX’+00H+03H+0CH+0EH+10H…….DS:60H内存8086CPU提供的[bx+si+D]寻址方式,也就是相对基址变址寻址方式为结构化数据的处理提供了方便,一个结构化的数据包含了多个数据项,数组型(字符串),有字型,字节型。这个时候就可以:用bx定位整个结构体,用D定位结构体中的某一个数据项,用si定位数据项中的每个元素。第3章AnyQuestion?
本文标题:第3章8086指令系统1
链接地址:https://www.777doc.com/doc-3629736 .html