第三章指令系统.ppt

上传人:本田雅阁 文档编号:3139390 上传时间:2019-07-16 格式:PPT 页数:115 大小:1.58MB
返回 下载 相关 举报
第三章指令系统.ppt_第1页
第1页 / 共115页
第三章指令系统.ppt_第2页
第2页 / 共115页
第三章指令系统.ppt_第3页
第3页 / 共115页
第三章指令系统.ppt_第4页
第4页 / 共115页
第三章指令系统.ppt_第5页
第5页 / 共115页
点击查看更多>>
资源描述

《第三章指令系统.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

2、,D7是符号位。 取值范围: 128+127(十进制表示)。,6. 32位带符号数(长整数) 数据格式:D31D0。 取值范围: 231+(231 1)(十进制表示)。,5. 16位带符号数(整数) 数据格式:D15D0,D15是符号位。 取值范围: 32768+32767(十进制表示)。,7一位数(位型) 在数据中,位是最基本的单位。若想了解单片机内部数据存储器RAM中任何一位的状态,可以通过该位所在字节的地址及其位号而对其测试。,二、寻址方式,对于96系列单片机,可通过六种基本寻址方式来实现地址空间内操作数的访问:,寄存器直接寻址; 间接寻址; 自动增量间接寻址; 立即寻址; 短变址寻址;

3、 长变址寻址。,这六种寻址方式属单片机硬件所支持的基本寻址方式,与某些专用寄存器结合还可形成一些其他的寻址方式,如零寄存器寻址和堆栈指针寄存器寻址。,寄存器直接寻址 在指令中可以有一个到三个操作数采用寄存器直接寻址方式,取决于指令。寄存器地址必须遵循操作数类型的定位规则。,例1 INCB CL ; CL=CL+1,为字节型操作, 无定位规则。,例2 MUL 20H, 26H ; 20H,21H单元及26H,27H 单元中各存放一个16位数,乘 积(32位)放在20H23H中。,例3 ADD AX, BX, CX ; AX BXCX,2. 间接寻址 要求访问的操作数地址是一个存放在寄存器文 件中

4、的WORD变量,通过它可去寻找操作数。 用间接寻址方式能够在8098地址空间中的任何 地点找到操作数。 一条指令中,只能有一个操作数用间接寻址方 式,其余的操作数必须用寄存器直接寻址。,例1 LD AX, AX ; AX内容决定的地址单元内 容存放到AX。,例2 ADDB AL, BL, CX ; CX决定的地址单元内容加上 BL的内容,结果放在AL中。,例3 POP AX ; 将栈顶上的一个字弹出到AX 内容所决定的字地址单元, 且SP SP2。,3. 自动增量间接寻址 作为地址指针的字变量在对操作数寻址后,自动增值调整,增值大小取决于操作数的类型。,例1 LD AX, BX+ ; 将BX决

5、定的地址空间的内 容传送到AX,且 BX BX2。,例2 LDB AH, BX+ ; 将BX决定的地址空间的内 容传送到AH,且 BX BX1。,4. 立即寻址 该寻址方式允许一个操作数直接从一个指令段里取得。一条指令只能包含一个立即数,其余操作数必须用寄存器直接寻址。,例1 ADD AX, #1230H ; AXAX1230H,例2 ADDB AL, #30H ; AL AL30H,5. 短变址寻址 指令中含有一地址段和一8位偏移量段。 地址段选定寄存器组合中某字寄存器,该寄存器内容即为16位基地址。 8位偏移量为有符号数,它与基地址之代数和可形成操作数有效地址。这样,有效地址的范围可以从基

