第4章 指令系统及汇编语言程序设计.ppt

上传人:创****公 文档编号:1593579 上传时间:2019-10-19 格式:PPT 页数:87 大小:4.93MB
返回 下载 相关 举报
第4章 指令系统及汇编语言程序设计.ppt_第1页
第1页 / 共87页
第4章 指令系统及汇编语言程序设计.ppt_第2页
第2页 / 共87页
点击查看更多>>
资源描述

《第4章 指令系统及汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章 指令系统及汇编语言程序设计.ppt(87页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第四章 指令系统及汇编语言程序设计,任课教师:刘忠国山东大学课程中心网站: http:/ keil vision软件下载及指导手册(Helpvision Help) http:/ 指令系统及汇编语言程序设计,本章学习目标了解助记符、指令格式掌握单片机寻址方式 掌握单片机指令系统掌握单片机汇编语言程序设计及开发环境,3,00:27:19,第四章 指令系统及汇编语言程序设计语言,4.1 编程语言4.2 指令格式及其分类4.3 寻址方式4.4 数据传送类指令4.5 逻辑操作类指令4.6 算术运算类指令4.7 位操作指令4.8 控制类转移指令4.9 汇编语言程序设计4.10 汇编语言程序调试4.11利

2、用ISP工具将程序下载到单片机中验证程序,4,00:27:19,4.6算术运算类指令 (24条),5,00:27:19,该类指令主要完成加、减、乘、除四则运算,以及增量、减量和二十进制调整操作。除增量、减量指令外,大多数算术运算指令会影响到状态标志寄存器PSW。,表4-3 算术运算类指令对标志的影响,8个助记符,4.6.1 加减运算指令 (12条),6,00:27:19,1、加法指令:(4条) ADD A, #data8 ;AA+#data8 ADD A, addr8 ;AA+(addr8) ADD A, Ri ;AA+(Ri) ADD A, Rn ;AA+Rn把源字节变量与累加器相加, 结果

3、保存在累加器中, 影响标志AC、CY、OV、P。,在加减运算指令中,以累加器A为第一操作数,并存放操作后的结果。第二操作数可以是立即数、工作寄存器、寄存器间接寻址字节或直接寻址字节。运算结果会影响溢出标志OV、进位CY、辅助进位AC和奇偶标志P。,4.6.1 加减运算指令 (12条),7,00:27:19,1、加法指令:(4条) ADD A, #data8 ;AA+#data8 ADD A, addr8 ;AA+(addr8) ADD A, Ri ;AA+(Ri) ADD A, Rn ;AA+Rn把源字节变量与累加器相加, 结果保存在累加器中。,在加减运算指令中,以累加器A为第一操作数,并存放

4、操作后的结果。第二操作数可以是立即数、工作寄存器、寄存器间接寻址字节或直接寻址字节。运算结果会影响溢出标志OV、进位CY、辅助进位AC和奇偶标志P。,1、加法指令:(4条),例如, MOV A, #0C3H ADD A, #0AAH运算后,CY=1, OV=1, AC=0, A=6DH, PSW=85H 溢出标志OV取决于带符号数运算,和的第6、7位中有一位产生进位而另一位不产生进位,则使OV置1,否则OV被清0。OV=1产生溢出。,8,00:27:19,1100 0011+ 1010 1010 10110 1101,1 0 0 0 0 1 0 1,执行指令: ADDC A, R0 运行结果:

5、 A=0000 0000B, AC=1,CY=1,OV=0,2、带进位加法指令 (4条),ADDC A, #data8 ;AA+#data 8 +CY ADDC A, addr8 ;AA+(addr8) +CY ADDC A, Ri ;AA+(Ri) +CY ADDC A, Rn ;AA+Rn +CY 除了相加时把进位位也加上外,其他与一般加法指令完全相同。,9,00:27:19,例, 设累加器A内容为0AAH, R0内容为55H, C内容为1,1010 1010+ 0101 0101 1111 1111+ 1 10000 0000,2、带进位加法指令(4条),【例4-4】设双字节加法中,被加

6、数放20H、21H单元,加数放30H、31H单元,和存放在40H、41H单元,若高字节相加有进位则转OVER处执行。试编程实现之。 解:程序代码如下:,10,00:27:19,ADDM: MOV A, 20H ;取低字节被加数ADD A, 30H ;低位字节相加 MOV 40H, A ;结果送40H单元 MOV A, 21H ;取高字节被加数 ADDC A, 31H ;加高字节和低位来的进位 MOV 41H, A ;结果送41H单元 JC OVER ;若有进位,则转OVER处执行 OVER: ,低字节,高字节,(21H) (20H) +(31H) (30H) (41H) (40H),3、带借位

7、减指令(4条),SUBB A, #data8 ;AA #data8 CY SUBB A, addr8 ;AA(addr8) CY SUBB A, Ri ;AA (Ri) CY SUBB A, Rn ;AA Rn CY 在加法中,CY=1表示有进位,CY=0表示无进位; 在减法中,CY=1则表示有借位,CY=0表示无借位。,11,00:27:19,OV=1表示带符号数相减时, 从一个正数中减去一个负数得出了一个负数(如3H-80H)或从一个负数中减去一个正数时得出一个正数的错误情况(如80H-2H) 。和加法类似, 该标志也是由运算时,差的第6、7位两者借位状态经异或操作而得。因减法只有带借位减

8、一条指令, 所以在首次进行单字节相减时, 须先清借位位CY, 以免相减后结果出错。,结果超出了符号数的表示范围,0000 0011- 1000 0000 1000 0011,3、带借位减指令(4条),例如,设累加器A的内容为D9H,R0的内容为87H,求两者相减结果。 CLR C SUBB A, R0执行结果:A=52H,CY=0,OV=0 若运算两数为无符号数,则其溢出与否和OV状态无关,而靠CY是否为1予以判别,OV仅表明带符号数运算时是否溢出。,12,00:27:19,1101 1001 1000 0111 0101 0010,若是带符号数,-27H,-79H,52H,D9H,- 87H

9、,3、带借位减指令(4条),【例4-5】 两字节数相减, 设被减数放在20H、21H单元,减数放在30H、31H单元, 差放在40H、41H单元。若高字节相减有借位则转OVER处执行, 试编程实现之。解:程序代码如下:,13,00:27:19,SUBM: CLR C ;低字节减之前借位CY清0 MOV A, 20H ;被减数送A SUBB A, 30H ;低位字节相减 MOV 40H, A ;结果送40H单元 MOV A, 21H ;被减数高字节送A SUBB A, 31H ;高字节相减 MOV 41H, A ;结果送41H单元 JC OVER ;若有借位, 则转OVER处执行 OVER:,低

10、字节,高字节,(21H) (20H) - (31H) (30H) (41H) (40H),4.6.2 乘除运算指令(2条),乘除运算指令在累加器A 和寄存器B之间进行,运算结果保存在累加器A和寄存器B中。,14,00:27:19,1、乘法指令(1条)乘法指令: MUL AB把累加器A 和寄存器B中的8位无符号整数相乘;16位乘积低字节在累加器A中,高字节在寄存器B中;若乘积大于255 (0FFH), 则溢出标志位置 “1”, 否则清 “0”, 运算结果总使进位标志CY清“0” 。乘法指令可以竖式表示:,1、乘法指令(1条),例如,设A=82H(130),B=38H(56),执行指令: MUL

11、AB结果: 乘积为1C70H (7280), A=70H, B=1CH,OV=1, CY=0,15,00:27:19,例4-6 用单字节乘法指令进行多字节乘法运算。设双字节数低8位存放在30H, 高8位存放在31H单元, 单字节数存放在40H单元, 编程实现双字节乘以单字节的运算, 乘积按由低位到高位依次存放在50H, 51H, 52H单元中。 解:双字节数乘以单字节数, 设双字节数用X2X1表示, 单字节数用Y表示, 则其乘法可表示为: ( X228+X1 )Y=X2Y28+X1Y,(31H) (30H) (40H) (52H)(51H)(50H),最终结果在:,若乘积大于255 (0FFH

12、), 则溢出标志位置 “1”。,( X228+X1 ) Y=X2Y28+X1Y,利用MUL指令分别进行X2Y和X1Y的乘法运算,然后把等号右边两项移位相加即得其积。可以使用下面的竖式表示:,16,00:27:19,其中, “(X1Y)低” 表示的是X1和Y乘积的低8位, 其他符号代表的含义类似。,RES0就是“(X1Y)低” , 即最后结果的最低位;RES1是“(X1Y)高 + (X2Y)低”(的结果;RES2是“(X2Y)高” 和由“(X1Y)高 + (X2Y)低” 产生的进位相加的结果。,例4-6程序代码,MOV A, 30H MOV B, 40H MUL AB ;X1Y MOV 50H,

13、 A ;积低字节存50H MOV 51H, B ;积高字节存51H MOV A, 31H MOV B, 40H MUL AB ;X2Y ADD A, 51H ;X2Y低8位与X1Y高8位相加作为积的第二字节 MOV 51H, A MOV A, B ;乘积最高字节送A以便与低位进位C相加 ADDC A, #00H ;作用:将C与A相加,最高字节加低位进位C MOV 52H, A ;最高字节存52H单元,17,00:27:19,(X228+X1)Y=X2Y28+X1Y,52H, 51H, 50H,(31H) (30H) (40H) (52H)(51H)(50H),B,A,B,A,A,B,A,B,可

14、能向高位产生进位C,2、除法指令(1条),除法指令: DIV AB 该指令把累加器A中的8位无符号整数除以寄存器B中8位无符号整数, 所得结果的商放在累加器A中,余数在寄存器B中,18,00:27:19,注意: 若除数(B中内容)为0H, 则执行后结果为不定值, 并置位溢出标志OV。,例, 设A内容为147(93H), B内容为13(0DH), 则执行命令: DIV AB 执行结果:A=0BH,B=04H,OV=0,CY=0,若除数(B中内容)不为0,标志位CY和OV均清“0” 。,4.6.3 增量、减量指令(9条),增量指令完成加1运算,减量运算完成减1运算。这两条指令均不影响标志位(INC

15、 A, DEC A 影响标志P)。1、增量指令(5条) INCA;A A+1 INCaddr8;(addr8) (addr8) +1 INCRi ;(Ri) (Ri) +1 INCRn;Rn Rn+1 INCDPTR;DPTR DPTR+1,19,00:27:19,1、增量指令(5条),注意: INC指令将指定变量加1,结果送回原地址单元,原来内容若为0FFH,加1后将变成00H,运算结果不影响任何标志位(INC A 影响奇偶标志位P)。例如,设R0=7EH,内部数据RAM中 (7EH) =0FFH, (7FH) =40H,则执行指令: INC R0 ; (7EH) 00H INC R0 ;R

16、0 R0+1,执行后,R0=7FH INC R0 ; (7FH) 41H,20,00:27:19,2、减量指令(4条),DECA;A A - 1 DECaddr8;(addr8) (addr8) - 1 DECRi;(Ri) (Ri) - 1 DECRn;Rn Rn - 1注意: DEC指令将指定变量减1, 结果送回原地址单元, 不影响任何标志位, 原内容若为00H, 减1后变成0FFH。,21,00:27:19,例如程序:MOV R1, #7FH ; (R1) 7FH MOV 7EH, #00H ; (7EH) 00H MOV 7FH, #40H ; (7FH) 40H DEC R1 ; (

17、7FH) 3FH 40H -1DEC R1 ; (R1) 7EH 7FH -1DEC R1 ; (7EH) 0FFH 00H -1,(DEC A 影响奇偶标志位P),(若A=0, DEC A 后, A中还是偶数个1, 不影响P),4.6.4 二十进制的加法的调整指令(1条),指令如下: DA A该指令的调整条件和方法:若A3-09或AC=1, 则A3-0A3-006H;若A7-49或CY=1, 则A7-4A7-46H(A7-0A7-060H)。若两个条件同时满足或者A7-4=9且低4位修正有进位,则A7-0A7-066H。,22,00:27:19,DA指令使用说明,是对二十进制加法进行调整的指

18、令。两个压缩型BCD码按二进制数规则相加, 须经本条指令调整后才能得到压缩型的BCD码和数(可用87H+68H测算)。,1000 0111+ 0110 1000 1110 1111+ 0110 0110 10101 0101,87,68,CY,原因:压缩BCD码要求按照十进制规则运算、进位, 但计算机只能按照16(二)进制规则运算、进位。,EF,66,155,DA指令使用说明,因指令要用AC、CY等标志位才能起到正确的调整作用, 因此它需跟在加法(ADD, ADDC)指令后面使用。若该指令前无加法指令, (不)能用DA A完成累加器A内容的二十进制转换。对用户而言,只要保证参加运算的两数为BC

19、D码, 并先对BCD码执行二进制加法运算(用ADD, ADDC指令), 然后紧跟一条DA A指令即可。DA A指令不能对减法进行十进制调整。DA指令不清除标志位C, 若高4位有进位, 则置C为1,否则, 不改变进位标志C。,23,00:27:19,4.6.4 二十进制调整指令,24,00:27:19,例4-7 设计6位BCD码加法程序。设被加数在内部RAM中32H, 31H, 30H单元, 加数在42H, 41H,40H单元, 相加和放在52H, 51H, 50H单元, 忽略加后最高位进位(溢出)。解:程序代码如下:BCDADD:MOV A, 30H ;第一字节加 ADD A, 40H DA

20、A MOV 50H,A ;存第一字节和(BCD码) MOV A, 31H ;第二字节加 ADDC A, 41H DA A MOV 51H, A ;存第二字节和(BCD码) MOV A, 32H ;第三字节加 ADDC A, 42H DA A MOV 52H,A ;存第三字节和(BCD码),低字节,(32H)(31H)(30H) +(42H)(41H)(40H) (52H)(51H)(50H),4.6.4 二十进制调整指令,25,00:27:19,例4-7 设计6位BCD码加法程序。设被加数在内部RAM中32H, 31H, 30H单元, 加数在42H, 41H,40H单元, 相加和放在52H,

21、51H, 50H单元, 忽略加后最高位进位(溢出)。解:程序代码如下:BCDADD:MOV A, 30H ;第一字节加 ADD A, 40H DAA MOV50H,A ;存第一字节和(BCD码) MOVA,31H ;第二字节加 ADDC A,41H DA A MOV51H, A ;存第二字节和(BCD码) MOVA, 32H ;第三字节加 ADDCA, 42H DA A MOV52H,A ;存第三字节和(BCD码),低字节,(32H)(31H)(30H) +(42H)(41H)(40H) (52H)(51H)(50H),4.6.4 二十进制调整指令,【例4-8】假设有两个十进制数,被减数保存在

22、30H单元,减数保存在40H单元。编程实现二者的减法运算, 结果存50H单元中。解: 利用十进制加法调整指令进行十进制减法调整, 必须采用补码相加的方法, 用9AH(即十进制100)减去减数即得以10(每位, 两位为100)为模的减数补码。程序代码如下:BCDSUB:CLR C ;清进位位MOV A, #9AH ;求减数补码SUBB A, 40H ;(40H)中是减数 ADD A, 30H ;进行补码相加DA AMOV 50H, A ;结果(差)存50H单元,26,00:27:19,讨论: 被减数大于减数时, 结果容易理解;被减数小于减数时, 结果可看成向百位借位而得到的结果; 或将A再求补码

23、即得绝对值: (9AH-(A);再处理符号位(见下页),参见4.9 节 “多字节十进制BCD码减法”,无十进制减法调整指令,设(30H)=67H, (40H)=56H,设(30H)=56H, (40H)=67H,4-6-4 二十进制调整指令,【例4-8】编程实现两个十进制数减法运算,被减数存在30H单元,减数存在40H,结果存50H, 符号位标志存49H。,27,00:27:19,解: 程序代码如下:BCDSUB:CLR C ;清进位位MOV A, #9AH ;求减数补码SUBB A, 40H ADD A, 30H ;进行补码相加DA AMOV 50H, A ;结果(差)的绝对值存50H单元

24、MOV 49H, #0H ;结果(差)的正符号位存50H单元 JNC BCDCPL ;减法化为补码加法无进位则结果为负 LJMP BCDEXITBCDCPL:MOV A, #9AH ;求减数补码, 对负结果求补 SUBB A, 51H; 对负结果求补: 9AH-(A) MOV 49H, #01H ;结果(差)的符号位存49H单元 MOV 50H, A ;结果(差)的绝对值存50H单元BCDEXIT:RET,设(30H)=67H, (40H)=56H,设(30H)=56H, (40H)=67H,4.7 位操作指令(17条),位操作指令以位作为处理对象, 可完成位传送、位状态控制、位逻辑操作、位条

25、件转移等功能, 共17条。 可被指令识别的位地址表示方式有如下几种:直接用位地址(十进制或十六进制数)表示,或写成位地址表达式表示。写成字节地址加位数方式表示,二者之间用“.”号隔开。例如0B8H.0 (IP.0),20H.1等。位寄存器的定义名称(见头文件-附录B: STC15.INC, 附录C: stc15.h),如C (PSW.7)、EA (IE.7)等。对位寻址寄存器, 可用字节寄存器名加位数来表示, 二者之间用“.”号隔开。例如P1.0,PSW.4等。用户使用伪指令事先定义过的符号地址。,28,00:27:19,6个助记符, 另5个与字节操作相同,00:27,图3-10 内部RAM中

26、的位地址,20H2FH之间单元既可按字节存取, 也可按位存取,共128位, 位地址范围: 00H7FH。,位寻址区,29,位寻址 : MOV C, 20H,直接寻址 : MOV A, 20H,字节地址: 20H,位寻址区-图3-11特殊功能寄存器SFR中位地址:,00:27,特殊功能寄存器SFR中位地址范围: 80H0FFH。,图3-11 可位寻址的特殊功能寄存器中的位地址,30,字节地址能被8整除的特殊功能寄存器SFR,其各位都可按位寻址。,表4-4 位操作指令的操作码助记符及对应的操作数,4.7 位操作指令(17条),31,00:27:20,6个助记符, 另5个与字节操作相同,4.7.1

27、位传送指令(2条),MOVC, bit; CY (bit) MOVbit, C;(bit) CY 指令功能:是把第二操作数所指出的布尔变量传送到由第一操作数指定的位单元中。 其中一个操作数必为位累加器(进位标志CY),另一个可以是任何直接寻址位(bit)。 指令执行结果不影响其他寄存器或标志位。,32,00:27:20,例如, 设内部数据RAM中(20H)=79H,执行指令: MOVC, 07H ;07H是位地址, 即字节地址20H单元内容的第7位位置, ;指令将使CY=0。,CY,4.7.2 位状态控制指令(6条),位状态控制指令包括位的清“0”、取反和置位。1、位清“0”指令(2条) CL

28、Rbit;(bit) 0 CLRC; CY 0上述指令可使直接寻址位(bit)或位累加器CY清“0”,不影响其他标志。,33,00:27:20,设内部RAM字节地址25H单元内容为34H (0011 0100B), 执行指令: CLR 2AH ;2AH为字节地址25H第2位的位地址 ;将使25H单元的内容变为30H(0011 0000B),图3-10 字节地址25H的位地址,4.7.2 位状态控制指令(6条),CPL bit;(bit) ( ) CPL C; CY 上述指令可把直接寻址位(bit)或位累加器CY内容取反,不影响其他标志。例如,执行指令序列: MOV25H, #5DH ;(25H

29、)=0101 1101B CPL2BH ;(25H)=0101 0101B CPLP1.2 ; P1.2求反, P1口字节地址90H,34,00:27:20,2、位求反指令(2条),图3-10 字节地址25H的位地址,准双向口工作模式的结构,准双向口有3个上拉场效应管T1,T2,T3, 以适应不同需要。其中,T1称为强上拉, 上拉能力可达20mA; T2称为极弱上拉, 上拉能力一般为30A; T3称为弱上拉, 一般上拉能力为150A250A, 典型值为200A。输出低电平时,最大灌电流可达20mA。,00:27,35,P0P5,如P1.2, P1.7,4.7.2 位状态控制指令(6条),SET

30、Bbit;(bit) 1 SETBC; CY 1 上述指令把任何可寻址的位或进位标志CY置1,不影响其他标志。例如,P1口原已写入了49H(0100 1001B),则执行 SETBP1.7 ;将使P1口输出数据变为C9H(1100 1001B)。,36,00:27:20,3、位的置位指令(2条),4.7.3 位逻辑操作指令(4条),1、位逻辑与指令(2条) ANL C, bit; CY CY(bit) ANL C, /bit; CY CY( )将直接寻址位内容或直接寻址位内容取反后(原内容不变)与位累加器CY进行逻辑“与” 操作, 结果存在CY中。 “/bit”表示对该寻址位内容取反后再进行位

31、操作。,37,00:27:20,位逻辑 “与” 操作示意图如图示。,图4-7 a) ANL C, bit指令示意图,b) ANL C, /bit指令示意图,例:ANL C, /OV,OV,/OV,2、位逻辑或指令(2条),ORL C, bit ;CY CY (bit) ORL C, /bit ;CY CY (/bit) 上述指令将直接寻址位的内容或直接寻址位的内容取反后(不改变原寻址内容)与位累加器CY进行逻辑“或”操作,结果保存在CY中。,38,00:27:20,位逻辑“或” 操作的示意图如图示。,图4-8 ORL指令逻辑示意图,例:ORL C, /OV,OV,/OV,位逻辑与、或指令举例,

