单片机与嵌入式系统原理第三章课件_第1页
单片机与嵌入式系统原理第三章课件_第2页
单片机与嵌入式系统原理第三章课件_第3页
单片机与嵌入式系统原理第三章课件_第4页
单片机与嵌入式系统原理第三章课件_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 MCS-51指令系统3-1 指令格式3-2 寻址方式3-3 数据传送指令3-4 算术运算指令3-5 逻辑运算指令3-6 位操作指令3-7 控制转移指令第三章 MCS-51指令系统3-1 指令格式 一、 汇编语言指令格式标号: 操作码 操作数1,操作数2 ,操作数3 ;注释 例: LOOP: MOV A,#40H ;40H - A 标号: 指令地址的标志符号。以字母开始,后跟18个字母或数字或“_”,并以冒号“:”结尾。 操作码:指明指令功能。25个字母。MOV 传送ANL 逻辑与MUL 乘法RR 右循环SJMP 短跳转RET 子程序返回例:第三章 MCS-51指令系统3-1 指令格式

2、一、 汇编语言指令格式标号: 操作码 操作数1,操作数2;注释 例: LOOP: MOV A,#40H ;40H - A 操作数:指令操作的对象,可以是数据、地址、寄存器名及约定符号。 注释行:说明指令在程序中的作用。 操作码和操作数是指令主体。第三章 MCS-51指令系统3-1 指令格式 一、 汇编语言指令格式 注意以下一些常用符号:data 立即数 direct 直接地址 Ri 以Ri里面的内容为物理地址的存储单元(i=0、1) Rn 工作寄存器(n=07)第三章 MCS-51指令系统1.定位伪指令 格式: ORG m 例3-3 ORG 0000H START: SJMP MAIN ORG

3、 0030H MAIN: MOV SP,# 30H 以START开始的程序汇编为机器码后从0000H存贮单元开始连续存放。 3-1 指令格式二、 伪指令 汇编时不产生机器码2.汇编结束伪指令 格式: END第三章 MCS-51指令系统3.定义字节伪指令 格式: DB X1,X2,Xn 例3-4 ORG 7F00H DB 01110010B,16H,45,8,A 汇编后存贮单元内容为: (7F00H)=72H (7F01H)=16H (7F02H)=2DH (7F03H)=38H (7F04H)=40H 4.定义字伪指令 格式: DW Y1,Y2,Yn高高八位放入低地址单元,低八位放入高地址单元

4、!3-1 指令格式二、 伪指令 汇编时不产生机器码第三章 MCS-51指令系统5定义空间伪指令:DS表达式 例3-6 ORG 0F00H DS10H DB20H,40H 汇编后,从0F00H开始,保留16个字节的内存单元, 然后从0F10H开始,按照下一条DB伪指令给内存单元赋值, 得(0F10H)=20H,(0F11H)=40H。3-1 指令格式二、 伪指令 汇编时不产生机器码DB、DW、DS伪指令都只对ROM起作用!第三章 MCS-51指令系统 例3-7 ORG 8500H AA EQU R1 A10 EQU 10H DELAY EQU 87E6H MOV R0, A10 ;R0(10H)

5、 MOV A, AA ;A(R1) LCALL DELAY;调用起始地址为87E6H的子程序 END3-1 指令格式二、 伪指令 汇编时不产生机器码6等值伪指令:EQU数据或汇编符EQU赋值后,AA为寄存器R1,A10为8位直接地址10H,DELAY为16位地址87E6H。字符名称必须先赋值后使用,通常在源程序的开头赋值!第三章 MCS-51指令系统7数据地址赋值伪指令 格式: DATA 表达式 3-1 指令格式二、 伪指令 汇编时不产生机器码8位地址赋值伪指令 格式: BIT 位地址 第三章 MCS-51指令系统一、立即寻址方式指令中给出实际操作数据(立即数),以指令字节的形式存放在ROM中

