86系列微型计算机的指令系统_第1页
86系列微型计算机的指令系统_第2页
86系列微型计算机的指令系统_第3页
86系列微型计算机的指令系统_第4页
86系列微型计算机的指令系统_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

86系列汇编语言及指令的格式与寻址方式,语句格式寻址方式寻址方式总结,86系列汇编语言及指令的格式与寻址方式,标号:指令助记符操作数,;注释,语句格式寻址方式寻址方式总结,标号是给该指令所在地址取的名字标识符由字母(az,AZ)、数字(09)或特殊字符(-?)组成第一个字符必须为(az,AZ)或(-?),但“?”不能单独做标识符标识符有效长度为31个字符,指令助字符是指令名称的代表符号,操作数是参加本指令运算的数据,有的不需要操作数,有的则需多个操作数,多个操作数间用逗号分开,注释必须使用分号开头,可单独成行,86系列汇编语言及指令的格式与寻址方式,寻址方式是CPU在存储器中查找相应单元内容的方式,基本的寻址方式有七种,语句格式寻址方式寻址方式总结,86系列汇编语言及指令的格式与寻址方式,操作数在指令中提供,即所需的数据在指令中即可找到。该类型数寻址主要用于对寄存器赋值由于处理器在指令中即可获得数据,不需访问存储器,所以立即数寻址速度较快立即数必须是8位或16位整数,且必须为源操作数,实例:MOVAL,23H;将23H送ALMOVAX,2A35H;将2A35H送AX,AH中2A,AL中35,语句格式寻址方式立即寻址直接寻址寄存器直接寻址寄存器间接寻址寄存器相对寻址基址加变址寻址相对基址加变址寻址寻址方式总结,86系列汇编语言及指令的格式与寻址方式,数据存放在存储器中,需要访问数据的地址由指令直接给出最简单的访问存储器的方式默认的段寄存器是DS实例:,假设段寄存器的内为5000HMOVAL,2000H;将以DS为段地址,偏移量为2000H的存储单元52000H中内容送ALMOVAX,2000H;将以DS为段寄存器,偏移量为2000H的存储单元52000H中内容送AL,52001H的内容送AH,访问允许段超越,假设ES段寄存器内为3000H:MOVAL,ES:2000H;将以ES为地址,以2000H为偏移量的地址(32000H)内容送ALMOVAX,ES:2000H;将以ES为地址,以2000H为偏移量的地址(32000H)内容送AL,32001H内容送AH,语句格式寻址方式立即寻址直接寻址寄存器直接寻址寄存器间接寻址寄存器相对寻址基址加变址寻址相对基址加变址寻址寻址方式总结,86系列汇编语言及指令的格式与寻址方式,操作数在CPU某一内部寄存器中,CPU访问该寄存器即可得到该操作数存放数据的寄存器在指令中指出由于CPU访问自己的内部寄存器即可得到操作数,无需直接访问存储器,因此访问速度较快寄存器可以为源操作数,也可为目的操作数,实例:MOVBL,AL;AL中存放操作数ADDAL,8;AL中存放操作数,语句格式寻址方式立即寻址直接寻址寄存器直接寻址寄存器间接寻址寄存器相对寻址基址加变址寻址相对基址加变址寻址寻址方式总结,86系列汇编语言及指令的格式与寻址方式,数据的地址存放在寄存器中,CPU需访问寄存器得到数据地址以后方可得到数据的绝对地址,再访问存储器相应单元得到数据默认段寄存器为DS寄存器中存放的是数据地址的偏移量寄存器可为BX,SI或DI,实例:(设DS内为5000H,设SI内为2000H,DI为3000H,BX内为A000H)MOVAL,SI;将以DS为段地址,SI内数据为偏移量的存储单元52000H内容送ALMOVAX,DI;将以DS为段地址,DI内数据为偏移量的存储单元53000H内容送AL,53001H内容送AHMOVAX,BX;将以DS为段地址,DI内数据为偏移量的存储单元5A000H内容送AL,5A001H内容送AH,实例:(设CS内为2000H,设SI内为2000H,DI为3000H,BX内为A000H)允许段超越MOVAL,CS:SI;将以CS为段地址,SI内数据为偏移量的存储单元22000H内容送ALMOVAX,CS:DI;将以CS为段地址,DI内数据为偏移量的存储单元23000H内容送AL,23001H内容送AHMOVAX,CS:BX;将以CS为段地址,DI内数据为偏移量的存储单元2A000H内容送AL,2A001H内容送AH,语句格式寻址方式立即寻址直接寻址寄存器直接寻址寄存器间接寻址寄存器相对寻址基址加变址寻址相对基址加变址寻址寻址方式总结,86系列汇编语言及指令的格式与寻址方式,将以寄存器内数据为变址,某立即数为附加量的数据相加后形成偏移量,与相应的段寄存器相加后形成绝对地址访问存储单元地址偏移量由寄存器与立即数或变量组成立即数为十六位数,实例(设DS内5000H,SI内为2000H,ADDR变量为0400H)MOVAL,SI0500H;将以DS为段地址,SI内数据为变址与0500H为附加量相加(2500H)为偏移量的绝对地址52500H内容送ALMOVAX,SI0500H;将以DS为段地址,SI内数据为变址与0500H为附加量相加(2500H)为偏移量的绝对地址52500H内容送AL,52501H内容送AH,实例(设DS内5000H,SI内为2000H,ADDR变量为0400H)MOVAL,ADDRSI;将以DS为段地址,SI内数据为变址与ADDR为附加量相加(2400H)为偏移量的绝对地址52400H内容送ALMOVAX,ADDRSI;将以DS为段地址,SI内数据为变址与ADDR为附加量相加(2400H)为偏移量的绝对地址52400H内容送AL,52401H内容送AH,语句格式寻址方式立即寻址直接寻址寄存器直接寻址寄存器间接寻址寄存器相对寻址基址加变址寻址相对基址加变址寻址寻址方式总结,86系列汇编语言及指令的格式与寻址方式,将以某段寄存器内容为段地址,某基址存储器(BP或BX)内的内容、变址存储器(SI或DI)相加后形成偏移量得到绝对地址,语句格式寻址方式立即寻址直接寻址寄存器直接寻址寄存器间接寻址寄存器相对寻址基址加变址寻址相对基址加变址寻址寻址方式总结,实例(设DS内5000H,BX内为2000H,SI内为0100H)MOVAL,BXSIMOVAL,BX+SI;将以DS为段地址,BX内数据为基址,SI内数据为变址相加结果(2100H)为偏移量的绝对地址52100H内容送ALMOVAX,BXSIMOVAX,BX+SI;将以DS为段地址,BX内数据为基址,SI内数据为变址相加结果(2100H)为偏移量的绝对地址52100H内容送AL,52101H内容送AH,86系列汇编语言及指令的格式与寻址方式,将以某段寄存器内容为段地址,某基址存储器(BP或BX)内的内容、变址存储器(SI或DI)与某立即数或变量相加后形成偏移量得到绝对地址,实例(设DS内5000H,BX内为2000H,SI内为0100H,ADDR为0020)MOVAL,BXSI0050HMOVAL,BX+SI+0050H;将以DS为段地址,BX内数据为基址,SI内数据为变址以及附加量0050H相加结果(2150H)为偏移量的绝对地址52150H内容送ALMOVAX,BXSI0050HMOVAX,BX+SI+0050H;将以DS为段地址,BX内数据为基址,SI内数据为变址以及附加量0050H相加结果(2150H)为偏移量的绝对地址52100H内容送AL,52101H内容送AH,语句格式寻址方式立即寻址直接寻址寄存器直接寻址寄存器间接寻址寄存器相对寻址基址加变址寻址相对基址加变址寻址寻址方式总结,实例(设DS内5000H,BX内为2000H,SI内为0100H,ADDR为0020H)MOVAL,ADDRBXSIMOVAL,ADDRBX+SI;将以DS为段地址,BX内数据为基址,SI内数据为变址以及附加量ADDR相加结果(2120H)为偏移量的绝对地址52120H内容送ALMOVAX,BXSI0050HMOVAX,BX+SI+0050H;将以DS为段地址,BX内数据为基址,SI内数据为变址以及附加量ADDR相加结果(2120H)为偏移量的绝对地址52120H内容送AL,52121H内容送AH,86系列汇编语言及指令的格式与寻址方式,立即寻址MOVAL,20H,不需访问存储器(无总线周期),需访问存储器(有总线周期),寄存器直接寻址MOVAL,BL,直接寻址MOVAL,2000H,寄存器间接寻址MOVAL,SI,寄存器相对寻址,基址变址寻址MOVAL,以BX寄存器寻址数据段基地址(查表)MOVAL,BX+2000H以BP寄存器寻址堆栈段基地址(子程序)MOVAL,BP+2000H以SI,DI寄存器寻址通用寄存器变址寻址MOVAL,SI+2000H,BXSIBPDI,语句格式寻址方式立即寻址直接寻址寄存器直接寻址寄存器间接寻址寄存器相对寻址基址加变址寻址相对基址加变址寻址寻址方式总结,相对基址变址寻址AD1MOVAL,0500H,BXSIBPDI,传送类指令,通用数据传送指令目标地址传送指令标志位传送指令输入/输出数据传送指令,传送类指令,传送类指令是指令系统中使用次数最多的一类指令,也是条数最多的一类指令,主要用于数据的传递及交换等场合,传送类指令一般不影响标志位。,通用数据传送指令目标地址传送指令标志位传送指令输入/输出数据传送指令,传送类指令,通用数据传送指令基本传送指令MOV堆栈操作指令PUSHPOP交换指令XCHG换码指令XLAT目标地址传送指令标志位传送指令输入/输出数据传送指令,传送类指令,堆栈操作类指令最主要的目的在于对数据的保护,如子程序调用与中断调用前的寄存器值的保存与恢复等。堆栈类操作的特点有:堆栈类操作对象必须是字,即十六个字节;数据遵循先进后出原则;PUSH与POP是成对出现,且进栈数据PUSH使用顺序与其弹出顺序恰好相反。实例:PUSHAXPUSHBX.POPBXPOPAX,通用数据传送指令基本传送指令MOV堆栈操作指令PUSHPOP交换指令XCHG换码指令XLAT目标地址传送指令标志位传送指令输入/输出数据传送指令,传送类指令,XCHG实现内部寄存器、寄存器与存储单元之间的传送,可以为字节或字操作。但该指令不能实现存储单元之间的数据交换。实例:XCHGAL,BLXCHGBX,CXXCHGAX,2334HXCHG2003H,2006H,通用数据传送指令基本传送指令MOV堆栈操作指令PUSHPOP交换指令XCHG换码指令XLAT目标地址传送指令标志位传送指令输入/输出数据传送指令,传送类指令,换码指令主要用于完成字节翻译功能,也被称作查表指令。该指令无操作数要求BX中存放表的首地址,AL中为要查找数字的偏移量,执行时将BX与AL相加,得到段内偏移地址。将该地址存储单元内容送AL表的最大容量为256BYTES,通用数据传送指令基本传送指令MOV堆栈操作指令PUSHPOP交换指令XCHG换码指令XLAT目标地址传送指令标志位传送指令输入/输出数据传送指令,实例:假设一个表依次存放了09的平方值,表名为SQTBL现要查找5的平方值,则可有如下指令:LEABX,SQTBL;将SQTBL段内偏移量;即其首地址送BXMOVAL,5;将查找数据的表内位置送ALXLAT;CPU将BX与AL相加得到偏移量;得到该数据单元内容送AL,传送类指令,传送地址码的指令,可用来传送操作数的段地址或偏移地址,共3条指令,通用数据传送指令目标地址传送指令标志位传送指令输入/输出数据传送指令,传送类指令,LEA指令的功能是将数据所在的段内偏移量送一个寄存器。这时段地址寄存器默认为DS实例:LEASI,2723H;将2723H数据单元的段内偏移量送SI,即将2723H送SILEASI,SQTBL;将表SQTBL的段内偏移量送SI,通用数据传送指令目标地址传送指令取有效地址指令LEA取DS与有效地址指令LDS取ES与有效地址指令LES标志位传送指令输入/输出数据传送指令,传送类指令,执行该指令时有两个功能:第一将指定存储单元所在段的段地址送段寄存器DS,第二将其所在的段内偏移量送指定的寄存器实例:LDSSI,SQTBL;将表SQTBL所在段的段地址送段寄存器DS,将SQTBL在段内的偏移量送SI,通用数据传送指令目标地址传送指令取有效地址指令LEA取DS与有效地址指令LDS取ES与有效地址指令LES标志位传送指令输入/输出数据传送指令,传送类指令,与上一指令类似,执行该指令时有两个功能:第一将指定存储单元所在段的段地址送段寄存器ES,第二将其所在的段内偏移量送指定的寄存器实例:LESSI,SQTBL;将表SQTBL所在段的段地址送段寄存器ES,将SQTBL在段内的偏移量送SI,通用数据传送指令目标地址传送指令取有效地址指令LEA取DS与有效地址指令LDS取ES与有效地址指令LES标志位传送指令输入/输出数据传送指令,传送类指令,对标志位操作的指令共4条,通用数据传送指令目标地址传送指令标志位传送指令输入/输出数据传送指令,传送类指令,执行该指令时,标志寄存器的低八位传送至AH,通用数据传送指令目标地址传送指令标志位传送指令读取标志指令LAHF设置标志指令SAHF标志进栈指令PUSHF标志出栈指令POPF输入/输出数据传送指令,OF,DF,IF,TF,SF,ZF,AF,PF,CF,FLAG,AH,D7,D6,D4,D2,D0,传送类指令,与LAHF相反,将AH中的相应位传送至标志位,通用数据传送指令目标地址传送指令标志位传送指令读取标志指令LAHF设置标志指令SAHF标志进栈指令PUSHF标志出栈指令POPF输入/输出数据传送指令,传送类指令,PUSHF将标志寄存器的16位送入堆栈,低位在前,高位在后,同时堆栈地址指针SP的值加2。POPF与此正好相反,通用数据传送指令目标地址传送指令标志位传送指令读取标志指令LAHF设置标志指令SAHF标志进栈指令PUSHF标志出栈指令POPF输入/输出数据传送指令,传送类指令,输入/输出指令用来完成累加器AX或AL与I/O端口之间的数据传送功能。共两条指令IN指令使CPU从一个八位端口读入一个字节到AL中,也可以从连续的两个八位端口读两个字节到AX中。,通用数据传送指令目标地址传送指令标志位传送指令输入/输出数据传送指令,实例:INAL,20H;从20H的端口读入一个字节到ALINAX,50H;从50H端口读入一个字节到AL,从51H端口读入一个字节到AH,如端口超过八位,则需将该端口地址存放在DX,MOVDX,2006H;将端口号2006H送DXINAL,DX;从端口号为2006H的端口读入一个字节INAX,DX;从2006H端口读入一个字节至AL,从2007H端口读入一个字节至AH,OUT指令与IN指令相反,将AL中的字节从端口输出或将AX中的两个字节从相邻的端口依次输出,实例:OUT20H,ALOUT50H,AXOUTDX,ALOUTDX,AX,数据操作类指令,86系列指令系统中,有完备的加减乘除运算指令,可处理不带符号或带符号的字节或字运算,以及BCD码计算。,算术运算类指令逻辑运算和移位指令,数据操作类指令,也被称作不带进位的加法指令,用来执行两个字节或两个字的相加运算,结果存放在目的操作数内。目的操作数不能为立即数或常量。影响的标志位:OFSFZFAFPFCF,算术运算类指令加法指令半加器加法ADD全加器加法ADC增量加法INC减法指令乘法指令除法指令逻辑运算和移位指令,数据操作类指令,也叫带进位的加法指令,该指令执行时不仅实现ADD将两个操作数相加的功能,同时还要再加上标志寄存器内的进位标志CF。影响的标志位OFSFZFAFPFCF,算术运算类指令加法指令半加器加法ADD全加器加法ADC增量加法INC减法指令乘法指令除法指令逻辑运算和移位指令,实例:ADCAL,BL;将AL加BL再加CF,结果存入ALADCAL,2000H;将AL+2000H+CF,结果存入ALADCAX,2000H;将AL+2000H+CF,结果存入AL;将AH+2000H+CF,结果存入AH,思考:由于8086/8088最多只能处理16位数,如何实现32位、64位甚至更多位数字的加法运算呢?,数据操作类指令,也被称作自加指令,只有一个操作数,指令执行时,将操作数内容加1再送回该操作数。同样,该操作数不能为立即数。影响的标志位OFSFZFAFPFCF注意:该指令不会影响进位标志位!,算术运算类指令加法指令半加器加法ADD全加器加法ADC增量加法INC减法指令乘法指令除法指令逻辑运算和移位指令,实例:INCAL;将AL自加1,结果存入ALINC2000H;2000H结果加1,再存回2000H,数据操作类指令,也被称作不带借位的减法指令,用来执行两个字节或两个字的相加运算,结果存放在目的操作数内。影响的标志位:OFSFZFAFPFCF,算术运算类指令加法指令减法指令半加器减法SUB全加器减法SBB减量指令DEC取补指令NEG比较指令CMP乘法指令除法指令逻辑运算和移位指令,实例:SUBAX,BX;AX-BX,结果放在AX内SUBBX+2,AL;BX+2单元内容-SI,结果送回BX+2SUBBYTEPTRDI,10;DI与10相减,结果送回DI,数据操作类指令,也被称作带借位的减法指令,用来执行两个字节或两个字的相减运算,并且减CF,结果存放在目的操作数内。影响的标志位:OFSFZFAFPFCF,算术运算类指令加法指令减法指令半加器减法SUB全加器减法SBB减量指令DEC取补指令NEG比较指令CMP乘法指令除法指令逻辑运算和移位指令,实例:SBBAX,BX;AX-BX-CF,结果放在AX内SBBBX+2,AL;BX+2单元内容-AL-CF,结果送回BX+2SBBBYTEPTRDI,10;DI与10相减,再减CF后结果送回DI,数据操作类指令,也被称作自减指令,只有一个操作数,具体操作为对操作数进行减1的运算后,结果返回操作数。影响的标志位:OFSFZFAFPFCF注意:该指令不会影响进位标志位!,算术运算类指令加法指令减法指令半加器减法SUB全加器减法SBB减量指令DEC取补指令NEG比较指令CMP乘法指令除法指令逻辑运算和移位指令,实例:DECAX;AX-1,结果返回AX内DECBYTEPTRSI;SI所指向的单元减1后送回原单元,数据操作类指令,只有一个操作数,具体操作为对操作数进行取补的运算后,结果返回操作数。相当于用0减去操作数后再送回该操作数。影响的标志位:OFSFZFAFPFCF=1,算术运算类指令加法指令减法指令半加器减法SUB全加器减法SBB减量指令DEC取补指令NEG比较指令CMP乘法指令除法指令逻辑运算和移位指令,实例:NEGAX;对AX内的数取补后结果返回AXDECBYTEPTRSI;SI所指向的单元减1后送回原单元,思考题:如果希望实现50-AX,结果放在AX内应该如何实现?,数据操作类指令,与SUB的功能类似,执行两个数相减的操作,但结果不送回目的操作数,仅将计算结果反映在标志位上。影响的标志位:OFSFZFAFPFCF,算术运算类指令加法指令减法指令半加器减法SUB全加器减法SBB减量指令DEC取补指令NEG比较指令CMP乘法指令除法指令逻辑运算和移位指令,实例:CMPAX,2000H;AX-2000H,将相应的标志位置位CMPAX,2000H;AX减2000H指示的存储单元,结果将相应的标志位置位。如AL内为30H执行SUBAL,20H后AL内为10H,标志位OF,SF,ZF=0,AF=0,PF=1,CF=0执行CMPAL,20H后AL内仍为30H,标志位与上同,数据操作类指令,乘法指令可实现两个字节或字的乘法。乘法操作数仅有一个,被操作数的字长由乘法操作数决定。影响的标志位:OFSFZFAFPFCF,算术运算类指令加法指令减法指令乘法指令无符号数乘法MUL带符号数乘法IMUL除法指令逻辑运算和移位指令,实例:MULBL;将AL与BL相乘,结果放在AX内,其中高8位在AH,低8位在ALMULBX;将AX与BX相乘,结果放在DX:AX内,其中高16位在DX,低16位在AX,IMUL带符号数乘法指令与无符号数类似,区别在于IMUL的最高位被认为是符号位,不参与数字的计算,数据操作类指令,除法指令可实现两个字节或字的除法。与乘法类似,除法操作数仅有一个,被操作数的字长由乘法操作数决定。影响的标志位:OFSFZFAFPFCF,算术运算类指令加法指令减法指令乘法指令除法指令无符号数乘法DIV带符号数乘法IDIV逻辑运算和移位指令,实例:DIVBL;将AX与BL相除,结果放在AL内DIVBX;将DX为高16位,AX中为低16位的数与BX相除,结果放在AX内,IDIV带符号数除法指令与无符号数类似,区别在于IDIV的最高位被认为是符号位,不参与数字的计算,数据操作类指令,AND、OR、XOR的指令形式基本相同,运算时这些指令可以对两个字节或字操作数的对应位进行逻辑运算,并对相应的标志位置位。,算术运算类指令逻辑运算和移位指令逻辑运算指令与运算AND或运算OR异或运算XOR与测试运算TEST非运算NOT移位运算指令,如AL内为11001010B,即CAH,则执行ANDAL,03H后,AL内结果为02HORAL,03H后,AL内结果为DBHXORAL,03H后,AL内结果为D9H,对AND进行考察000100010111易知任何数与0相“与”后结果为0,与1相“与”后不变而且,一个数与自身相与,其值不变,但会使标志寄存器内容清0,对OR进行考察000101011111易知任何数与0相“或”后结果不变,与1相“或”后变为1而且,一个数与自身相或,其值不变,但会使标志寄存器内容清0,对XOR进行考察000101011110易知任何数与0“异或”后结果不变,与1“异或”后变为其反码;而且,一个数与自身异或,其值清零,相应标志寄存器内容清0,思考题:将一个数的高四位清零,低四位不变,应该怎么做?将一个数的高四位变1,低四位不变,应该怎么做?将一个数的高四位取反,低四位不变,应该怎么做?,数据操作类指令,TEST和AND运算类似,区别在于AND运算结果会送回目的操作数并影响标志位,而TEST运算只影响标志位但不会将结果送目的操作数。实例:TESTAL,0FH;AL与0FH相与的结果影响标志位,但结果不送回AL,算术运算类指令逻辑运算和移位指令逻辑运算指令与运算AND或运算OR异或运算XOR与测试运算TEST非运算NOT移位运算指令,数据操作类指令,非运算指令仅有一个操作数,结果返回操作数。对一个操作数进行NOT运算后,得到的是其反码。实例:如AL内为01001010B,执行NOTAL后,AL结果为10110101B,算术运算类指令逻辑运算和移位指令逻辑运算指令与运算AND或运算OR异或运算XOR与测试运算TEST非运算NOT移位运算指令,数据操作类指令,算术运算类指令逻辑运算和移位指令逻辑运算指令移位运算指令,注意:如果仅需移一位,则可采用SALAL,1指令实现;如果需移27位,则必须将移的位数送至CL中,如需将AL中的数不带进位算术右移4位,则需用如下指令:MOVCL,4SARAL,CL观察算术左移指令可以发现,当实现算术左移时,相当于整个数X2;左移N位,相当于实现了X2N的功能,而左移仅需两个时钟周期,可大大节省程序运行时间;类似地,右移相当于/2N的功能。,实例:将AL中的值X10方法1:SALAL,1;将ALX2(2)MOVBL,AL;将ALX2值移入BL保存(2)MOVCL,2(2)SALAL,CL;得到(ALX2)X4的值(2)ADDAL,BL;得到ALX10的值(4)小于12个时钟周期方法2:MUL10(7077),思考题:由于无论何种移位运算均只能实现8位或16位数的移位,如果要将一个32位数的移位,即SALreg32,1或ROLreg32,1或RCLreg32,1或者SALreg32,4或RORreg32,4或RCLreg32,4的功能,应当如何实现?,串操作指令,串操作指令就是用一条指令实现对一串字符或数据的操作。,字符串的传送字符串的存和取字符串的扫描和比较重复前缀,串操作指令有如下特点:(1)通过加重复前缀来实现串操作(2)可以对字节串进行操作,也可以对字串进行操作(3)以DS:SI为源操作数,以ES:DI为目的操作数(4)地址修改方向与标志位DF有关,DF=0增加,DF1减小(5)如果源与目的位于同一段,那么DS与ES应置相等,串操作指令,MOVSB与MOVSW指令格式唯一的区别就是传送为字与字节。,字符串的传送字符串的存和取字符串的扫描和比较重复前缀,在实现该指令前需做好以下工作:(1)将源操作数偏移地址送SI,将目的操作数偏移地址送DI(2)将数据个数送CX(3)设置地址变化方向(即DF的值),实例:LEASI,SOURCELEADI,TARGETMOVCX,30HCLD(STD)REPMOVSB,串操作指令,STOSB(STOSW)与LODSB与LODSW指令格式与MOVS相同,STOS用于将AL(AX)中的数据存入内存中。该指令主要用于将内存某些数据块初始化。LODS用于将内存中的数据读取到AL(AX)中,字符串的传送字符串的存和取字符串的扫描和比较重复前缀,实例1:MOVAL,0LEADI,TARGETMOVCX,30HCLD(STD)REPMOVSB,实例2:LEADI,TARGETLODSB,串操作指令,SCAS用来从目标串中查找AL(AX)中的关键字,用AL(AX)中数据减去DI目标中的数据,将结果影响标志位。,字符串的传送字符串的存和取字符串的扫描和比较重复前缀,实例:CLDMOVDI,0100HMOVAL,$REPNESCANSBANDCX,0FFHJZZERDECDIMOVBX,DIJMPST0ZER:MOVBX,0ST0:HLT,串操作指令,字符串的传送字符串的存和取字符串的扫描和比较重复前缀,CMPS指令可以看做是CMP指令的批量处理命令,作用为将SI所指数据与DI所指数据相减,并将结果送至标志位。,实例:CLDMOVCX,100MOVSI,2400HMOVDI,1200HREPECMPSBANDCX,0FFHJZEQQDECSIMOVBX,SIMOVAL,SIJMPSTOPEQQ:MOVBX,0ST0P:HLT,串操作指令,字符串的传送字符串的存和取字符串的扫描和比较重复前缀,重复前缀用来表示对某些特定指令进行重复,共有3种:REP,REPE/REPZ,REPNE/REPNZ。,REP无条件重复REPE/REPZ当结果为零时重复REPNE/REPNZ当结果不为零时重复,控制类指令,程序转移的地址段内转移与段间转移短转移与段内转移直接转移与间接转移相对转移与绝对转移条件转移指令循环控制指令处理机控制指令,程序转移的类型,重装CS?,段间转移重装CSFAR,段内转移不重装CS,是否在-128+127范围内?,短转移NEAR或SHORT,长转移NEAR,转移地址存放在寄存器中?,直接转移地址信息在指令中,间接转移地址信息在寄存器中,只能完成段

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论