32、例如,编程实现: 当位地址(7FH)=1并且累加器中(ACC.7)=1时, 进位位C置1, 否则C清0 , 可用ANL指令实现。可编程序如下: MOVC, 7FH ;CY(7FH) ANLC, ACC.7;CYCY ACC.7,39,00:27:20,例, 将位地址7FH中的内容和累加器ACC.7中的内容相“或”的程序(只要两个位的任一位为1则C为1)如下: MOV C, 7FH ORL C, ACC.7 ;相“或”的结果存CY中,4.7.4 位条件转移指令(5条),位条件转移指令分为判CY转移和判直接寻址位状态转移两种。1、判CY转移指令(2条) JC rel ; 若CY= 1,则PCPCr

33、el,否则顺序执行 JNC rel ; 若CY= 0,则PCPCrel,否则顺序执行上述两条指令通过判进位CY的状态决定程序的走向,前一条若进位标志为1(后一条若进位标志为0)就可使程序转向目标地址,否则顺序执行下一条指令。目标地址为第二字节中的带符号的偏移量rel与PC的当前值(PCPC2)之和,不影响任何标志。,40,00:27:20,(rel 一般用符号地址),1、判CY转移指令(2条),JC rel指令操作过程如图a)JNC rel指令操作过程如图b),41,00:27:20,图4-9 JC指令和JNC指令执行示意图,(a)JC rel指令(机器码:40H rel),(b) JNC r