6、。一般用于为寄存器或存储器赋常数初值。 例: 8位立即数: MOV A,#40H ;A40H 16位立即数: MOV DPTR,#2100H ;DPTR2100H DPH 21H DPL 00H3-2 指令寻址方式(指令如何给出参与运算的操作数)寻找操作数的方法叫寻址方式。第三章 MCS-51指令系统二、直接寻址方式 指令操作数是存储器单元地址,数据在存储器单元中。 MOV A,40H;A(40H) 例:设存储器两个单元的内容如图所示, 执行指令 MOV A,40H 后(A)= ? 直接寻址方式对数据操作时,地址是固定值,而地址所指 定的单元内容为变量形式。 SFR只能采用直接寻址方式访问,可

7、以用 物理地址,也可以用寄存器标号(推荐)。 例:累加器A E0H ACC 程序状态字 D0H PSW56H 第三章 MCS-51指令系统 三、寄存器寻址方式 指令操作数为寄存器名(Rn),数据在寄存器中。 例: MOV A,R0;A(R0) 设指令执行前 (A)=20H,(R0)=40H, 执行指令后,(A)= ?,(R0)= ?40H40H四、寄存器间接寻址方式 指令的操作数为寄存器名,寄存器中为数据地址。 存放地址的寄存器称为间址寄存器或数据指针。 例: MOV A,R0;A (R0) 设指令执行前(A)=20H,(R0)=40H,地址为40H存储器单元内容如图所示。执行指令后, (A)

8、= ? ,(R0)= ? , (40H)= ?34H40H34H第三章 MCS-51指令系统五、变址间接寻址方式数据在存储器中,指令给出的寄存器中为数据的基地址和偏移量。数据地址 = 基地址 + 偏移量。例:MOVC A,A+DPTR;A(A)+(DPTR) 设指令执行前 (A)=09H,(DPTR)=2000H,存储器单元内容如图所示。 执行指令后,(A)= ? (DPTR)= ? 12H2000H第三章 MCS-51指令系统注意: (1)寄存器间址可拓宽单片机寻址范围,如:Ri可用于对片内RAM寻址(00H-7FH)(MOV指令),也可用于对 片外RAM寻址(00H-0FFH)(MOVX指

9、令); DPTR可寻址片外ROM/RAM的全部64KB区域(MOVC/MOVX指令)。 (2)寄存器间址指令不能用于寻址SFR。第三章 MCS-51指令系统六、相对寻址方式 以PC的内容作为基地址,加上偏移量,所得结果送PC寄存器作为转移地址。偏移量在128 +127之间。 例:SJMP 81H;短跳转 第三章 MCS-51指令系统 指令给出位地址。数据在存储器位寻址区的某一位。 例: MOV C,40H;Cy(位地址40H) 设指令执行前(Cy)=1,位地址40H存储器单元如图, 执行指令后,(Cy)= ?028H 0110001029H 11010111位寻址区七.位寻址方式第三章 MCS

10、-51指令系统MCS-51指令系统中共有111条指令,按功能可分为以下四大类: 数据传送类 算术操作类 逻辑操作类 控制转移类 3-3 指令的类型、字节和周期第三章 MCS-51指令系统指令的字节和周期:寄存器名可隐含或包含在操作码中;操作数为直接地址或立即数则必需单独占用一个字节;注意: 凡指令码中含有直接地址或立即数的指令,其字节数应在原有基础上分别加1。 执行每条指令所需的机器周期数既取决于指令所含字节数,也取决于CPU在每个机器周期内最多能进行两次读操作、每次一个字节的特性。第三章 MCS-51指令系统实现累加器、寄存器、存储器之间的数据传送。1、内部传送指令2、位传送指令3、外部传送

11、指令4、交换指令5、堆栈操作指令6、查表指令3-4 数据传送指令第三章 MCS-51指令系统1. 内部传送指令:实现片内数据存储器中数据传送。 指令格式: MOV 目的操作数,源操作数 寻址方式:立即寻址、直接寻址、 寄存器寻址、寄存器间址。MOV A,Rn ;A(Rn),n=07 MOV A,direct ;A(direct)MOV A,Ri ;A(Ri),i=0或1MOV A,#data ;AdataMOV Rn, direct ;Rn(direct)MOV Ri, direct ;(Ri)(direct)MOV direct1,direct2 ;direct1(direct2)MOV D