6、地址前128个字节到后127个字节。,例 LD AX, 26HBX ; AXMEM_(BX26H),ADDB AL, BL,0FDHCX ; AL BLMEM_(CX-3),6. 长变址寻址 这种寻址方式类似于短变址寻址方式,不同之处在于指令的第二个字段是16位,与WORD字变量相加后,形成一个操作数的有效地址。这里不需要进行符号扩展。一条指令只能含有一个长变址寻址的参数,其余操作数必须用寄存器直接寻址。,例 ADD AX, BX,TABLECX ; AXBXMEM_(CXTABLE),ADDB AL, BL,TABLECX ; AL BLMEM_(CXTABLE),7. 零寄存器寻址 在80

7、98单片机硬件结构里,寄存器文件里开始的二个字固定为零,称之为零寄存器。除了给运算和比较提供常数零之外,还能作为长变址寻址中的WORD字变量,派生出零寄存器寻址方式。这种零寄存器与寻址方式的结合,使存储器中的任何一个单元都能被直接地寻址到。,例1 LD AX, 8098H0 ; 将地址为8098H单元的内 容送到AX寄存器。,例2 LDB AH, 26H0 ; 将片内寄存器阵列中26H 字节单元内容送到AH中,例3 POP 2200H0 ; 将栈顶的内容弹出 送入2200H单元和2201H 单元,且SP SP2。,8. 堆栈指针寄存器寻址 堆栈指针寻址是将堆栈指针SP作为间接寻址寄存器,其中的

8、内容作为操作数地址。这种寻址方式为访问堆栈中的数据提供了方便。例如:可用堆栈指针作为间接寻址的字变量去访问栈顶,或用于短变址方式中以访问堆栈中的数据。,例1 PUSH SP ; 将栈顶两字节再次压入堆栈。,例2 LD AX, 8SP ; 将栈顶下第8个单元和第9单 元的内容送入AX中,3.2 程序状态字寄存器PSW,程序状态字PSW保存了用户程序运行所需的状态信息。 它的低8位称为中断屏蔽寄存器,高8位保存有7种状态信息,它们可以成为支配程序走向的依据,编制软件时十分有用。而这些状态是由单片机在执行程序的过程中自动形成的。,3V 溢出标志位 当单片机的运算结果超出前述数据类型所定义的范围时,V

9、=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 中断允许标志

10、位 I=1表示允许中断发生,I=0则为禁止中断。这两种状态是依靠单片机分别执行开中断和关中断指令实现的。,3.3 指令系统详解,8098单片机指令按功能可分成下列几类: (l) 数据传送指令; (2)算术运算指令; (3) 逻辑操作指令; (4)栈操作指令; (5)无条件转移和调用指令; (6)条件转移指令; (7)位为“0”或位为“1”转移指令; (8)循环控制指令; (9)单寄存器指令; (10)移位指令; (11)特殊控制指令; (12)规格化指令。,指令系统的有关约定,不同性质指令的操作用不同的助记符表示,而关于字节、字、双字运算的区别采用以下标志: B字节运算(8位); L双字运算(

11、32位)。 助记符中最后一个英文字母不是B或L,代表字运算。,8098单片机的指令系统,允许使用13个操作数。用汇编语言书写时,可用符号名表示,或者是具体数字。操作数又可分为目的操作数D(Destination)和源操作数S(Source)。指令的常见形式:,无操作数指令:助记符 单操作数指令:助记符 D(或S) 双操作数指令:助记符 D,S 三操作数指令:助记符 D,S1,S2,无符号数乘法与除法指令的操作码为两个字节,其它指令的操作码为一个字节。两个字节的操作码,其中第一个字节恒为FEH。,位型操作数的使用有如下限制:在指令系统中只能对PSW中的某些标志位,置“1”或清“0”。对于其他的位

12、型操作数,只能测试,不能设置。测试时必须指明字节地址和该字节中的位号。,操作数的通用表示法,如下表所示。,PSW中6个标志位的状态表示方法如下:,为便于编程和讲解例题,对寄存器文件中的8个存储单元分别作出了定义,它们的名称与地址如下:,它们可以构成8个字节型寄存器,或4个字型寄存器,还可以构成两个双字寄存器。,不同的寻址方式下,各种操作数的表达格式如下:,指令系统中使用的其它符号如下:,一、数据传送指令,这类指令用于片内寄存器之间的数据传送,立即数向寄存器的数据传送,寄存器和存储器之间的数据传送。这类指令均为两个操作数。,数据传送指令对状态标志的影响:,1. LD wreg,waop ;字传送

