收藏 分销(赏)

第三章指令系统.ppt

上传人:w****g 文档编号:13312381 上传时间:2026-02-27 格式:PPT 页数:115 大小:1.91MB 下载积分:8 金币
下载 相关 举报
第三章指令系统.ppt_第1页
第1页 / 共115页
第三章指令系统.ppt_第2页
第2页 / 共115页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三章,指令系统,3.1 操作数类型及寻址方式,3.3 指令系统详解,3.2 程序状态字,3.4 例题,开始,开始,汇编语言原程序的格式,标号:,操作码,操作数1,操作数2,操作数3;注释,3.1,操作数类型及寻址方式,一、操作数类型,对8098单片机而言,可以采用7种类型的操作数,它们是:,18位无符号数(字节型),数据格式:D,7,D,0,取值范围:0255(十进制表示)。,216位无符号数(字型),数据格式:D,15,D,0,取值范围:065535(十进制表示)。,开始,332位无符号数(双字型),数据格式:D,31,D,0,取值范围:0(2,32,1)(十进制表示)。,4.8位带符号数(短整数),数据格式:D,7,D,0,,D,7,是符号位。,取值范围:,128+127(十进制表示)。,6.32位带符号数(长整数),数据格式:D,31,D,0,。,取值范围:,2,31,+(2,31,1)(十进制表示)。,5.16位带符号数(整数),数据格式:D,15,D,0,,D15是符号位。,取值范围:,32768+32767(十进制表示)。,开始,7一位数(位型),在数据中,位是最基本的单位。若想了解单片机内部数据存储器RAM中任何一位的状态,可以通过该位所在字节的地址及其位号而对其测试。,二、寻址方式,对于96系列单片机,可通过六种基本寻址方式来实现地址空间内操作数的访问:,寄存器直接寻址,;,间接寻址,;,自动增量间接寻址,;,立即寻址,;,短变址寻址,;,长变址寻址。,这六种寻址方式属单片机硬件所支持的基本寻址方式,与某些专用寄存器结合还可形成一些其他的寻址方式,如零寄存器寻址和堆栈指针寄存器寻址。,开始,3.自动增量间接寻址,作为地址指针的字变量在对操作数寻址后,自动增值调整,增值大小取决于操作数的类型,。,例1LDAX,BX+;将BX决定的地址空间的内,容传送到AX,且,BX BX,2。,例2LDBAH,BX+;将BX决定的地址空间的内,容传送到AH,且,BX BX,1。,开始,4.立即寻址,该寻址方式允许一个操作数直接从一个指令段里取得。一条指令只能包含一个立即数,其余操作数必须用寄存器直接寻址。,例1 ADDAX,#1230H;AXAX1230H,例2 ADDB AL,#30H;AL AL30H,开始,5.短变址寻址,指令中含有一地址段和一8位偏移量段。,地址段选定寄存器组合中某字寄存器,该寄存器内容即为16位基地址。,8位偏移量为有符号数,它与基地址之代数和可形成操作数有效地址。这样,有效地址的范围可以从基地址前128个字节到后127个字节。,开始,例,LDAX,26HBX;AXMEM_(BX26H),ADDBAL,BL,0FDHCX;AL BLMEM_(CX-3),6.长变址寻址,这种寻址方式类似于短变址寻址方式,不同之处在于指令的第二个字段是16位,与WORD字变量相加后,形成一个操作数的有效地址。这里不需要进行符号扩展。一条指令只能含有一个长变址寻址的参数,其余操作数必须用寄存器直接寻址。,开始,例,ADDAX,BX,TABLECX,;AXBXMEM_(CXTABLE),ADDBAL,BL,TABLECX,;AL BLMEM_(CXTABLE),7.零寄存器寻址,在8098单片机硬件结构里,寄存器文件里开始的二个字固定为零,称之为零寄存器。除了给运算和比较提供常数零之外,还能作为长变址寻址中的WORD字变量,派生出零寄存器寻址方式。这种零寄存器与寻址方式的结合,使存储器中的任何一个单元都能被直接地寻址到。,例1 LDAX,8098H0;将地址为8098H单元的内,容送到AX寄存器。,例2 LDBAH,26H0;将片内寄存器阵列中26H,字节单元内容送到AH中,例3POP2200H0 ;将栈顶的内容弹出,送入2200H单元和2201H,单元,且SP SP,2。,开始,8.堆栈指针寄存器寻址,堆栈指针寻址是将堆栈指针SP作为间接寻址寄存器,其中的内容作为操作数地址。这种寻址方式为访问堆栈中的数据提供了方便。例如:可用堆栈指针作为间接寻址的字变量去访问栈顶,或用于短变址方式中以访问堆栈中的数据。,例1 PUSHSP;将栈顶两字节再次压入堆栈。,例2 LDAX,8SP;将栈顶下第8个单元和第9单,元的内容送入AX中,开始,3.2 程序状态字寄存器PSW,程序状态字PSW保存了用户程序运行所需的状态信息。它的低8位称为中断屏蔽寄存器,高8位保存有7种状态信息,它们可以成为支配程序走向的依据,编制软件时十分有用。而这些状态是由单片机在执行程序的过程中自动形成的。,Z,N,V,VT,C,I,ST,中断屏蔽寄存器,3V 溢出标志位,当单片机的运算结果超出前述数据类型所定义的范围时,V=1;反之,V=0。,1Z 零标志位,当单片机的运算结果为0时,Z=1;反之,Z=0。,2N 负标志位,当单片机的操作结果为负值时,N=1;反之,N=0。,开始,4VT 溢出陷阱标志位,单片机执行某一条指令后,若V=1,则VT同时为1;随后执行另一条指令而使V=0时,VT保持为1。,5C 进位标志位,单片机进行算术运算,可能出现进位或借位。有进位时,C=1;反之,C=0。有借位时,C=0;反之,C=1。如果发生移位操作,移出去的位为1时,C=1,反之,C=0。,6ST 粘位标志位,如果单片机在向右移位的过程中使C=1,则ST同时为1;随后的操作出现C=0时,ST仍然为1。,7I 中断允许标志位,I=1表示允许中断发生,I=0则为禁止中断。这两种状态是依靠单片机分别执行开中断和关中断指令实现的。,开始,3.3 指令系统详解,8098单片机指令按功能可分成下列几类:,(l)数据传送指令;(2)算术运算指令;,(3)逻辑操作指令;(4)栈操作指令;,(5)无条件转移和调用指令;(6)条件转移指令;,(7)位为“0”或位为“1”转移指令;(8)循环控制指令;,(9)单寄存器指令;(10)移位指令;,(11)特殊控制指令;(12)规格化指令。,开始,指令系统的有关约定,不同性质指令的操作用不同的助记符表示,而关于字节、字、双字运算的区别采用以下标志:,B,字节运算(,8,位);,L,双字运算(,32,位)。,助记符中最后一个英文字母不是,B,或,L,,,代表字运算。,8098,单片机的指令系统,允许使用,1,3,个操作数。用汇编语言书写时,可用符号名表示,或者是具体数字。操作数又可分为目的操作数,D,(,Destination,),和源操作数,S,(,Source,)。,指令的常见形式:,无操作数指令:助记符,单操作数指令:助记符D(或S),双操作数指令:助记符D,S,三操作数指令:助记符D,S,1,,S,2,开始,无符号数乘法与除法指令的操作码为两个字节,其它指令的操作码为一个字节。两个字节的操作码,其中第一个字节恒为,FEH,。,位型操作数的使用有如下限制:在指令系统中只能对,PSW,中的某些标志位,置“,1”,或清“,0”,。对于其他的位型操作数,只能测试,不能设置。测试时必须指明字节地址和该字节中的位号。,开始,操作数的通用表示法,如下表所示。,符号,含义及适用范围,breg,单字节操作数(8位无符号数或带符号数),存放于片内寄存器文件的一个字节寄存器中,只能采用寄存器直接寻址方式。若在指令中为源操作数,前面冠以s(Source)为目的操作数时,前面冠以D(Destination)。,(reg)表示该操作数的存储地址。,wreg,双字节操作数(16位无符号数或16位带符号数),存放于片内寄存器文件的一个字寄存器中,其余情况同上。,lreg,四字节操作数(32位无符号数或32位带符号数),存放于片内寄存器文件的一个双字寄存器中,其余情况同上。,baop,单字节操作数(8位无符号数或8位带符号数),可以采用任意一种寻址方式寻址。,waop,双字节操作数(16位无符号数或16位带符号数),可以采用任意一种寻址方式寻址。,开始,PSW,中,6,个标志位的状态表示方法如下:,标志位状态不受指令影响,标志位状态受指令影响,根据结果置“1”或置“0”,标志位可能被置“1”,否则维持不变,不允许置“0”,标志位可能被置“0”,否则维持不变,不允许置“1”,?,标志位处于不确定状态,0,或,1,指令执行后,标志位处于确定的0或1状态,开始,为便于编程和讲解例题,对寄存器文件中的,8,个存储单元分别作出了定义,它们的名称与地址如下:,它们可以构成8个字节型寄存器,或4个字型寄存器,还可以构成两个双字寄存器。,序号,寄存器,字节型,字型,双字型,1,名称,AL,AH,AX,AD,地址,20H,21H,20H,20H,2,名称,BL,BH,BX,地址,22H,23H,22H,3,名称,CL,CH,CX,CD,地址,24H,25H,24H,25H,4,名称,DL,DH,DX,地址,26H,27H,26 H,开始,不同的寻址方式下,各种操作数的表达格式如下:,指令系统中使用的其它符号如下:,寻址方式,表现形式,寄存器,直接寻址,立即,寻址,间接,寻址,自动增量,间接寻址,短变址,寻址,长变址,寻址,汇编语言,breg,#ll,wreg,wreg+,llwreg,hhllwreg,wreg,#hhll,机器代码,(breg),ll,(wreg),(wreg)+l,(wreg)ll,(wreg)llhh,(wreg),llhh,#ll或#hhll,8位或16位立即数,用于立即寻址;,不带#时,用于短变址或长变址寻址,bitno,在字节中的位号(07),cadd,程序转移的入口地址,disp,入口地址相对于现指令地址的偏移量,开始,一、数据传送指令,这类指令用于片内寄存器之间的数据传送,立即数向寄存器的数据传送,寄存器和存储器之间的数据传送。这类指令均为两个操作数。,Z,N,C,V,VT,ST,数据传送指令对状态标志的影响,:,开始,1.LDwreg,waop;字传送,功能:把waop代表的字操作数送到寄存器文件的字寄存器wreg中。,例l立即数传送,LDAX,#1234H;AX1234H,例2寄存器传送,LDAX,BX;AXBX,例3间接寻址传送,LDBX,#1234H;BX1234H,LDAX,BX;把存储器单元1234H1235H,中的内容送入AX。,例4间接增量传送,LDBX,#1234H,LDAX,BX+;存储器单元1234H1235H中的,内容送入AX,且BX内容加2。,开始,例5短变址传送,LDBX,#1234H,LDAX,12HBX;存储器单元1246H1247H中,的内容送入AX。,例6长变址传送,LDBX,#1234H,LDAX,1234HBX;把存储器单元2468H2469H,中的内容送入AX。,2.LDBbreg,baop;字节传送,功能:把baop代表的字节操作数送到寄存器文件的字节寄存器中。,例1立即数传送,LDBAL,#12H;AL12H。,开始,例2寄存器传送,LDBAL,BL;BX的低位字节送入AX的低,位字节。,例3间接寻址传送,LDBX,#1234H,LDBAL,BX;1234H单元中的数送入AL,例4间接增量传送,LDBX,#1234H,LDBAL,BX+;1234H单元中的数送入AL,;BX寄存器增1,例5短变址传送,LDBX,#1234H,LDBAL,12HBX;1246H单元中的数送入AL,例6长变址传送,LDBX,#1234H,LDBAL,1234HBX;2468H单元中的数送入AL,开始,3.ST wreg,waop;字存储,功能:把wreg表示的字寄存器的内容送到由waop表示的字寄存器中或字存储单元中,waop不能是立即数。,例1,STAX,BX;AX的内容存BX,例2,STAX,BX+;AX的内容存放由BX内容指出,的存储单元,且BX内容加2。,4.STB breg,baop;字节存储,功能:把breg表示的字节寄存器的内容送到由baop表示的字节寄存器中或字节存储单元中,baop不能是立即数。,例1,LDAX,#1234H,STBAL,AX;将34H存放到1234H单元。,例2,LDAX,#1234H,STBAH,1234H0;将AH的内容(12H)存放到,1234H单元。,开始,5.LDBSE wreg,baop ;短整数变整数传送,功能:把baop代表的源字节操作数作符号扩展送入由wreg代表的目标寄存器中。,例1,LDBBL,#12H,LDBSEAX,BL;AX0012H,例2,LDBSEAX,#8AH;AX0FF8AH,开始,6.LDBZE wreg,baop;字节转换为字,功能,:将baop代表的源字节操作数作零扩展后送入目标字寄存器中。,例1寄存器传送,LDBBL,#12H,LDBZEAX,BL;AX0012H,例2间接寻址传送,LD BX,#1234H,LDBZEAX,BX;存储器1234H单元中的数扩展后送AX,开始,二、算术运算指令,算术运算指令包括,加法、减法、乘法、除法、比较指令,。这些指令都要影响程序状态字中的状态标志。,开始,指令包括以下类型:,16,位加、减、比较;,8,位加、减、比较;,8,位乘,8,位乘法;,16,位乘,16,位得,32,位积的乘法;,32,位除以,16,位的除法;,16,位除以,8,位的除法;,乘除运算又分带符号和不带符号运算。,1.ADD wreg,waop;双操作数字相加,功能:把wreg代表的字寄存器内容与waop代表的字操作数相加,结果在wreg中。,Z,N,C,V,VT,ST,对状态标志的影响:,设AX=,1357H,,BX=,2468H,,2468H=,11H,,2469H=,22H,例1,ADDAX,BX;该指令执行后,AX=37BFH,,BX内容不变,例2,ADDAX,#1357H;执行后,AX=26AEH。,例3,ADDAX,BX;执行后,AX=3568H,,BX内容不变。,开始,2.ADD Dwreg,Swreg,waop;三操作数字相加,功能:将Swreg代表的字寄存器内容加上waop代表的字操作数,结果存入Dwreg代表的字寄存器中。Swreg与waop内容不变。,Z,N,C,V,VT,ST,对状态标志的影响:,设AX=0123H,BX=1234H,CX=2468H,1234H=11H,1235H=22H,例1,ADDAX,BX,#1234H ;AX=2468H,BX不变。,例2,ADDAX,BX,CX;AX=369CH,BX和,CX不变。,例3,ADDAX,AX,BX;AX=2334H,BX不变。,开始,3.ADDBbreg,baop;双操作数字节相加,功能:把breg代表的字节寄存器内容与baop代表的字节操作数相加,结果在breg中。,Z,N,C,V,VT,ST,对状态标志的影响:,例1,ADDBAL,CL;CL和AL相加,结果送入AL,例2,ADDBAL,#12H ;12H与AL的内容相加,结果,送入AL。,例3,ADDBAL,BX;将BX所指向的单元的内容与,AL相加,结果存入AL。,开始,4.ADDB Dbreg,Sbreg,baop;三操作数字节相加,功能:将Sbreg代表的字节寄存器内容加上baop代表的字节操作数,结果存入Dbreg代表的字节寄存器中。Sbreg与baop内容不变。,Z,N,C,V,VT,ST,对状态标志的影响:,例1,ADDB AL,BL,CL;BX和CX的低字节相加,,结果送AX的低字节。,例2,ADDB AL,AL,#12H;ALAL,+,12H,例3,ADDB AL,AL,BX+;将BX决定的存储单元内容与AL相加,结果在AL中,,BX内容增1。,开始,5.ADDC wreg,waop;带进位的字相加,功能:把wreg代表的字寄存器内容与waop代表的字操作数及进位标志C相加,结果在wreg中。相加之和不为0时,零标志位Z清零;相加之和为0时,Z不变(即不能将Z置“1”)。,Z,N,C,V,VT,ST,对状态标志的影响:,例 ADDC BX,DX;将BX内容、DX内容及进位标,志值三者相加,结果送入BX中。,开始,6.ADDCB breg,baop;带进位的字节相加,功能:把breg代表的字节寄存器内容与baop代表的字节操作数及进位标志C相加,结果在breg中。相加之和不为0时,零标志位Z清零;相加之和为0时,Z不变(即不能将Z置“1”)。,Z,N,C,V,VT,ST,对状态标志的影响:,例:ADDCB AL,BL,ADDCB AL,#26H,ADDCB AL,BX,ADDCBAL,BX+,ADDCBAL,8098HBX,开始,7.SUB wreg,waop;双操作数字相减,功能:把wreg代表的字寄存器内容与waop代表的字操作数相减,结果放在wreg中。如果够减,状态标志C为1;如果不够减,C为0。,Z,N,C,V,VT,ST,对状态标志的影响:,例,:,LDAX,#1234H,LDBX,#6789H,SUBBX,AX;BX=6789H1234H=5555H,;C=1,开始,8.SUB Dwreg,Swreg,waop;三操作数字相减,功能:把Swreg代表的字寄存器内容与waop代表的字操作数相减,结果放在Dwreg中。如果够减,状态标志C为1;如果不够减,C为0。,Z,N,C,V,VT,ST,对状态标志的影响:,例:,LDAX,#1234H,LDBX,#6789H,SUBCX,BX,AX;CX=6789H1234H=5555H,;C=1,开始,9.SUBB breg,baop;双操作数字节相减,功能:把breg代表的字节寄存器内容与baop代表的字节操作数相减,结果放在breg中。如果够减,状态标志C为1;如果不够减,C为0。,Z,N,C,V,VT,ST,对状态标志的影响:,例,:,LD AX,#1234H,SUBB AH,AL;AH=12H34H=0DEH,;C=0,开始,10.SUBB Dbreg,Sbreg,baop;三操作数字节相减,功能:把Sbreg代表的字节寄存器内容与baop代表的字节操作数相减,结果放在Dbreg中。如果够减,状态标志C为1;如果不够减,C为0。,Z,N,C,V,VT,ST,对状态标志的影响:,例:SUBBAL,BL,CL,SUBBAL,BL,#05H,SUBBAL,BL,CX,SUBBAL,BL,5CX,SUBBAL,BL,1234HCX,开始,11.SUBC wreg,waop;带借位的字减法,功能:将wreg代表的字寄存器内容减去waop代表的字操作数,再减去状态标志C的反,结果放在wreg中。如果够减,状态标志C为1;如果不够减,C为0。,Z,N,C,V,VT,ST,对状态标志的影响:,例:,LDAX,#4488H,LDBX,#1122H,SUBAX,BX;AX=4488H,1122H=3366H,;C=1,SUBCBX,AX;BX=1122H,3366H=0DDBCH,;C=0,开始,12.SUBCB breg,baop;带借位的字节减法,功能:将breg代表的字节寄存器内容减去baop代表的字节操作数,再减去状态标志C的反,结果放在breg中。如果够减,状态标志C为1;如果不够减,C为0。,Z,N,C,V,VT,ST,对状态标志的影响:,例:,SUBBAH,AL,SUBCBAH,AL,开始,13.CMP wreg,waop;字比较,功能:把wreg代表的字寄存器内容与waop代表的字操作数相减,wreg和waop的内容不变,仅改变标志位。,wreg=waop时Z=1,N=0,C=1,wregwaop时Z=0,N=0,C=1,Z,N,C,V,VT,ST,对状态标志的影响:,例:设AX=1234H,BX=1235H,,CMP AX,BX;指令执行后,AX,BX不变,,Z=0,C=0,N=1,V=0。,CMP AX,#1234H;立即数比较,CMP AX,BX;间接寻址比较,CMP AX,BX+;间接增量比较,开始,14.CMPB breg,baop;字节比较,功能:把breg代表的字节寄存器内容与baop代表的字操作数相减,breg和baop的内容不变,仅改变标志位。,breg=baop时Z=1,N=0,C=1,bregbaop时Z=0,N=0,C=1,Z,N,C,V,VT,ST,对状态标志的影响:,例:CMPBAL,BL,CMPBAL,#5,CMPBAL,BX,CMPBAL,BX+,CMPBAL,5BX,CMPBAL,8031HBX,开始,15.MUL Lreg,waop;整数乘法(双操作数),功能:Lreg代表的寄存器为一个32位寄存器,它的低16位为一个整数,将这个整数与waop代表的16位操作数进行带符号乘法运算,结果为32位,存入Lreg。,Z,N,C,V,VT,ST,?,对状态标志的影响:,例1,LD AX,#0101H,LDBX,#0202H,MULAX,BX;两数相乘,32位结果存入BX,,即BX=00020402H。,结果地址分配,:20H:02H;21H:04H;22H:02H;23H:00H,例2,MULAX,#8098H,MUL BX,AX,MUL BX,AX+,开始,16.MUL Lreg,wreg,waop;整数乘法(三操作数),功能:把由wreg代表的寄存器字内容和由waop代表的字操作数进行带符号乘法运算,结果存入32位目的寄存器Lreg中。,Z,N,C,V,VT,ST,?,对状态标志的影响:,例,LDAX,#0102H,LDBX,#0203H,MULCX,AX,BX;两数相乘,32位的结果存入,CX,CX=00020706H。,指令执行结果:,寄存器地址:27H26H25H24H,寄存器内容:00H02H07H06H,开始,17.MULB wreg,baop;短整数乘法(双操作数),功能:wreg为一字寄存器,将其低位字节内容与baop代表的字节操作数进行带符号乘法运算,16位结果存入目的寄存器wreg中。,Z,N,C,V,VT,ST,?,对状态标志的影响:,例,LDBAL,#12H,LDBBL,#34H,MULBAX,BL;两数相乘,结果存入AX,,;AX=03A8H。,开始,18.MULB wreg,breg,baop;短整数乘法(三操作数),功能:把由breg代表的寄存器字节和baop代表的操作数字节进行带符号乘法,16位结果存入目的寄存器wreg中,breg、baop不变。,Z,N,C,V,VT,ST,?,对状态标志的影响:,例1,LDBAH,#12H,LDBBL,#34H,MULBAX,AH,BL;AX AH BL,例2,LDBAH,#2H,LDBX,#1234H,MULBAX,AH,02BX;AX AH1236H,开始,19.MULU Lreg,waop;无符号字乘法(双操作数),功能:Lreg代表的是一个32位寄存器,它的低位字(16位)与waop代表的字操作数进行无符号乘法,32位结果存入Lreg中。,Z,N,C,V,VT,ST,?,对状态标志的影响:,本指令与,MULLreg,waop,指令类似,其区别仅在于本指令为无符号数运算。,开始,20.MULU Lreg,wreg,waop;无符号字乘法(三操作数),功能:把wreg代表的字寄存器内容与waop代表的字操作数进行无符号乘法,32位结果存入目的寄存器Lreg中。,Z,N,C,V,VT,ST,?,对状态标志的影响:,该指令与MUL指令类似,其区别仅在于该指令为无符号数运算。,开始,21.MULUB wreg,baop,;无符号字节乘法(双操作数),功能:wreg为一字寄存器,将其低字节内容与baop代表的字节操作数进行无符号乘法,16位结果存入wreg中。,Z,N,C,V,VT,ST,?,对状态标志的影响:,22.MULUB wreg,breg,baop,;无符号字节乘法(三操作数),功能:把breg代表的寄存器字节与baop代表的操作数字节进行无符号乘法,16位积送入wreg中。,Z,N,C,V,VT,ST,?,对状态标志的影响:,开始,23.DIV Lreg,waop;整数除法(带符号),功能:把由Lreg代表的寄存器内容(长整数)带符号除以由waop代表的整数,商存入Lreg的低位字中,余数存入Lreg的高位字中。,当商大于一个字时,V=1,VT=1。,Z,N,C,V,VT,ST,?,对状态标志的影响:,例LDCX,#2468H;CX2468H,LDAX,#1234H;AX1234H,LDBX,#0001H;BX0001H,DIVAX,CX,指令执行后,商为0007H,在AX中;余数为135CH,在BX中。,开始,24.DIVB wreg,baop;短整数除法(带符号),功能:把由wreg代表的寄存器内容(整数)带符号除以由baop代表的短整型数,商存入wreg的低字节,余数存入wreg的高字节。,当商大于一个短整数时,V=1,VT=1。,Z,N,C,V,VT,ST,?,对状态标志的影响:,例LDAX,#1234H,LDBBL,#12H,DIVBAX,BL,该指令执行后,商存入AL,余数存入AH。,开始,25.DIVU Lreg,waop;字除法(无符号),功能:无符号除法运算。把由Lreg代表的无符号寄存器操作数(32位)除以由waop代表的字操作数,商存入Lreg的低字,余数存入Lreg的高字。,Z,N,C,V,VT,ST,对状态标志的影响:,26.DIVUB wreg,baop;字节除法(不带符号),功能:无符号除法运算。把由wreg代表的无符号寄存器操作数(16位)除以由baop代表的字节操作数,商存入wreg的低字节,余数存入wreg的高字节。,Z,N,C,V,VT,ST,对状态标志的影响:,开始,三、逻辑操作指令,这类指令有“与”、“或”、“异或”三类,每类又分为字操作和字节操作。每种操作都使标志位中的C及V置0,并根据操作结果改变Z和N标志。,1.ANDwreg,waop;字逻辑与(双操作数),功能:把由wreg代表的寄存器字和由waop代表的字操作数进行按位“与”操作,结果放在wreg中。,Z,N,C,V,VT,ST,0,0,对状态标志的影响:,例ANDAX,BX,ANDAX,#1234H,ANDAX,BX+,ANDAX,1234HBX,开始,2.ANDDwreg,Swreg,waop;字逻辑与(三操作数),功能:把由Swreg代表的寄存器字和由waop代表的字操作数按位相与,结果放在Dwreg。,Z,N,C,V,VT,ST,0,0,对状态标志的影响:,例AND AX,BX,CX;AXBXCX,ANDAX,AX,#1234H;AXAX1234H,ANDAX,BX,CX,ANDAX,BX,CX+,ANDAX,BX,12CX,开始,3.ANDBbreg,baop;字节逻辑与(双操作数),功能:把由breg代表的寄存器字节和baop代表的操作数字节进行按位相与,结果放在breg中。,Z,N,C,V,VT,ST,0,0,对状态标志的影响:,例ANDBAL,BL;ALALBL,ANDBAL,#12H ;ALAL12H,ANDBAL,BX,ANDBAL,BX+,ANDBAL,12BX,ANDBAL,1234BX,开始,4.ANDBDbreg,Sbreg,baop;字节逻辑与(三操作数),功能:把由Sbreg代表的寄存器字节和由baop代表的字节操作数按位相与,结果放在Dbreg。,Z,N,C,V,VT,ST,0,0,对状态标志的影响:,例ANDB AL,BL,#12H,ANDBAL,BL,CX,ANDBAL,BL,CX+,ANDBAL,BL,12CX+,ANDBAL,BL,1234CX+,开始,5.ORwreg,waop;字逻辑或,功能:把wreg代表的字寄存器内容和由waop代表的字操作数进行按位“或”操作,结果放在wreg中,或操作没有三个操作数的情况。,Z,N,C,V,VT,ST,0,0,对状态标志的影响:,例LD AX,#1234H,LD BX,#5678H,OR AX,BX;AX与BX逻辑或,指令执行后,AX=567CH,开始,6.ORBbreg,baop;字节逻辑或,功能:把breg代表的字节寄存器内容和由baop代表的字节操作数进行按位“或”操作,结果放在breg中。,Z,N,C,V,VT,ST,0,0,对状态标志的影响:,例ORB AL,BL,ORB AL,#05H,ORB AL,BX,开始,7.XORwreg,waop;字逻辑异或,功能:把由wreg代表的字寄存器内容,与waop代表的字操作数进行按位“异或”。两操数相应位不同时,该位为1;相应位的相同时,该位为0,异或操作没有三操作数的情况。,Z,N,C,V,VT,ST,0,0,对状态标志的影响:,例设(2468H)=52H,(2469H)=15H,,LD AX,#4234H,LDBX,#2468H,XORAX,BX+,指令执行后,AX=5766H,BX=246AH,开始,8.XORBbreg,baop;字节逻辑异或,功能:把由breg代表的寄存器宇节内容,与baop代表的字节操作数进行按位“异或”。两操数相应位不同时,该位为1;相应位的相同时,该位为0。,Z,N,C,V,VT,ST,0,0,对状态标志的影响:,例XORBAL,BL,XORBAL,BX,XORBAL,CX+,XORBAL,1234CX,开始,四、栈操作指令,片内寄存器队列的,18H,和,19H,中放堆栈指针,SP,。,1.PUSH waop;字进栈,功能,:把waop代表的字操作数压入堆栈,SPSP2。,Z,N,C,V,VT,ST,对状态标志的影响:,开始,堆栈是向下生成的,当把一个字压入栈时,,SP,2,;,从栈中弹出一个字时,,SP,2,。,2.PUSHF;PSW标志进栈,功能,:将程序状态字PSW压入栈中,然后把PSW清零。SPSP2。,Z,N,C,V,VT,ST,0,0,0,0,0,0,对状态标志的影响,:,3.POP waop;字出栈,功能,:把栈顶的字弹出到waop指定的单元中,SPSP+2。,Z,N,C,V,VT,ST,对状态标志的影响,:,开始,4.POPF;PSW标志出栈,功能,:栈顶的字弹出到程序状态字PSW中,即恢复原压入栈中的PSW值,SPSP2。,Z,N,C,V,VT,ST,对状态标志的影响,:,开始,五、无条件转移和调用指令,无条件转移指令包括:,长转移,、,短转移,、,间接转移,开始,调用指令分:,长调用,和,短调用,。,1.LJMP cadd;长跳转,功能,:把指令结束后的下一地址值与指定的偏移量相加,送到PC中,实现转移。,例,PC值 指令目标码,20F4 LJMP INITE7,1201,20F7 ,2209INIT:LD 20H,#0C000HA100C020,从20F7H到2209H,偏移量为,0112,H,因此,指令的目标码为E71201。,开始,2.SJMP cadd;短跳转,功能,:,把本指令结束后的下一个地址与指定的偏 移量相加,送到PC中,形成跳转。,例,PC值 指令目标码,21FC SJMP INIT200B,21FE ,2209INIT:LD 20H,#0C000HA100C020,上述指令中偏移量为:2209H21FEH=000BH。因此目标码为,200BH,。,开始,3.BRwreg;间接转移,功能,:把由wreg代表的字寄存器内容作为转移的目的地址。,例,设AX=2020H,,BRAX;指令执行后,PC=2020H。,4.Lcallcadd;长调用,功能,:,把PC值(返回地址)压入栈中,并将本指令结束后的下一地址与偏移量相加,其结果作为调用地址送入PC。,开始,6.RET;从子程序返回,功能,:将栈顶的内容(即返回地址)弹出到PC,且堆栈指针SP+2,7.TRAP ;软件陷井指令,功能,:执行此指令造成一次中断调用,相应的中断向量为2010H。指令操作不受PSW中的中断允许标志的影响。此指令供Intel开发工具用。,开始,5.Scallcadd;短调用,功能,:把PC值(返回地址)压入栈中,并将本指令结束后的下一地址与指令中给出的11位(包括1个符号位)偏移量相加,其结果作为调用地址,送入PC。,六、条件转移指令,此类指令是根据条件,满足或不满足,来决定是否转移。,根据某一个标志是,0,或是,1,转移;,两个标志位“相与”条件转移;,两个标志位“相或”条件转移;,某个字节寄存器的任一位为,1,或,0,转移;,循环控制转移。,Z,N,C,V,VT,ST,条件转移指令对状态标志的影响:,开始,1.JCcadd;进位标志C为1则转移,功能:若进位标志C=1,则转移到cadd处;若C=0,则顺序执行下一条指令。,3.JEcadd;Z标志为1(相等)则转移,功能:如果标志Z=1,转移到cadd;若Z=0,顺序执行下一条指令。,2.JNCcadd;进位标志C为0则转移,功能:若C=0,则转移到cadd处;若C=1,则顺序执行下一条指令。,4.JNEcadd;Z标志为0(不相等)则转移,功能:如果标志Z=0,转移到cadd;若Z=1,顺序执行下一条指令。,开始,5.JGEcadd;大于或等于(带符号数)时转移,功能:如果标志N=0,则转移到cadd;若N=1,顺序执行下一条指令。,6.JLTcadd;小于(带符号数)时转移,功能:如果标志N=1,转移到cadd;若N=0,顺序执行下一条指令。,8.JNVcadd;溢出标志不为1时转移,功能:如果标志V=0,转移到cadd;若V=1,顺序执行下一条指令。,开始,7.JVcadd;溢出标志为1时,功能:如果标志V=1,转移到cadd;若V=0,顺序执行下一条指令。,10.JNVTcadd;溢出陷井标志不为1时转移,功能:如果标志VT=0,转移到cadd;若VT=1,顺序执行下一条指令。,11.JSTcadd;粘着位标志为1时跳转,功能:如果标志ST=1,转移到cadd;若ST=0,顺序执行下一条指令。,9.JVTcadd;溢出陷井标志为1则转移,功能:如果标志VT=1,转移到cadd;若VT=0,顺序执行下一条指令。,开始,12.JNSTcadd;粘着位不为1时转移,功能:如果标志ST=0,转移到cadd;若ST=1,顺序执行下一条指令。,13.JGTcadd;带符号数大于零时转移,功能:如果标志N=0且Z=0,则转移到cadd;否则顺序执行下一条指令。,15.JHcadd;无符号数大于零有进位时转移,功能:如果标志C=1且Z=0,则跳转到cadd;否则顺序执行下一条指令。,14.JLEcadd;带符号数小于或等于零时转移,功能:如果标志N=1或Z=1则转移到cadd,否则顺序执行下一条指令。,16.JNHcadd;无符号数不高于零时转移,功能:如果标志C=0或Z=1则转移到cadd;即无符号数无进位或结果为零时转移。,开始,17.JBCbreg,bitno,cadd;指定位为0时转移,功能:测试由breg的第bitno位,若该位为0,则转移到cadd;若不为0,顺序执行下一条指令。,例,JBCAL,7,AS2,若AL的第7位为0,则转移到标号AS2;否则顺序执行。,18.JBSbreg,bitno,cadd;指定位为1时转移,功能:测试由breg的第bitno位,若该位为1,则转移到cadd;若不为1,顺序执行下一条指令。,开始,19.DJNZbreg,cadd;减1非零跳转,功能:把breg的内容减1,若结果为0,则顺序执行下一条指令;若结果不为0,则跳转到cadd。,注意,:,对某些特殊功能寄存器的位测试以后,要破坏寄存器的内容,使用时要注意。对于非特殊功能寄存器,测试后寄存器内容不变。,开始,七、单寄存器指令,单寄存器指令包括以下指令:,寄存器增1,,,寄存器减1,,,操作数取反,,,寄存器清0,,,整数取反,以及,整数带符号扩展,等。这些指令根据操作结果影响PSW中的状态标志。,1.INCwreg;字增1,功能:把
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服