资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第2章 寻址方式和指令系统,单击此处编辑母版标题样式,单击此处编辑母版文本样式,*,优秀精品课件文档资料,优秀精品课件文档资料,第,2,章,寻址方式和指令系统,2.1,寻址方式,2.2,数据传送类指令,2.3,算术运算类指令,2.4,位操作类指令,2.5,串操作类指令,2.6,控制转移类指令,2.7,处理机控制类指令,开 始,第2章 寻址方式和指令系统2.1 寻址方式开 始,2.3,算术运算类指令,2.3.1 加法指令,2.3.2 减运算指令,2.3.3 乘运算指令,2.3.4 除运算指令,2.3.5 符号扩展指令,2.3.6 十进制调整指令,返回本章首页,2.3 算术运算类指令2.3.1 加法指令返回本章首页,2.3.1 加法指令,1,加,1,指令,INC,2,加指令,ADD,3,带进位加指令,ADC,2.3.1 加法指令1加1指令 INC,1加1指令,INC,语句格式:,INC OPD,功能:将目的操作数加1,结果送目的地址。,即(,OPD)+1OPD。,INC,指令是一个单操作数指令,操作数可以是寄存器或存储器操作数。,如:,INC BX,,即(,BX)+1BX。,加1指令可用于对计数器和地址指针进行调整。,1加1指令 INC,2加指令,ADD,语句格式:,ADD OPD,OPS,功能:将目的操作数与源操作数相加,结果存入目的地址中,源地址的内容不改变。,即(,OPD)+(OPS)OPD。,2加指令ADD,3带进位加指令,ADC,语句格式:,ADC OPD,OPS,功能:将目的操作数加源操作数再加低位进位,结果送目的地址。,即(,OPD)+(OPS)+CF OPD。,【例2.20】,无符号双字加法运算。,Sum=0234 4652H+0F0F0F 0F0H,MOVAX,4652H;(AX)=4652H,ADDAX,0F0F0H;(AX)=3742H,CF=1,MOVDX,0234H;(DX)=0234H,ADCDX,0F0F0H;(DX)=0F325H,CF=0,返回本节,3带进位加指令ADC返回本节,2.3.2 减运算指令,1,减,1,指令,DEC,2,减指令,SUB,3,求补指令,NEG,4,带借位减指令,SBB,5,比较指令,CMP,2.3.2 减运算指令1减1指令DEC,1减1指令,DEC,语句格式:,DEC OPD,功能:将目的操作数减1,结果送目的地址。即(,OPD)1OPD。,DEC,指令是一个单操作数指令,操作数可以是寄存器或存储器操作数。,如:,DEC CX。,即(,CX)1CX。,减1指令,DEC,也一般用于对计数器和地址指针的调整。,1减1指令DEC,2减指令,SUB,语句格式:,SUB OPD,OPS,功能:目的操作数减源操作数,结果存于目的地址,源地址内容不变。,即(,OPD)(OPS)OPD,【,例2.21】,减法运算。,MOVAX,5678H;(AX)=5678H,SUBAX,1234H;(AX)=4444H,MOVBX,3354H;(BX)=3354H,SUBBX,3340H;(BX)=0014H,2减指令SUB,3求补指令,NEG,语句格式:,NEG OPD,功能:将目的操作数的每一位求反(包括符号位)后加1,结果送目的地址。,即(,OPD)+1OPD。,【,例2.22】,求补运算。,MOVAX,0FF64H,NEGAL;(AX)=0FF9CH,SUBAL,9DH;(AX)=0FFFFH,NEGAX;(AX)=0001H,DECAL;(AX)=0000H,NEGAX;(AX)=0000H,3求补指令NEG,4带借位减指令,SBB,语句格式:,SBB OPD,OPS,功能:目的操作数减源操作数再减低位借位,CF,,结果送目的地址。,即(,OPD)(OPS)CF OPD,4带借位减指令 SBB,5比较指令,CMP,语句格式:,CMP OPD,OPS,功能:目的操作数减源操作数,结果只影响标志位,不送入目的地址。,即(,OPD)(OPS)。,【例2.24】比较,AL,的内容数值大小。,CMPAL,50;(AL)50,JBBELOW;(AL)=50,(AL)50AL,INCAH;(AH)+1AH,BELOW:,返回本节,5比较指令 CMP语句格式:CMP OPD,OPS返回本,2.3.3 乘运算指令,1,无符号数乘法指令,MUL,2,有符号乘指令,IMUL,2.3.3 乘运算指令1无符号数乘法指令MUL,1无符号数乘法指令,MUL,语句格式:,MUL OPS,功能:,若是字节数据相乘,(,AL),与,OPS,相乘得到字数据存入,AX,中;若是字数据相乘,则(,AX),与,OPS,相乘得到双字数据,高字存入,DX、,低字存入,AX,中。,即字节乘法:(,AL)*(OPS)AX,,字乘法:(,AX)*(OPS)DX,AX,OPS,不能使用立即数寻址方式,【例2.25】无符号数0,A3H,与11,H,相乘。,MOVAL,0A3H;(AL)=0A3H,MOVBL,11H;(BL)=11H,MULBL ;(AX)=0AD3H,1无符号数乘法指令MUL语句格式:MUL OPS,2有符号乘指令,IMUL,语句格式:,IMUL OPS,功能:字节乘法:(,AL)*(OPS),AX,,字乘法:(,AX)*(OPS),DX、AX。,IMUL,指令除计算对象是带符号二进制数外,其他都与,MUL,一样,但计算结果不同。【例2.26】有符号数0,B4H,与11,H,相乘。,MOVAL,0B4H;(AL)=B4H,MOVBL,11H;(BL)=11H,IMULBL ;(AX)=0FAF4H,返回本节,2有符号乘指令IMUL语句格式:IMUL OPS返回本节,2.3.4 除运算指令,1,无符号除指令,DIV,2,有符号,除指令,IDIV,2.3.4 除运算指令1无符号除指令DIV,1无符号除指令,DIV,语句格式:,DIV OPS,功能:字节除法:(,AX)/(OPS)AL(,商)、,AH(,余数),字除法:(,DX、AX)/(OPS)AX(,商)、,DX(,余数),OPS,不能使用立即数寻址方式,【例2.27】,写出实现无符号数0400,H/0B4H,运算的程序段。,MOVAX,0400H;(AX)=0400H,MOVBL,0B4H;(BL)=0B4H,DIVBL ;,商(,AL)=05H,,余数(,AH)=7CH,1无符号除指令DIV,2有符号除指令,IDIV,语句格式:,IDIV OPS,功能:字节除法:(,AX)/(OPS)AL(,商)、,AH(,余数),字除法:(,DX,AX)/(OPS)AX (,商)、,DX(,余数),除法指令,DIV,和,IDIV,虽然对标志的影响未定义,但可产生溢出。,OPS,不能使用立即数寻址方式。,【例2.28】,写出实现有符号数0400,H/0B4H,运算的程序段。,MOVAX,0400H;(AX)=0400H,MOVBX,0B4H;(BX)=0B4H,IDIVBX ;(AL)=0F3H,(AH)=24H,返回本节,2有符号除指令IDIV返回本节,2.3.5 符号扩展指令,1,字节转换成字指令,CBW,2,将字转换成双字指令,CWD,2.3.5 符号扩展指令 1字节转换成字指令CBW,1字节转换成字指令,CBW,语句格式:,CBW,功能:将,AL,中的符号位数据扩展至,AH。,【,例2.29】将字节数据扩展成字数据。,MOVAL,0A5H;(AL)=0A5H,CBW ;(AX)=0FFA5H,ADDAL,70H;(AL)=25H,CBW ;(AX)=0025H,1字节转换成字指令CBW,2将字转换成双字指令,CWD,语句格式:,CWD,功能:将,AX,中的符号位数据扩展至,DX。,【,例2.30】将字数据扩展成双字数据。,MOVDX,0;(DX)=0,MOVAX,0FFABH;(AX)=0FFABH,CWD;(DX)=0FFFFH (AX)=0FFABH,返回本节,2将字转换成双字指令CWD返回本节,2.5,串操作类指令,串操作指令,:,数据传送类指令每次只能传送一个数据,若要传送大批数据就需要重复编程,这样就浪费了大量的时间和空间。为此,8086,提供了一组处理主存中连续存放数据串的指令,,这就是,串操作指令。,返回本章首页,2.5 串操作类指令串操作指令:返回本章首页,1传送指令,MOVS,语句格式:,MOVSB,字节串传送,MOVSW,字串传送,功能:将以,SI,为指针的源串中的一个字节(或字)存储单元中的数据传送至以,DI,为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。,即:(,DS:SI)ES:DI。,当,DF=0,时,(,SI,),和(,DI,),增量。,当,DF=1,时,(,SI,),和(,DI,),减量。,1传送指令MOVS,2串比较指令,CMPS,语句格式:,CMPSB,字节串比较,CMPSW,字串比较,功能:将,SI,所指的源串中的一个字节(或字)存储单元中的数据与,DI,所指的目的串中的一个字节(或字)存储单元中的数据相减,并根据相减的结果设置标志,但结果并不保存。,即:(,SI)(DI)。,修改串指针,使之指向串中的下一个元素。,当,DF=0,时,(,SI),和(,DI),增量。当,DF=1,时,(,SI),和(,DI),减量。,2串比较指令CMPS,3串搜索指令,SCAS,语句格式:,SCASB,字节串搜索,SCASW,字串搜索,功能:,AL(,字节)或,AX(,字)中的内容与,DI,所指的目的串中的一个字节(或字)存储单元中的数据相减,根据相减结果设置标志位,结果不保存,,即:字节操作:(,AL)(DI),,字操作:(,AX)(DI)。,修改指针使之指向串中的下一个元素。,当,DF=0,时,(,DI),增量。当,DF=1,时,(,DI),减量。,3串搜索指令SCAS,4从源串中取数指令,LODS,语句格式:,LODSB,从字节串中取数,LODSW,从字串中取数,功能:将,SI,所指的源串中的一个字节(或字)存储单元中的数据取出来送入,AL(,或,AX),中。,即:字节操作:(,SI)AL,,字操作:(,SI)AX。,修改指针,SI,,使它指向串中的下一个元素。,当,DF=0,时,(,SI),增量。当,DF=1,时,(,SI),减量。,4从源串中取数指令LODS,5往目的串中存数指令,STOS,语句格式:,STOSB,往字节串中存数,(2),STOSW,往字串中存数,功能:将,AL,或,AX,中的数据送入,DI,所指的目的串中的字节(或字)存储单元中。,即:字节操作:(,AL)DI,,字操作:(,AX)DI。,修改指针,DI,,使之指向串中的下一个元素。,当,DF=0,时,(,DI),增量)。当,DF=1,时,(,DI),减量。,5往目的串中存数指令STOS,6重复前缀指令,REP REPZ REPNZ,(1),REP,REP,前缀用在,MOVS、STOS、LODS,指令前。,功能:每执行一次串指令(,CX)1,,直到(,CX)=0,,重复执行结束。,(2),REPZ,该指令一般用在,CMP、SCAS,指令前。,功能:每执行一次串指令(,CX)1,,并判断,ZF,标志是否为0,只要(,CX)=0,或,ZF=0,,则重复执行结束。,(3),REPNZ,该指令一般用在,CMPS、SCAS,指令前。,功能:每执行一次串指令(,CX)1,,并判断,ZF,标志是否为0,只要(,CX)=0,或,ZF=1,,则重复执行结束。,6重复前缀指令REP REPZ REPNZ,2.6,控制转移类指令,2.6.1 条件转移指令,2.6.2 无条件转移指令,2.6.3,循环指令,2.6.4 子程序调用指令,2.6.5 中断指令,返回本章首页,2.6 控制转移类指令2.6.1 条件转移指令返回本章首,2.6.1 条件转移指令,1简单条件转移指令,2无符号数条件转移指令,3.有符号数条件转移指
展开阅读全文