12、PTR,#data16 ;DPTRdata16(唯一的1条16位数据传送指令)第三章 MCS-51指令系统操作码目的源操作内容字节数执行时间MOVA,#datadirectRiRnA#dataA(direct)A(Ri)A(Rn)22111111Rn,#datadirectARn#dataRn(direct)Rn(A)221121direct,#dataAdirectRiRndirect#datadirect(A)direct(direct)direct(Ri)direct(Rn)3232221221Ri,#datadirectA(Ri)#data(Ri)(direct)(Ri) (A)221

13、121第三章 MCS-51指令系统 例:顺序执行下列指令序列,求每一步执行结果。MOV A,#30H;MOV 4FH,A;MOV R0,#20H ;MOV R0,4FH ;MOV 21H,20H ;(A)= 30H(4FH)= 30H(R0)= 20H(20H)= 30H(21H)= 30H第三章 MCS-51指令系统说明: 1. 一条指令中不能同时出现两个工作寄存器:非法指令:MOV R1,R2 MOV R2,R0 2. 间址寄存器只能使用 R0、R1。 非法指令: MOV A,R2 3. SFR区只能直接寻址,不能用寄存器间接寻址。 错误指令: MOV R0,#80H MOV A,R0 该

14、指令是把52子系列单片机片内RAM中80H单元内容送累加器A。 4. 目的操作数不能采用立即寻址。 非法指令: MOV #80H,R2 第三章 MCS-51指令系统2. 位传送指令:MOV C, bit ;C(bit)MOV bit, C ;bit(C)其中一个操作数必须为位累加器C(即PSW中的Cy)。例:将位地址20H中的内容传送到位地址30H中: MOV C,20H MOV 30H,C错:MOV 30H,20H ;此为字节传送指令0第三章 MCS-51指令系统 3. 外部传送指令 实现片外数据存储器和A累加器之间的数据传送。 指令格式:MOVX 目的操作数,源操作数 寻址方式:片外数据存

15、储器用寄存器间址方式。 1).DPTR作16位数据指针,寻址64KB片外RAM空间 MOVX A,DPTR;A(DPTR) MOVX DPTR,A;(DPTR)(A) 2).Ri作8位数据指针,寻址256B片外RAM空间 MOVX A,Ri;A(Ri) MOVX Ri,A ;(Ri)(A) 第三章 MCS-51指令系统例:实现片外数据存储器数据传送 (2000H)(2100H)。 MOV DPTR,#2000HMOVX A,DPTRMOV DPTR,#2100HMOVX DPTR,A;(DPTR)= 2000H; (A)= X;(DPTR)= 2100H; (2100H)= X片外数据存储器不

16、能直接寻址。 下列为非法指令: MOVX A,2000H MOVX 2100H,2000H第三章 MCS-51指令系统3. 查表指令 实现从程序存储器读取数据到A累加器,只能使用变址间接寻址方式。 多用于查常数表程序,可直接求取常数表中的函数值。 1DPTR为基址寄存器MOVCA,A+DPTR ;A(A+DPTR) 查表范围为 64KB ROM任意空间,称为远程查表指令 。 2. PC为基址寄存器MOVCA,A+PC;A(A)+(PC)+1) 常数表只能在查表指令后256B范围内。 (PC内容为下一条指令的起始地址。)第三章 MCS-51指令系统例:查表法求Y=X2。设X(0X15)在片内RA

17、M的20H单元中,要求通过查表求Y,存入片内RAM21H单元。1)ORG 1000HSQU:MOV DPTR,#TAB ;确定表首地址(基地址)MOV A,20H ;取X(偏移量)MOVC A,A+DPTR;查表求Y=X2MOV 21H,A ;保存YRET ;子程序结束 ;其它程序段ORG 3000H ;常数表格首地址TAB:DB 00,01,04,09,225;平方表第三章 MCS-51指令系统例:查表法求Y=X2。设X(0X15)在片内RAM的20H单元中,要求将查表求Y,存入片内RAM的21H单元。2)指令地址 源程序 ORG 1000H ;程序起始地址 1000H SQU:MOV A,