34、el 指令(机器码:50H rel),现行的PC,下一指令地址,(rel 一般用符号地址),PC+rel,1、判CY转移指令(2条),在实际应用中,一般在rel的位置写入欲跳转到的标号地址,偏移量由汇编程序自动进行计算。这样做有两个好处,一是程序的可读性好,二是不必进行偏移量的计算。例如,程序段: ADD A, #30H ; 加法指令,影响标志位C JC L2 ;若C=1(有进位), 则转L2, 否则, 继续执行L1:L2:,42,00:27:20,2、判直接寻址位转移指令(3条),JB bit, rel ;若(bit) =1, 则PCPC+rel JNB bit, rel ;若(bit) =

35、0, 则PCPC+rel JBC bit, rel ;若(bit) =1, 则PCPC+rel, 且 (bit) 0 ;若条件不满足, 指令顺序执行。,43,00:27:20,三条指令操作过程分别如图a)、图b)和图c)所示。,a) JB bit,rel 指令,b) JNB bit,rel 指令,c) JBC bit,rel 指令,(rel 一般用符号地址),2、判直接寻址位转移指令(3条),应用中,一般在rel的位置写入欲跳转到的标号地址,偏移量由汇编程序自动进行计算。例如,指令序列: MOV P1, #0CAH ;P10CAH (1100 1010B) MOV A, #56H ;A56H