13、,功能:把waop代表的字操作数送到寄存器文件的字寄存器wreg中。,例l 立即数传送 LD AX,#1234H ;AX1234H,例2 寄存器传送 LD AX,BX ;AXBX,例3 间接寻址传送 LD BX,#1234H ;BX1234H LD AX,BX ;把存储器单元1234H1235H 中的内容送入AX。,例4 间接增量传送 LD BX,#1234H LD AX,BX+ ;存储器单元1234H1235H中的 内容送入AX,且BX内容加2。,例5 短变址传送 LD BX,#1234H LD AX,12HBX ;存储器单元1246H1247H中 的内容送入AX。,例6 长变址传送 LD

14、BX,#1234H LD AX,1234HBX ;把存储器单元2468H2469H 中的内容送入AX。,2. LDB breg,baop ;字节传送,功能:把baop代表的字节操作数送到寄存器文件的字节寄存器中。,例1 立即数传送 LDB AL,#12H ;AL12H 。,例2 寄存器传送 LDB AL,BL ;BX的低位字节送入AX的低 位字节 。,例3 间接寻址传送 LD BX,#1234H LDB AL,BX ;1234H单元中的数送入AL,例4 间接增量传送 LD BX,#1234H LDB AL,BX+ ;1234H单元中的数送入AL ;BX寄存器增1,例5 短变址传送 LD BX,

15、#1234H LDB AL,12HBX ;1246H单元中的数送入AL,例6 长变址传送 LD BX,#1234H LDB AL,1234HBX ;2468H单元中的数送入AL,3. ST wreg,waop ;字存储,功能:把wreg表示的字寄存器的内容送到由waop表示的字寄存器中或字存储单元中,waop不能是立即数。,例1 ST AX,BX ;AX的内容存BX,例2 ST AX,BX+ ;AX的内容存放由BX内容指出 的存储单元,且BX内容加2。,4. STB breg,baop ;字节存储,功能:把breg表示的字节寄存器的内容送到由baop表示的字节寄存器中或字节存储单元中,baop

16、不能是立即数。,例1 LD AX,#1234H STB AL,AX ;将34H存放到1234H单元 。,例2 LD AX,#1234H STB AH,1234H0 ;将AH的内容(12H)存放到 1234H单元。,5. LDBSE wreg,baop ;短整数变整数传送,功能:把baop代表的源字节操作数作符号扩展送入由wreg代表的目标寄存器中。,例1 LDB BL,#12H LDBSE AX,BL ;AX0012H,例2 LDBSE AX,#8AH ;AX0FF8AH,6. LDBZE wreg,baop ;字节转换为字,功能:将baop代表的源字节操作数作零扩展后送入目标字寄存器中。,例

17、1 寄存器传送 LDB BL,#12H LDBZE AX,BL ;AX0012H,例2 间接寻址传送 LD BX, #1234H LDBZE AX,BX ;存储器1234H单元 中的数扩展后送AX,二、算术运算指令,算术运算指令包括加法、减法、乘法、除法、比较指令。这些指令都要影响程序状态字中的状态标志。,指令包括以下类型: 16位加、减、比较; 8位加、减、比较; 8位乘8位乘法; 16位乘16位得32位积的乘法; 32位除以16位的除法; 16位除以8位的除法; 乘除运算又分带符号和不带符号运算。,1. ADD wreg,waop ;双操作数字相加,功能:把wreg代表的字寄存器内容与wa