18、20H ;取X 1002H ADD A,#3 ;修正偏移量 1004H MOVC A,A+PC ;查表求Y=X2 1005H MOV 21H,A ;存结果 1007H RET ;子程序结束 1008H TAB:DB 00,01,04 ;平方表 100BH DB 09,225 第三章 MCS-51指令系统(待修)4. 堆栈操作指令 入栈指令:PUSH n ;SPSP+1,(SP)(n) 出栈指令:POP n ;(n)(SP),SPSP-1例:设 A=02,B=56H,执行下列指令后,SP= ? ,A= ? ,B= ?30H02H56H SBR: MOV SP,#30H ;设栈底 PUSH ACC

19、 PUSH B MOV A,#0 MOV B,#01 POP B POP ACC只有压栈指令会改变堆栈区中的数据。 SP SP 02 SP 56H 02 56H SP 02 02HA00H02H00H02H02H SP 第三章 MCS-51指令系统 5. 交换指令(累加器专用交换指令) 实现片内RAM区的数据双向传送。1. 字节交换指令 XCH A,Rn ;(A)(Rn) XCH A,Ri;(A)(Ri) XCH A,direct ;(A)(direct)例:设A= 29H,执行指令 XCH A,2AH后,A= ?(2AH)= ?38H29H29H第三章 MCS-51指令系统 2. 半字节交换

20、指令 XCHD A,Ri ;(A)03 (Ri)03 SWAP A ;(A)47 (A)03例:将片内RAM 2AH和2BH单元中的BCD码转换成压缩式BCD码存入20H单元。MOV A,#0 MOV R0,#2AH MOV R1,#2BHXCHD A,R0SWAP AXCHD A,R1XCH A,20H第三章 MCS-51指令系统例:已知(10H)=5EH,(2BH)=1DH,(40H)=2BH,(60H)=3CH,执行下列程序段后,写出对应寄存器和地址单元的运行结果。 MOV 20H,60HMOV R1, 20HMOV A, 40HXCH A, R1 XCH A, 60HXCH A, R1

21、MOV R0,#10H XCHD A,R0(A)= 、(10H)= 、(2BH)= 、(40H)= 、第三章 MCS-51指令系统 与数据传送指令不同,多数算术运算指令会影响标志位的状态,即CPU执行算术运算指令后,根据数据操作情况自动设置标志位的状态。 状态标志 MCS-51 的程序状态字寄存器 PSW 为标志寄存器。 其格式如下:3-5算术运算指令CyACF0RS1RS0OVP第三章 MCS-51指令系统1标志位(自动设置状态)1)Cy:进位标志位保存运算后最高位的进位/借位状态,当有进位/借位,Cy=1,否则Cy=0。2)AC:辅助进位标志位保存低半字节的进位/借位状态,当D3产生进位/

22、借位,AC=1,否则AC=0。用于十进制调整。3)OV:溢出标志位OV=Cy7Cy6,补码运算产生溢出OV=1,否则OV=0。4)P:奇偶标志位反映累加器A中数据的奇偶性。当1的个数为奇数,P=1,否则P=0。第三章 MCS-51指令系统 2用户选择位(编程设置状态)1)F0:用户自定义标志位。2)RS1、RS0: 工作寄存器区选择位。复位时,PSW=00H例:复位后,设置使用工作寄存 器3区,其余标志位不变。RS1 RS0工作寄存区0 00区0 11区1 02区1 13区CyACF0RS1RS0OVP 解: MOV PSW,#18H第三章 MCS-51指令系统 3-5-1 加减指令 完成源操

