第三章指令系统.ppt
《第三章指令系统.ppt》由会员分享,可在线阅读,更多相关《第三章指令系统.ppt(115页珍藏版)》请在三一办公上搜索。
1、第三章 指令系统,3.1 操作数类型及寻址方式,3.3 指令系统详解,3.2 程序状态字,3.4 例题,汇编语言原程序的格式,标号:操作码 操作数1,操作数2,操作数3;注释,3.1 操作数类型及寻址方式,一、操作数类型,对8098单片机而言,可以采用7种类型的操作数,它们是:,18位无符号数(字节型)数据格式:D7D0取值范围:0255(十进制表示)。,216位无符号数(字型)数据格式:D15D0取值范围:065535(十进制表示)。,332位无符号数(双字型)数据格式:D31D0取值范围:0(232 1)(十进制表示)。,4.8位带符号数(短整数)数据格式:D7D0,D7是符号位。取值范围
2、:128+127(十进制表示)。,6.32位带符号数(长整数)数据格式:D31D0。取值范围:231+(231 1)(十进制表示)。,5.16位带符号数(整数)数据格式:D15D0,D15是符号位。取值范围:32768+32767(十进制表示)。,7一位数(位型)在数据中,位是最基本的单位。若想了解单片机内部数据存储器RAM中任何一位的状态,可以通过该位所在字节的地址及其位号而对其测试。,二、寻址方式,对于96系列单片机,可通过六种基本寻址方式来实现地址空间内操作数的访问:,寄存器直接寻址;间接寻址;自动增量间接寻址;立即寻址;短变址寻址;长变址寻址。,这六种寻址方式属单片机硬件所支持的基本寻
3、址方式,与某些专用寄存器结合还可形成一些其他的寻址方式,如零寄存器寻址和堆栈指针寄存器寻址。,寄存器直接寻址在指令中可以有一个到三个操作数采用寄存器直接寻址方式,取决于指令。寄存器地址必须遵循操作数类型的定位规则。,例1INCBCL;CL=CL+1,为字节型操作,无定位规则。,例2MUL20H,26H;20H,21H单元及26H,27H单元中各存放一个16位数,乘积(32位)放在20H23H中。,例3ADDAX,BX,CX;AX BXCX,2.间接寻址要求访问的操作数地址是一个存放在寄存器文 件中的WORD变量,通过它可去寻找操作数。用间接寻址方式能够在8098地址空间中的任何 地点找到操作数
4、。一条指令中,只能有一个操作数用间接寻址方 式,其余的操作数必须用寄存器直接寻址。,例1LDAX,AX;AX内容决定的地址单元内容存放到AX。,例2ADDBAL,BL,CX;CX决定的地址单元内容加上BL的内容,结果放在AL中。,例3POPAX;将栈顶上的一个字弹出到AX 内容所决定的字地址单元,且SP SP2。,3.自动增量间接寻址作为地址指针的字变量在对操作数寻址后,自动增值调整,增值大小取决于操作数的类型。,例1LDAX,BX+;将BX决定的地址空间的内 容传送到AX,且 BX BX2。,例2LDBAH,BX+;将BX决定的地址空间的内 容传送到AH,且 BX BX1。,4.立即寻址该寻
5、址方式允许一个操作数直接从一个指令段里取得。一条指令只能包含一个立即数,其余操作数必须用寄存器直接寻址。,例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.长变址寻址这种寻址方式类似于
6、短变址寻址方式,不同之处在于指令的第二个字段是16位,与WORD字变量相加后,形成一个操作数的有效地址。这里不需要进行符号扩展。一条指令只能含有一个长变址寻址的参数,其余操作数必须用寄存器直接寻址。,例ADDAX,BX,TABLECX;AXBXMEM_(CXTABLE),ADDBAL,BL,TABLECX;AL BLMEM_(CXTABLE),7.零寄存器寻址在8098单片机硬件结构里,寄存器文件里开始的二个字固定为零,称之为零寄存器。除了给运算和比较提供常数零之外,还能作为长变址寻址中的WORD字变量,派生出零寄存器寻址方式。这种零寄存器与寻址方式的结合,使存储器中的任何一个单元都能被直接地
7、寻址到。,例1 LDAX,8098H0;将地址为8098H单元的内容送到AX寄存器。,例2 LDBAH,26H0;将片内寄存器阵列中26H字节单元内容送到AH中,例3POP2200H0;将栈顶的内容弹出送入2200H单元和2201H单元,且SP SP2。,8.堆栈指针寄存器寻址堆栈指针寻址是将堆栈指针SP作为间接寻址寄存器,其中的内容作为操作数地址。这种寻址方式为访问堆栈中的数据提供了方便。例如:可用堆栈指针作为间接寻址的字变量去访问栈顶,或用于短变址方式中以访问堆栈中的数据。,例1 PUSHSP;将栈顶两字节再次压入堆栈。,例2 LDAX,8SP;将栈顶下第8个单元和第9单元的内容送入AX中
8、,3.2 程序状态字寄存器PSW,程序状态字PSW保存了用户程序运行所需的状态信息。它的低8位称为中断屏蔽寄存器,高8位保存有7种状态信息,它们可以成为支配程序走向的依据,编制软件时十分有用。而这些状态是由单片机在执行程序的过程中自动形成的。,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 进位标志位
9、单片机进行算术运算,可能出现进位或借位。有进位时,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
10、”或位为“1”转移指令;(8)循环控制指令;(9)单寄存器指令;(10)移位指令;(11)特殊控制指令;(12)规格化指令。,指令系统的有关约定,不同性质指令的操作用不同的助记符表示,而关于字节、字、双字运算的区别采用以下标志:B字节运算(8位);L双字运算(32位)。助记符中最后一个英文字母不是B或L,代表字运算。,8098单片机的指令系统,允许使用13个操作数。用汇编语言书写时,可用符号名表示,或者是具体数字。操作数又可分为目的操作数D(Destination)和源操作数S(Source)。指令的常见形式:,无操作数指令:助记符单操作数指令:助记符D(或S)双操作数指令:助记符D,S三操作
11、数指令:助记符D,S1,S2,无符号数乘法与除法指令的操作码为两个字节,其它指令的操作码为一个字节。两个字节的操作码,其中第一个字节恒为FEH。,位型操作数的使用有如下限制:在指令系统中只能对PSW中的某些标志位,置“1”或清“0”。对于其他的位型操作数,只能测试,不能设置。测试时必须指明字节地址和该字节中的位号。,操作数的通用表示法,如下表所示。,PSW中6个标志位的状态表示方法如下:,为便于编程和讲解例题,对寄存器文件中的8个存储单元分别作出了定义,它们的名称与地址如下:,它们可以构成8个字节型寄存器,或4个字型寄存器,还可以构成两个双字寄存器。,不同的寻址方式下,各种操作数的表达格式如下
12、:,指令系统中使用的其它符号如下:,一、数据传送指令,这类指令用于片内寄存器之间的数据传送,立即数向寄存器的数据传送,寄存器和存储器之间的数据传送。这类指令均为两个操作数。,数据传送指令对状态标志的影响:,1.LDwreg,waop;字传送,功能:把waop代表的字操作数送到寄存器文件的字寄存器wreg中。,例l立即数传送LDAX,#1234H;AX1234H,例2寄存器传送LDAX,BX;AXBX,例3间接寻址传送LDBX,#1234H;BX1234HLDAX,BX;把存储器单元1234H1235H 中的内容送入AX。,例4间接增量传送LDBX,#1234HLDAX,BX+;存储器单元123
13、4H1235H中的 内容送入AX,且BX内容加2。,例5短变址传送LDBX,#1234HLDAX,12HBX;存储器单元1246H1247H中 的内容送入AX。,例6长变址传送LDBX,#1234HLDAX,1234HBX;把存储器单元2468H2469H 中的内容送入AX。,2.LDBbreg,baop;字节传送,功能:把baop代表的字节操作数送到寄存器文件的字节寄存器中。,例1立即数传送LDBAL,#12H;AL12H。,例2寄存器传送LDBAL,BL;BX的低位字节送入AX的低 位字节。,例3间接寻址传送LDBX,#1234HLDBAL,BX;1234H单元中的数送入AL,例4间接增量
14、传送LDBX,#1234HLDBAL,BX+;1234H单元中的数送入AL;BX寄存器增1,例5短变址传送LDBX,#1234HLDBAL,12HBX;1246H单元中的数送入AL,例6长变址传送LDBX,#1234HLDBAL,1234HBX;2468H单元中的数送入AL,3.ST wreg,waop;字存储,功能:把wreg表示的字寄存器的内容送到由waop表示的字寄存器中或字存储单元中,waop不能是立即数。,例1STAX,BX;AX的内容存BX,例2STAX,BX+;AX的内容存放由BX内容指出 的存储单元,且BX内容加2。,4.STB breg,baop;字节存储,功能:把breg表
15、示的字节寄存器的内容送到由baop表示的字节寄存器中或字节存储单元中,baop不能是立即数。,例1 LDAX,#1234HSTBAL,AX;将34H存放到1234H单元。,例2LDAX,#1234HSTBAH,1234H0;将AH的内容(12H)存放到 1234H单元。,5.LDBSE wreg,baop;短整数变整数传送,功能:把baop代表的源字节操作数作符号扩展送入由wreg代表的目标寄存器中。,例1LDBBL,#12HLDBSEAX,BL;AX0012H,例2LDBSEAX,#8AH;AX0FF8AH,6.LDBZE wreg,baop;字节转换为字,功能:将baop代表的源字节操作数
16、作零扩展后送入目标字寄存器中。,例1寄存器传送LDBBL,#12HLDBZEAX,BL;AX0012H,例2间接寻址传送LD BX,#1234HLDBZEAX,BX;存储器1234H单元中的数扩展后送AX,二、算术运算指令,算术运算指令包括加法、减法、乘法、除法、比较指令。这些指令都要影响程序状态字中的状态标志。,指令包括以下类型:16位加、减、比较;8位加、减、比较;8位乘8位乘法;16位乘16位得32位积的乘法;32位除以16位的除法;16位除以8位的除法;乘除运算又分带符号和不带符号运算。,1.ADD wreg,waop;双操作数字相加,功能:把wreg代表的字寄存器内容与waop代表的
17、字操作数相加,结果在wreg中。,对状态标志的影响:,设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内容不变。,对状态标志的影响:,设AX=0123H,BX=1234H,CX=2468H,1
18、234H=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中。,对状态标志的影响:,例1 ADDBAL,CL;CL和AL相加,结果送入AL,例2 ADDBAL,#12H;12H与AL的内容相加,结果 送入AL。,例3 ADDBAL,BX;将BX所指向的单元的内容与 AL相加,结果存入AL。,
19、4.ADDB Dbreg,Sbreg,baop;三操作数字节相加,功能:将Sbreg代表的字节寄存器内容加上baop代表的字节操作数,结果存入Dbreg代表的字节寄存器中。Sbreg与baop内容不变。,对状态标志的影响:,例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相加,结果在wre
20、g中。相加之和不为0时,零标志位Z清零;相加之和为0时,Z不变(即不能将Z置“1”)。,对状态标志的影响:,例 ADDC BX,DX;将BX内容、DX内容及进位标志值三者相加,结果送入BX中。,6.ADDCB breg,baop;带进位的字节相加,功能:把breg代表的字节寄存器内容与baop代表的字节操作数及进位标志C相加,结果在breg中。相加之和不为0时,零标志位Z清零;相加之和为0时,Z不变(即不能将Z置“1”)。,对状态标志的影响:,例:ADDCB AL,BL,ADDCB AL,#26H,ADDCB AL,BX,ADDCBAL,BX+,ADDCBAL,8098HBX,7.SUB wr
21、eg,waop;双操作数字相减,功能:把wreg代表的字寄存器内容与waop代表的字操作数相减,结果放在wreg中。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例:LDAX,#1234HLDBX,#6789HSUBBX,AX;BX=6789H1234H=5555H;C=1,8.SUB Dwreg,Swreg,waop;三操作数字相减,功能:把Swreg代表的字寄存器内容与waop代表的字操作数相减,结果放在Dwreg中。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例:LDAX,#1234HLDBX,#6789HSUBCX,BX,AX;CX=678
22、9H1234H=5555H;C=1,9.SUBB breg,baop;双操作数字节相减,功能:把breg代表的字节寄存器内容与baop代表的字节操作数相减,结果放在breg中。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例:LD AX,#1234HSUBB AH,AL;AH=12H34H=0DEH;C=0,10.SUBB Dbreg,Sbreg,baop;三操作数字节相减,功能:把Sbreg代表的字节寄存器内容与baop代表的字节操作数相减,结果放在Dbreg中。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例:SUBBAL,BL,CL,SUBBA
23、L,BL,#05H,SUBBAL,BL,CX,SUBBAL,BL,5CX,SUBBAL,BL,1234HCX,11.SUBC wreg,waop;带借位的字减法,功能:将wreg代表的字寄存器内容减去waop代表的字操作数,再减去状态标志C的反,结果放在wreg中。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例:LDAX,#4488HLDBX,#1122HSUBAX,BX;AX=4488H1122H=3366H;C=1SUBCBX,AX;BX=1122H3366H=0DDBCH;C=0,12.SUBCB breg,baop;带借位的字节减法,功能:将breg代表的字节寄
24、存器内容减去baop代表的字节操作数,再减去状态标志C的反,结果放在breg中。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例:SUBBAH,ALSUBCBAH,AL,13.CMP wreg,waop;字比较,功能:把wreg代表的字寄存器内容与waop代表的字操作数相减,wreg和waop的内容不变,仅改变标志位。wreg=waop时Z=1,N=0,C=1wregwaop时Z=0,N=0,C=1,对状态标志的影响:,例:设AX=1234H,BX=1235H,CMP AX,BX;指令执行后,AX,BX不变,Z=0,C=0,N=1,V=0。CMP AX,#1234H;立即
25、数比较 CMP AX,BX;间接寻址比较 CMP AX,BX+;间接增量比较,14.CMPB breg,baop;字节比较,功能:把breg代表的字节寄存器内容与baop代表的字操作数相减,breg和baop的内容不变,仅改变标志位。breg=baop时Z=1,N=0,C=1bregbaop时Z=0,N=0,C=1,对状态标志的影响:,例:CMPBAL,BLCMPBAL,#5CMPBAL,BX CMPBAL,BX+CMPBAL,5BXCMPBAL,8031HBX,15.MUL Lreg,waop;整数乘法(双操作数),功能:Lreg代表的寄存器为一个32位寄存器,它的低16位为一个整数,将这个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 指令系统
链接地址:https://www.31ppt.com/p-4852613.html