18、op代表的字操作数相加,结果在wreg中 。,对状态标志的影响:,设AX=1357H,BX=2468H ,2468H=11H,2469H=22H,例1 ADD AX,BX ;该指令执行后,AX=37BFH, BX内容不变,例2 ADD AX,#1357H ;执行后,AX=26AEH。,例3 ADD AX,BX ;执行后,AX=3568H, BX内容不变。,2. ADD Dwreg,Swreg,waop ;三操作数字相加,功能:将Swreg代表的字寄存器内容加上waop代表的字操作数,结果存入Dwreg代表的字寄存器中。Swreg与waop内容不变。,对状态标志的影响:,设AX=0123H,BX

19、=1234H ,CX=2468H,1234H=11H,1235H=22H,例1 ADD AX,BX,#1234H ;AX=2468H,BX不变。,例2 ADD AX,BX,CX ;AX=369CH, BX和 CX不变。,例3 ADD AX,AX,BX ;AX=2334H,BX不变。,3. ADDB breg,baop ; 双操作数字节相加,功能:把breg代表的字节寄存器内容与baop代表的字节操作数相加,结果在breg中 。,对状态标志的影响:,例1 ADDB AL,CL ;CL和AL相加,结果送入AL,例2 ADDB AL,#12H ;12H与AL的内容相加,结果 送入AL 。,例3 AD

20、DB AL,BX ;将BX所指向的单元的内容与 AL相加,结果存入AL 。,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,w

21、aop ;带进位的字相加,功能:把wreg代表的字寄存器内容与waop代表的字操作数及进位标志C相加,结果在wreg中 。相加之和不为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

22、,ADDCB AL,#26H,ADDCB AL,BX,ADDCB AL,BX+,ADDCB AL,8098HBX,7. SUB wreg,waop ;双操作数字相减,功能:把wreg代表的字寄存器内容与waop代表的字操作数相减,结果放在wreg中 。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例: LD AX,#1234H LD BX,#6789H SUB BX,AX ;BX=6789H1234H=5555H ;C=1,8. SUB Dwreg, Swreg, waop ;三操作数字相减,功能:把Swreg代表的字寄存器内容与waop代表的字操作数相减,结果放在Dwr

23、eg中 。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例: LD AX,#1234H LD BX,#6789H SUB CX,BX,AX ;CX=6789H1234H=5555H ;C=1,9. SUBB breg,baop ;双操作数字节相减,功能:把breg代表的字节寄存器内容与baop代表的字节操作数相减,结果放在breg中 。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例: LD AX,#1234H SUBB AH,AL ;AH=12H34H=0DEH ;C=0,10. SUBB Dbreg, Sbreg, baop ;三操作数字节相减,

24、功能:把Sbreg代表的字节寄存器内容与baop代表的字节操作数相减,结果放在Dbreg中 。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例: SUBB AL,BL,CL,SUBB AL,BL,#05H,SUBB AL,BL,CX,SUBB AL,BL,5CX,SUBB AL,BL,1234HCX,11. SUBC wreg,waop ;带借位的字减法,功能:将wreg代表的字寄存器内容减去waop代表的字操作数,再减去状态标志C的反,结果放在wreg中 。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例: LD AX,#4488H LD BX,#

25、1122H SUB AX,BX ; AX=4488H1122H=3366H ; C=1 SUBC BX,AX ; BX=1122H3366H=0DDBCH ; C=0,12. SUBCB breg,baop ;带借位的字节减法,功能:将breg代表的字节寄存器内容减去baop代表的字节操作数,再减去状态标志C的反,结果放在breg中 。如果够减,状态标志C为1;如果不够减,C为0。,对状态标志的影响:,例: SUBB AH,AL SUBCB AH,AL,13. CMP wreg,waop ;字比较,功能:把wreg代表的字寄存器内容与waop代表的字操作数相减,wreg和waop的内容不变,仅

26、改变标志位。 wreg=waop时Z=1,N=0,C=1 wregwaop时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 ;立即数比较 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,