36、(0101 0110B) JB P1.2, L1 ;因P1.2=0, 不转L1, 而继续执行下条指令 JNB ACC.3, L2 ; ACC.3=0 转L2处执行 L1: L2: ,44,00:27:20,2、判直接寻址位转移指令(3条),另一段程序: MOV A, #43H ;A 43H(0100 0011B) JBC ACC.2, L1 ;因ACC.2=0, 不转L1,而继续执行下条指令 JBC ACC.6, L2 ;ACC.6=1 转L2执行, 且ACC.6 0 L1: L2: 两段程序执行后均使程序转向L2处,但前段程序转移后维持原变量ACC.30不变,后段程序却把原变量ACC.6=1

37、清0。,45,00:27:20,转移到L2后的A(0000 0011B),4.8 控制转移类指令 (17条),使程序不按存放顺序执行, 而转到另外的地址去执行。包括两种:程序转移指令、子程序调用和返回指令。转移指令和调用指令的区别转移指令只是跳转到新地址去,不再跳转回来;调用指令只是暂时转到新的地址(子程序)处执行一段指令,执行完这一段指令以后再跳转回来,按照调用之前的顺序继续执行程序。所以,调用指令要具有能够跳转回来并能够能继续执行调用之前程序的功能,这些功能都是借助堆栈(保护断点)的操作实现的。,46,00:27:20,13个助记符,表4-5 控制转移类指令(17条),47,00:27:2