23、作数和 累加器A 中数据的加减运算。 1.加法指令 1)不带进位加法:(ADD A,源操作数) ADD A,Rn ADD A,direct ADD A,Ri ADD A,#data 影响Cy、OV、AC、P第三章 MCS-51指令系统例:A=3BH,PSW=0,执行指令 ADD A,#3BH求:A= ? ,Cy= ? ,OV= ? ,AC= ? ,P= ? , PSW= ?01000001= 41H 0011 1011 + 0011 1011 0111 0110CyACF0RS1RS0OVP76H0110第三章 MCS-51指令系统 2)带进位加法: ADDC A,源操作数 ADDC A,Rn

24、 ADDC A,direct ADDC A,Ri ADDC A,#data 影响Cy、OV、AC、P例:A= 9AH,R2= E3H,PSW= 0,执行指令ADDC A,R2 后求:A= ? ,Cy= ? ,OV= ?,AC= ?,P= ?,PSW= ?10000100 = 84H 1001 1010 1110 0011 + 0 1 0111 1101CyACF0RS1RS0OVP7DH1100 注意: 上例中,若将两个操作数看作是无符号数,则操作结果正确;若将它们看作带符号数,则根据PSW中(OV)=1可知加法运算产生了溢出,累加器A中的结果显然是错误的。 因此,采用加法指令编写带符号数的加

25、法运算程序时,要想判断累加器A中获得的结果是否正确就必须检测PSW中标志位OV的状态。第三章 MCS-51指令系统 带进位加法指令ADDC用于多字节运算例:设双字节数 X 存在片内RAM 40H、41H单元,Y存在42H、43H单元,编程求 Z=X+Y,并存入片内RAM单元44H、45H、46H。ADDS:CLR C MOV A,40HADD A,42HMOV 44H,AMOV A,41HADDC A,43HMOV 45H,AMOV A,#0ADDC A,#0MOV 46H,ARET;取被加数低字节;加上加数低字节;保存和的低字节;取被加数高字节;加上加数高字节;保存和的高字节;求高字节进位;

26、子程序结束第三章 MCS-51指令系统3)BCD码十进制调整指令:DAA; 对 A 中加法结果进行调整通常紧跟; AC=1或A309,则A=(A)+06H ; Cy=1或A749,则A=(A)+60H在一条普通加法指令之后,用以实现BCD加法。 十进制加法指令:ADD A,源操作数DA A 带进位十进制加法指令:ADDC A,源操作数DA A第三章 MCS-51指令系统 例3-39:编制8559的BCD加法程序,并对其工作过程进行分析。 解:相应BCD加法程序为: MOV A,#85H;A85H ADD A,#59H;A85H+59H= 0DEH DA A ;A44,Cy=1第三章 MCS-5

27、1指令系统二进制加法和进制调整过程为: 85 1000 0101 +) 59 0101 1001 144 (0)1101 1110 110;低4位9,加6调整 1110 0100 110 ;高4位9,加60H调整 (1) 0100 0100运算结果为(A)=44H,Cy=1 即十进制的144。 第三章 MCS-51指令系统2减法指令(只有带Cy的减法) SUBB A,源操作数;带借位减法指令 SUBB A,Rn ;A(A)-(Rn)-(Cy) SUBB A,direct SUBB A,Ri SUBB A,#data 影响:Cy、OV、AC、P例:(A)= 5AH,(R2)= 5AH,(Cy)=

28、 0,执行下列指令SUBB A,R2求:A= 0,Cy= 0,OV= 0,P= 0,AC= 0.第三章 MCS-51指令系统例3-36设(A)=0C9H,(R0)=60H,(60H)=54H,Cy=1,执行指令:SUBB A,R0 结果为 (A)=74H 标志位为Cy=0,0V=1,AC=0,P=0 01110 1 借位 1100 1001 (A) 0101 0100 (R0) - 1 Cy 0111 0100第三章 MCS-51指令系统3. 增量、减量指令增量指令: INC 单操作数 INC A INC Rn INC direct INC Ri INC DPTR除对A操作影响标志位P以外,不