27、N=0,C=1,对状态标志的影响:,例: CMPB AL,BL CMPB AL,#5 CMPB AL,BX CMPB AL,BX+ CMPB AL,5BX CMPB AL,8031HBX,15. MUL Lreg,waop ;整数乘法(双操作数),功能:Lreg代表的寄存器为一个32位寄存器,它的低16位为一个整数,将这个整数与waop代表的16位操作数进行带符号乘法运算,结果为32位,存入Lreg。,对状态标志的影响:,例1 LD AX,#0101H LD BX,#0202H MUL AX,BX ; 两数相乘,32位结果存入BX, 即BX=00020402H。 结果地址分配:20H:02H;

28、 21H:04H; 22H:02H; 23H:00H,例2 MUL AX,#8098H MUL BX,AX MUL BX,AX+,16. MUL Lreg, wreg, waop ; 整数乘法(三操作数),功能:把由wreg代表的寄存器字内容和由waop代表的字操作数进行带符号乘法运算,结果存入32位目的寄存器Lreg中。,对状态标志的影响:,例 LD AX, #0102H LD BX, #0203H MUL CX, AX, BX ;两数相乘,32位的结果存入 CX, CX=00020706H。,指令执行结果: 寄存器地址:27H 26H 25H 24H 寄存器内容:00H 02H 07H 0

29、6H,17. MULB wreg,baop ;短整数乘法(双操作数),功能:wreg为一字寄存器,将其低位字节内容与baop代表的字节操作数进行带符号乘法运算,16位结果存入目的寄存器wreg中。,对状态标志的影响:,例 LDB AL,#12H LDB BL,#34H MULB AX,BL ;两数相乘,结果存入AX, ;AX=03A8H。,18. MULB wreg, breg, baop ;短整数乘法(三操作数),功能:把由breg代表的寄存器字节和baop代表的操作数字节进行带符号乘法,16位结果存入目的寄存器wreg中,breg、baop不变。,对状态标志的影响:,例1 LDB AH,#

30、12H LDB BL,#34H MULB AX,AH,BL ; AX AH BL,例2 LDB AH,#2H LD BX,#1234H MULB AX,AH,02BX ; AX AH1236H,19. MULU Lreg,waop ; 无符号字乘法(双操作数),功能:Lreg代表的是一个32位寄存器,它的低位字(16位)与waop代表的字操作数进行无符号乘法,32位结果存入Lreg中。,对状态标志的影响:,本指令与 MUL Lreg,waop 指令类似,其区别仅在于本指令为无符号数运算。,20. MULU Lreg, wreg, waop ;无符号字乘法( 三操作数 ),功能:把wreg代表的

31、字寄存器内容与waop代表的字操作数进行无符号乘法,32位结果存入目的寄存器Lreg中。,对状态标志的影响:,该指令与MUL指令类似,其区别仅在于该指令为无符号数运算。,21. MULUB wreg,baop ;无符号字节乘法( 双操作数 ),功能:wreg为一字寄存器,将其低字节内容与baop代表的字节操作数进行无符号乘法,16位结果存入wreg中 。,对状态标志的影响:,22. MULUB wreg, breg, baop ;无符号字节乘法( 三操作数 ),功能:把breg代表的寄存器字节与baop代表的操作数字节进行无符号乘法,16位积送入wreg中。,对状态标志的影响:,23. DIV

32、 Lreg,waop ;整数除法(带符号),功能:把由Lreg代表的寄存器内容(长整数)带符号除以由waop代表的整数,商存入Lreg的低位字中,余数存入Lreg的高位字中。 当商大于一个字时,V=1,VT=1。,对状态标志的影响:,例 LD CX,#2468H ;CX2468H LD AX,#1234H ;AX1234H LD BX,#0001H ;BX0001H DIV AX,CX 指令执行后,商为0007H,在AX中;余数为135CH,在BX中。,24. DIVB wreg,baop ;短整数除法(带符号),功能:把由wreg代表的寄存器内容(整数)带符号除以由baop代表的短整型数,商