38、0,(4条),(2条),转移(调用)地址一般用符号地址),13个助记符,1、程序转移指令(12条),(1)无条件转移指令 (4条)长转移指令 LJMP绝对转移指令 AJMP相对短转移指令 SJMP 间接转移指令 JMP,48,00:27:20,(2)条件转移指令 (8条)累加器判零转移指令(JZ, JNZ) (2条)比较转移指令 (CJNE) (4条)循环转移指令 (DJNZ) (2条),1、程序转移指令(12条),(1)无条件转移指令(4条)无条件转移指令,是使程序不按照指令的存放顺序执行,而是无条件转到另一处执行的指令,该类指令不影响标志位。实质上,无条件转移指令就是控制程序计数器PC从现

39、行值转移到目标地址。长转移指令 LJMP addr16绝对转移指令 AJMP addr11相对短转移指令 SJMP rel间接转移指令 JMP A+DPTR,49,00:27:20,(1)无条件转移指令(4条),1)长转移指令 LJMP addr16 ;PCaddr16该指令提供16位目标地址, 将指令中第二、第三字节地址分别装入PC的高8位和低8位中, 程序无条件转向指定的目标地址执行, 执行结果不影响标志位。因直接提供16bit目标地址, 所以执行该指令可使程序从当前地址转移到64KB程序存储器空间任何地址单元。,50,00:27:20,例如,如果在程序存储器0000H单元存放一条指令 LJMP 0100H 执行结果:复位后程序将跳到0100H单元去执行。,(1)无条件转移指令(4条),2)绝对转移指令 AJMP addrll ;PCPC+2,PC1511不变,PC100addr100 第二字节存放的是低8位地址,第一字节5、6、7位存放着高3位地址a10a8。注意:AJMP为双字节指令,当程序真正转移时PC值已加2,因此,目标地址应与AJMP后面相邻指令的第一字节地址在同一2KB范围内。如果超过了2KB范围,汇编程序会提示出错。本指令不影响标志位。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理手册

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com