29、影响标志位状态。第三章 MCS-51指令系统 减量指令:DEC 单操作数 DEC A DEC direct DEC Ri DEC Rn 除对A操作影响标志位P以外,不影响标志位状态。 注意:没有指令 DEC DPTR 可用指令 DEC DPL 代替第三章 MCS-51指令系统3-5-2.乘除指令 MUL AB;BAAB,Cy0,B高字节,A低字节; 当积高字节B=0,OV0;B0,则OV1 DIV AB ;AB,A商,B余数,Cy0, 当除数B=0,OV1;B0,则OV0。例:(A)= 96(60H), (B)= 192(0C0H),执行指令 MUL AB后, 求:A= ,B= ,Cy= ,O

30、V= ,P= . 解: 96 192 = 18432(4800H)例: (A)= 158(F6H),(B)= 13(0DH),执行指令 DIV AB后 求:A= ,B= ,Cy= ,OV= ,P= 解: 158 13 = 12(0CH),余数= 2(02H)。00H 48H 0 1 00CH 02H 0 0 0第三章 MCS-51指令系统3-6 逻辑运算指令一、单操作数指令(A累加器为操作数)1. A清0指令: CLR A ;A02. A取反指令:CPL A ;A/A 3. 循环移位指令: 1)8位循环指令: RL A ;A循环左移一位 RR A ;A循环右移一位 2)9位循环指令: RLC

31、A;带Cy循环左移一位 RRC A;带Cy循环右移一位第三章 MCS-51指令系统例:设 A= 11000101,Cy= 0,分别执行下列单条指令: CPL A ;A= ,Cy= RL A ;A= ,Cy= RLC A ;A= ,Cy= 00111010 0 10001011 0 10001010 1第三章 MCS-51指令系统 用9位循环指令实现多字节移位例:编程将寄存器 R6R5 中的双字节数X左移一位。0CyR6R5CyCLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,A;Cy=0, 设 R6= 55H ,R5= AAH;R6=01010101,

32、R5=10101010,Cy=0;R6=01010101,R5=01010100,Cy=1;R6=10101011,R5=01010100,Cy=0第三章 MCS-51指令系统二、双操作数逻辑运算指令(对位进行逻辑运算):ANL、ORL、XRL(各有6条,以A或direct为目的地址)以ANL指令为例:ANL A,Rn ANL A,direct ANL A,Ri ANL A,#data ANL direct,AANL direct,#data逻辑与指令常用于清零字节中的某些位。逻辑或指令常用于置1字节中的某些位。逻辑异或指令通常用来对某些位取反。第三章 MCS-51指令系统二、双操作数逻辑运算

33、指令(对位进行逻辑运算):例 A=01B,表示随机状态,为1或0, 执行下述一组指令执行后A的值如何? ANL A,#0E7H; ORL A,#03H; ; XRL A,#0C0H;解 :执行上述指令后,A=100011B。将累加器A的内容D4、D3清0将累加器A的内容D1、D0置1将累加器A的内容D7、D6取反第三章 MCS-51指令系统三、位逻辑操作指令 位清0、置1、取反: CLR、SETB、CPL例:CLR C ;Cy0, CLR 40H;位地址40H 0第三章 MCS-51指令系统三双位变量逻辑运算:ANL、ORL: ANL C,40H ;CC(40H) ANL C,/40H ;CC

34、/(40H)例:设 (Cy)=0,(位地址40H)=1,执行指令 ANL C,/40H 后, Cy= ? , (位地址40H)= ? 位地址表示法: 位地址 40H,位寄存器 F0,字节加位 ACC.001第三章 MCS-51指令系统3-7 控制转移指令 转移指令通过改写PC的当前值,从而改变CPU执行程序的顺序,使程序发生跳转。按转移条件分类:1)无条件转移:执行无条件转移指令,程序无条件转移到指定处。2)条件转移:指令中给出转移条件,执行指令时,先测试条件, 若满足条件,则程序发生转移,否则,仍顺序执 行程序。第三章 MCS-51指令系统按转移方式分类:1)绝对转移:指令给出转移目的的绝对