33、存入wreg的低字节,余数存入wreg的高字节。 当商大于一个短整数时,V=1,VT=1。,对状态标志的影响:,例 LD AX,#1234H LDB BL,#12H DIVB AX,BL 该指令执行后,商存入AL,余数存入AH。,25. DIVU Lreg,waop ;字除法(无符号),功能:无符号除法运算。把由Lreg代表的无符号寄存器操作数(32位)除以由waop代表的字操作数,商存入Lreg的低字,余数存入Lreg的高字。,对状态标志的影响:,26. DIVUB wreg,baop ;字节除法(不带符号),功能:无符号除法运算。把由wreg代表的无符号寄存器操作数(16位)除以由baop

34、代表的字节操作数,商存入wreg的低字节,余数存入wreg的高字节。,对状态标志的影响:,三、逻辑操作指令,这类指令有“与”、“或”、“异或”三类,每类又分为字操作和字节操作。每种操作都使标志位中的C及V置0,并根据操作结果改变Z和N标志。,1. AND wreg,waop ;字逻辑与(双操作数),功能:把由wreg代表的寄存器字和由waop代表的字操作数进行按位“与”操作,结果放在wreg中。,对状态标志的影响:,例 AND AX,BX,AND AX,#1234H,AND AX,BX+,AND AX,1234HBX,2. AND Dwreg, Swreg, waop ; 字逻辑与(三操作数)

35、,功能:把由Swreg代表的寄存器字和由waop代表的字操作数按位相与,结果放在Dwreg。,对状态标志的影响:,例 AND AX,BX,CX ;AXBXCX,AND AX,AX,#1234H ;AXAX1234H,AND AX,BX,CX,AND AX,BX,CX+,AND AX,BX,12CX,3. ANDB breg,baop ; 字节逻辑与(双操作数),功能:把由breg代表的寄存器字节和baop代表的操作数字节进行按位相与,结果放在breg中。,对状态标志的影响:,例 ANDB AL,BL ;ALALBL,ANDB AL,#12H ;ALAL12H,ANDB AL,BX,ANDB A

36、L,BX+,ANDB AL,12BX,ANDB AL,1234BX,4. ANDB Dbreg, Sbreg, baop ;字节逻辑与(三操作数),功能:把由Sbreg代表的寄存器字节和由baop代表的字节操作数按位相与,结果放在Dbreg。,对状态标志的影响:,例 ANDB AL,BL,#12H,ANDB AL,BL,CX,ANDB AL,BL,CX+,ANDB AL,BL,12CX+,ANDB AL,BL,1234CX+,5. OR wreg,waop ; 字逻辑或,功能:把wreg代表的字寄存器内容和由waop代表的字操作数进行按位“或”操作,结果放在wreg中,或操作没有三个操作数的情

37、况。,对状态标志的影响:,例 LD AX,#1234H LD BX,#5678H OR AX,BX ;AX与BX逻辑或 指令执行后,AX = 567CH,6. ORB breg,baop ; 字节逻辑或,功能:把breg代表的字节寄存器内容和由baop代表的字节操作数进行按位“或”操作,结果放在breg中。,对状态标志的影响:,例 ORB AL,BL,ORB AL,#05H,ORB AL,BX,7. XOR wreg,waop ; 字逻辑异或,功能:把由wreg代表的字寄存器内容,与waop代表的字操作数进行按位“异或”。两操数相应位不同时,该位为1;相应位的相同时,该位为0,异或操作没有三操

38、作数的情况。,对状态标志的影响:,例 设(2468H)= 52H,(2469H)=15H, LD AX,#4234H LD BX,#2468H XOR AX,BX+,指令执行后,AX= 5766H,BX= 246AH,8. XORB breg,baop ; 字节逻辑异或,功能:把由breg代表的寄存器宇节内容,与baop代表的字节操作数进行按位“异或”。两操数相应位不同时,该位为1;相应位的相同时,该位为0。,对状态标志的影响:,例 XORB AL,BL,XORB AL,BX,XORB AL,CX+,XORB AL,1234CX,四、栈操作指令,片内寄存器队列的18H和19H中放堆栈指针SP。