35、地址 nn,执行指令后, PCnn。 例: 地址 源程序 1000H LJMP 2000H 1003H 2000H ;转移目的指令2)相对转移:指令给出转移目的与转移指令的相对偏移量e,执 行指令后,PCPC + e 。 例: 地址 源程序 1000H SJMP 02 1004H ;转移目的指令第三章 MCS-51指令系统一.无条件转移指令 1.长转移指令:LJMP addr16 ;PC addr16 指令转移范围:64KB,无条件转移,不影响任何标志位, addr16往往采用标号表示(如LOOP、LOOP1等) 2.绝对转移指令: AJMP addr11 ;PCPC+2;PC100addr1

36、1 ;PC1511不变 指令转移范围:2KB,目标地址必须与下一条指令的存放地址(PC)+2,即AJMP指令取出后的PC中的地址)在同页( 2KB)内。 转移时要求转移前后保持 PC1511不变。第三章 MCS-51指令系统例:以下是一程序片段,左边为存储器地址,其后一 条AJMP指令在汇编时出错: 07FEH AJMP K11;转移到K11处,在0800H0FFFH页内 0800H 。 。 0E00HK11:。 。 0F80HK12:。 。 0FFEH AJMPK12;汇编此处时报错 1000H 。第三章 MCS-51指令系统3.短转移指令: SJMP e ;PCPC+2,PCPC+e相对偏

37、移量 e为8位补码。 指令转移范围:前126后129字节相对偏移量 e 的计算式:e = 目的指令地址 -(转移指令地址+指令字节数) = 目的地址 - PC当前值编程时,用标号代替转移目的地址,转移指令的操作数交给汇编程序计算。LJMP NEXT AJMP NEXT SJMP NEXT NEXT: 第三章 MCS-51指令系统例:计算转移指令的相对偏移量 e ,并判断是否超出转移范围。 指令地址 源程序 2130H SJMP NEXT 2150HNEXT:MOV A,R2 相对偏移量 = 2150H -(2130H+2)= 001EH, 只取低8位:e = 1EH例:求原地踏步指令的代码码。

38、 HERE: SJMP HERE ; 或 HERE: SJMP $ 偏移量汇编时自动计算出为0FEH,即-2 的补码。第三章 MCS-51指令系统4散转指令(多分支转移指令) JMP A+DPTR. ;PC(A)+(DPTR) 指令转移范围64KB。应用:处理功能键。要求不同功能键执行不同程序段。设每个功能键对应一个键值 X(0XFH)。设X已存入片内RAM的40H单元中。若X=0,则执行程序段FUNC0若X=1,则执行程序段FUNC1。KEY: MOV DPTR,#KTAB MOV A,40H ADD A,40H JMP A+DPTRKTAB: AJMP FUNC0 AJMP FUNC1 F

39、UNC0: FUNC1: 第三章 MCS-51指令系统二条件转移指令 条件转移指令形成程序的分支,赋予计算机判断决策能力,转移条件:1)标志位的状态 2)位地址中的状态 1.判零转移指令 JZ e ;PC(PC)+2, ;若(A)=00H,PC(PC)+e(转移), ;若(A)00H,PC不变(不转移) JNZ e ;PC(PC)+2,若A00H, ;PC (PC) + e(转移) ;若(A)=00H,PC不变(不转移) 2.判Cy转移指令 JC e ;Cy=1则转移,Cy=0不转移 JNC e ;Cy=0则转移,Cy=1不转移第三章 MCS-51指令系统3.判位转移指令JB bit,e ;(

40、b)=1转移,否则不转移 JNB bit,e ;(b)=0转移,否则不转移4.判位清0转移指令: JBC bit,e ;(b)=1转移,且b0,否则不转移5. 比较不相等转移指令: CJNE 操作数1,操作数2,e CJNE A,n,e ;PC(PC)+3;若A(n),则PC(PC)+e ;且当(A)(n),Cy0,当(A)(n),Cy1 ;若(A) =(n),PC不变,且(Cy)=0。 相当于两个操作数相减,仅影响标志状态,不保存结果。 相对转移范围:下一条指令始地址的前128后127。第三章 MCS-51指令系统例:以下程序中,执行第一条比较不相等转移指令后,将根据R4的内容大于35H、等

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论