39、,1. PUSH waop ;字进栈,功能:把waop代表的字操作数压入堆栈,SPSP2。,对状态标志的影响:,堆栈是向下生成的,当把一个字压入栈时,SP2;从栈中弹出一个字时,SP2。,2. PUSHF ;PSW标志进栈,功能:将程序状态字PSW压入栈中,然后把PSW清零。SPSP2。,对状态标志的影响:,3. POP waop ;字出栈,功能:把栈顶的字弹出到waop指定的单元中, SPSP+2。,对状态标志的影响:,4. POPF ;PSW标志出栈,功能:栈顶的字弹出到程序状态字PSW中,即恢复原压入栈中的PSW值,SPSP2。,对状态标志的影响:,五、 无条件转移和调用指令,无条件转移

40、指令包括: 长转移、短转移、间接转移,调用指令分: 长调用和短调用。,1. LJMP cadd ;长跳转,功能:把指令结束后的下一地址值与指定的偏移量相加,送到PC中,实现转移。,例 PC值 指令 目标码 20F4 LJMP INIT E71201 20F7 2209 INIT: LD 20H, #0C000H A100C020,从20F7H到2209H,偏移量为0112H,因此,指令的目标码为E71201。,2. SJMP cadd ;短跳转,功能:把本指令结束后的下一个地址与指定的偏 移量相加,送到PC中,形成跳转。,例 PC值 指令 目标码 21FC SJMP INIT 200B 21F

41、E 2209 INIT: LD 20H, #0C000H A100C020,上述指令中偏移量为:2209H21FEH=000BH。因此目标码为200BH。,3. BR wreg ; 间接转移,功能:把由wreg代表的字寄存器内容作为转移的目的地址。,例 设AX= 2020H, BR AX ; 指令执行后,PC = 2020H。,4. Lcall cadd ; 长调用,功能:把PC值(返回地址)压入栈中,并将本指令结束后的下一地址与偏移量相加,其结果作为调用地址送入PC。,6. RET ; 从子程序返回,功能:将栈顶的内容(即返回地址)弹出到PC,且堆栈指针SP+2,7. TRAP ; 软件陷井

42、指令,功能:执行此指令造成一次中断调用,相应的中断向量为2010H。指令操作不受PSW中的中断允许标志的影响。此指令供Intel开发工具用。,5. Scall cadd ; 短调用,功能:把PC值(返回地址)压入栈中,并将本指令结束后的下一地址与指令中给出的11位(包括1个符号位)偏移量相加,其结果作为调用地址,送入PC。,六、条件转移指令,此类指令是根据条件满足或不满足来决定是否转移。,根据某一个标志是0或是1转移;,两个标志位“相与”条件转移;,两个标志位“相或”条件转移;,某个字节寄存器的任一位为1或0转移;,循环控制转移。,条件转移指令对状态标志的影响:,1. JC cadd ; 进位

43、标志C为1则转移,功能:若进位标志C=1,则转移到cadd处;若C=0,则顺序执行下一条指令。,3. JE cadd ; Z标志为1(相等)则转移,功能:如果标志Z=1,转移到cadd;若Z=0,顺序执行下一条指令。,2. JNC cadd ; 进位标志C为0则转移,功能:若C=0,则转移到cadd处;若C=1,则顺序执行下一条指令。,4. JNE cadd ; Z标志为0(不相等)则转移,功能:如果标志Z=0,转移到cadd;若Z=1,顺序执行下一条指令。,5. JGE cadd ; 大于或等于(带符号数)时转移,功能:如果标志N=0,则转移到cadd;若N=1,顺序执行下一条指令。,6.

44、JLT cadd ; 小于(带符号数)时转移,功能:如果标志N=1,转移到cadd;若N=0,顺序执行下一条指令。,8. JNV cadd ; 溢出标志不为1时转移,功能:如果标志V=0,转移到cadd;若V=1,顺序执行下一条指令。,7. JV cadd ; 溢出标志为1时,功能:如果标志V=1,转移到cadd;若V=0,顺序执行下一条指令。,10. JNVT cadd ; 溢出陷井标志不为1时转移,功能:如果标志VT=0,转移到cadd;若VT=1,顺序执行下一条指令。,11. JST cadd ; 粘着位标志为1时跳转,功能:如果标志ST=1,转移到cadd;若ST=0,顺序执行下一条指

45、令。,9. JVT cadd ; 溢出陷井标志为1则转移,功能:如果标志VT=1,转移到cadd;若VT=0,顺序执行下一条指令。,12. JNST cadd ; 粘着位不为1时转移,功能:如果标志ST=0,转移到cadd;若ST=1,顺序执行下一条指令。,13. JGT cadd ; 带符号数大于零时转移,功能:如果标志N=0且Z=0,则转移到cadd;否则顺序执行下一条指令。,15. JH cadd ; 无符号数大于零有进位时转移,功能:如果标志C=1且Z=0,则跳转到cadd;否则顺序执行下一条指令。,14. JLE cadd ; 带符号数小于或等于零时转移,功能:如果标志N=1或Z=1

46、则转移到cadd,否则顺序执行下一条指令。,16. JNH cadd ; 无符号数不高于零时转移,功能:如果标志C=0或Z=1则转移到cadd;即无符号数无进位或结果为零时转移。,17. JBC breg, bitno, cadd ; 指定位为0时转移,功能:测试由breg的第bitno位,若该位为0,则转移到cadd;若不为0,顺序执行下一条指令。,例 JBC AL, 7, AS2,若AL的第7位为0,则转移到标号AS2;否则顺序执行。,18. JBS breg, bitno, cadd ; 指定位为1时转移,功能:测试由breg的第bitno位,若该位为1,则转移到cadd;若不为1,顺序

47、执行下一条指令。,19. DJNZ breg, cadd ; 减1非零跳转,功能:把breg的内容减1,若结果为0,则顺序执行下一条指令;若结果不为0,则跳转到cadd。,注意:对某些特殊功能寄存器的位测试以后,要破坏寄存器的内容,使用时要注意。对于非特殊功能寄存器,测试后寄存器内容不变。,七、单寄存器指令,单寄存器指令包括以下指令:寄存器增1,寄存器减1,操作数取反,寄存器清0,整数取反以及整数带符号扩展等。这些指令根据操作结果影响PSW中的状态标志。,1. INC wreg ;字增1,功能:把由wreg代表的寄存器字内容加1。,例 INC AX ;设AX的内容为1234H,该 指令执行后,

48、(AX) = 1235H,对标志位的影响 :,2. INCB breg ;字节增1,功能:把由breg代表的寄存器字节内容加l。,例 INCB AL ;AX的低字节加1,对标志位的影响 :,3. DEC wreg ;字减1,功能:把由wreg代表的寄存器字内容减l。,例 DEC AX,对标志位的影响 :,4. DECB breg ;字节减1,功能:把由breg代表的寄存器字节内容减l。,例 DECB AL ;AX的低字节减1,对标志位的影响 :,5. NEG wreg ;整型数求补,功能:把wreg的内容求补。即,按位取反后,最低位加1。,对标志位的影响 :,6. NEGB breg ;短整型数求补,功能:把breg代表的字节寄存器内容求补码。方法是:按位取反后,最低位加1。,例 LD AL,#0FFH NEGB AL ;指令执行后, AL= 01H,对标志位的影响 :,7. EXT Lreg ;整型数符号扩展至长整型数,功能:把Lreg中的低字的符号位扩展到整个操

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1