《[工学]专题四指令系统课件》由会员分享,可在线阅读,更多相关《[工学]专题四指令系统课件(69页珍藏版)》请在金锄头文库上搜索。
1、课程名称:课程名称:计算机硬件技术基础计算机硬件技术基础本讲内容:本讲内容: 专题四专题四 MCS-51指令系统指令系统HebeiHebei University of Technology University of Technology主讲教师:主讲教师: 赵晓安赵晓安河北工业大学计算机科学与软件学院计算机基础教学部河北工业大学计算机科学与软件学院计算机基础教学部河北工业大学计算机科学与软件学院计算机基础教学部河北工业大学计算机科学与软件学院计算机基础教学部河北省级精品课河北省级精品课课程内容:课程内容:MCS-51单片机原理及应用单片机原理及应用本讲的教学目标和教学方法本讲的教学目标和教
2、学方法教学目标:教学目标: 使学生掌握使学生掌握使学生掌握使学生掌握MCS-51MCS-51单片机指令的算数运算、逻单片机指令的算数运算、逻单片机指令的算数运算、逻单片机指令的算数运算、逻辑运算、位操作、控制转移指令,为后续学习计算程辑运算、位操作、控制转移指令,为后续学习计算程辑运算、位操作、控制转移指令,为后续学习计算程辑运算、位操作、控制转移指令,为后续学习计算程序打好基础。序打好基础。序打好基础。序打好基础。教学方法:教学方法: 1 1、比较法:与高级语言比较不同点、比较法:与高级语言比较不同点、比较法:与高级语言比较不同点、比较法:与高级语言比较不同点 2 2、比喻法、比喻法、比喻法
3、、比喻法 3 3、启发式、启发式、启发式、启发式重点、难点重点、难点重点:重点:重点:重点: 1 1 1 1、算数运算指令、算数运算指令、算数运算指令、算数运算指令 2 2 2 2、逻辑运算指令、逻辑运算指令、逻辑运算指令、逻辑运算指令 3 3 3 3、位操作指令、位操作指令、位操作指令、位操作指令 4 4 4 4、控制转移指令、控制转移指令、控制转移指令、控制转移指令难点:难点:难点:难点: 1 1 1 1、BCDBCDBCDBCD码减法的调整;码减法的调整;码减法的调整;码减法的调整; 2 2 2 2、位操作与字节操作的区别。、位操作与字节操作的区别。、位操作与字节操作的区别。、位操作与字
4、节操作的区别。 3 3 3 3、子程序调用与返回、子程序调用与返回、子程序调用与返回、子程序调用与返回3.3.2 3.3.2 算术运算指令:算术运算指令:算术运算指令:算术运算指令: 例例例例3-13 23-13 2个字节数求和个字节数求和个字节数求和个字节数求和 例例例例 3-16 DEC3-16 DEC 例例例例 3-19 3-19 例例例例 3-20 3-20 (统招)(统招)(统招)(统招)3.3.33.3.3逻辑运算指令逻辑运算指令逻辑运算指令逻辑运算指令 例例例例 3-23 3-24 3-25 3-23 3-24 3-25 3.3.4 3.3.4 位操作指令位操作指令位操作指令位操
5、作指令 例例例例 3-273-27 本讲基本内容本讲基本内容3.3.2 3.3.2 算数运算指令算数运算指令算数运算指令算数运算指令1 1、加法指令、加法指令、加法指令、加法指令1 1)不带进位的加法指令)不带进位的加法指令)不带进位的加法指令)不带进位的加法指令 ADDADD2 2)带进位的加法指令)带进位的加法指令)带进位的加法指令)带进位的加法指令 ADDC ADDC 3 3)加)加)加)加1 1指令指令指令指令 INCINC2 2、减法指令、减法指令、减法指令、减法指令1 1)带借位减法指令)带借位减法指令)带借位减法指令)带借位减法指令 SUBBSUBB2 2)减)减)减)减1 1指
6、令指令指令指令 DECDEC3 3、乘法指令、乘法指令、乘法指令、乘法指令 MULMUL4 4、除法指令、除法指令、除法指令、除法指令 DIVDIV5 5、二、二、二、二十进制调整指令十进制调整指令十进制调整指令十进制调整指令 DA ADA A 注意:对注意:对注意:对注意:对PSWPSW的影响的影响的影响的影响3.3.3 3.3.3 逻辑运算指令逻辑运算指令逻辑运算指令逻辑运算指令1 1、逻辑、逻辑、逻辑、逻辑“ “与与与与” ”、“ “或或或或” ”、“ “异或异或异或异或” ”指令指令指令指令 ANL ANL 、ORLORL、XRL XRL 2 2、移位指令、移位指令、移位指令、移位指令
7、 RLRL、RLCRLC、RRRR、RRCRRC3 3、清零、取反指令、清零、取反指令、清零、取反指令、清零、取反指令 CLRCLR、CPL CPL 3.3.4 3.3.4 位操作指令位操作指令位操作指令位操作指令1 1、位传送指令、位传送指令、位传送指令、位传送指令 MOV MOV 2 2、位变量修改指令、位变量修改指令、位变量修改指令、位变量修改指令 CLRCLR、SETBSETB、CPLCPL3 3、位逻辑运算指令、位逻辑运算指令、位逻辑运算指令、位逻辑运算指令 ANLANL、ORL ORL 3.3.2 算术运算类指令算术运算类指令1、程序状态字、程序状态字 PSWCyCy:进位标志;布
8、尔累加器进位标志;布尔累加器进位标志;布尔累加器进位标志;布尔累加器ACAC:辅助进位标志(半进位)辅助进位标志(半进位)辅助进位标志(半进位)辅助进位标志(半进位)F0F0:用户标志:用户标志:用户标志:用户标志RS1/RS0RS1/RS0:寄存器选择寄存器选择寄存器选择寄存器选择OVOV:溢出标志溢出标志溢出标志溢出标志P P:奇偶标志奇偶标志奇偶标志奇偶标志D7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D2 D1 D0CyCy ACAC F0F0 RS1RS1 RS0RS0 OVOV- -P P算术运算类指令对算术运算类指令对PSW的影响的影响指令助指令助指
9、令助指令助记记符符符符影影影影 响响响响 标标 志志志志指令助指令助指令助指令助记记符符符符影影影影 响响响响 标标 志志志志ADD ADD (加)(加)(加)(加)ADDC ADDC (带进带进位加)位加)位加)位加)SUBB SUBB (带带借位减)借位减)借位减)借位减)Cy OV ACCy OV AC MUL MUL (乘)(乘)(乘)(乘)DIV DIV (除)(除)(除)(除)DA DA (二十(二十(二十(二十进进制制制制调调整)整)整)整)Cy OV ACCy OV AC0 0 0 0 注意:注意:注意:注意:P352P352附表附表附表附表2 2 INC INC 指令指令指令
10、指令 和和和和 DECDEC指令对指令对指令对指令对Cy Cy 没有影响没有影响没有影响没有影响 凡是凡是凡是凡是A A 累加器作目的操作数的指令均影响累加器作目的操作数的指令均影响累加器作目的操作数的指令均影响累加器作目的操作数的指令均影响P P标志标志标志标志这是重点这是重点不同于高级语言不同于高级语言2、加法指令、加法指令不带进位的加法指令不带进位的加法指令带进位的加法指令带进位的加法指令加加 1 指令指令二二-十进制调整指令十进制调整指令1)不带进位的加法指令)不带进位的加法指令ADD A,Rn ; (A)-(A)+(Rn)ADD A, direct ;(A)-(A)+(direct)
11、ADD A,Ri ;(A)-(A)+(Ri)ADD A,#data ;(A)-(A)+#data 例例例例3 31010 试分析试分析试分析试分析80318031执行如下指令后累加器执行如下指令后累加器执行如下指令后累加器执行如下指令后累加器AA和和和和PSWPSW中各标志位的变化状况。中各标志位的变化状况。中各标志位的变化状况。中各标志位的变化状况。 MOV A MOV A ,#9EH #9EH ;9EH =1589EH =158 ADD A ADD A ,#71H #71H ;71H =11371H =113Cy AC F0 RS1 RS0 OV Cy AC F0 RS1 RS0 OV P
12、 P1 10 00 00 00 00 00 00 0 若把两个操作数看若把两个操作数看若把两个操作数看若把两个操作数看成无符号数,成无符号数,成无符号数,成无符号数,CyCy1 1,表示结果超出(表示结果超出(表示结果超出(表示结果超出(0 0255255),运算结果为),运算结果为),运算结果为),运算结果为10FH10FH,即,即,即,即271271; 若把两个操作数看成若把两个操作数看成若把两个操作数看成若把两个操作数看成带符号数,带符号数,带符号数,带符号数,OVOV0 0,无,无,无,无溢出,结果正确,溢出,结果正确,溢出,结果正确,溢出,结果正确,(AA)0FH=150FH=15。
13、 9EH=-989EH=-98补补补补 -98+113=15-98+113=15OVOVC8C8 C7C71 1 1 10 0 CyCy1 1 2)带进位的加法指令)带进位的加法指令ADDC A,Rn ;(A)-(A)+(Rn)+(C)ADDC A,direct ;(A)-(A)+(direct) +(C)ADDC A,Ri ;(A)-(A)+(Ri) +(C)ADDC A,#data ;(A)-(A)+#data +(C) 例例例例3 31212 设(设(设(设(A A)0AAH0AAH,(,(,(,(R0R0)55H55H,CyCy1 1,执行,执行,执行,执行指令指令指令指令ADDC A
14、,R0,ADDC A,R0,求求求求 (A A), ,Cy,AC,OV,PCy,AC,OV,P, ,(PSWPSW)解:竖式:解:竖式:解:竖式:解:竖式:(A A)00H00H,Cy=1Cy=1,AC=1AC=1,OV=0OV=0,P=0P=0(PSWPSW)11000000B=0C0H11000000B=0C0H1 11 13 3、加、加 1 1 指令指令INC A ;(A)(A)+1INC Rn ;(Rn)(Rn)+1INC direct ;(direct)(direct)+1INC Ri ;(Ri) )(Ri) )+1INC DPTR ;(DPTR)(DPTR)+1 例例例例3 313
15、13 设设设设20H20H21H21H单元存放一个单元存放一个单元存放一个单元存放一个1616位二进制数位二进制数位二进制数位二进制数X1X1(高(高(高(高8 8位存于位存于位存于位存于21H21H单元),单元),单元),单元),30H30H31H31H单元存放另一个单元存放另一个单元存放另一个单元存放另一个1616位二进制数位二进制数位二进制数位二进制数X2X2(高(高(高(高8 8位存于位存于位存于位存于31H31H单单单单元)。求元)。求元)。求元)。求X1X1X2X2,和存于,和存于,和存于,和存于20H20H21H21H,设两数之和不超过,设两数之和不超过,设两数之和不超过,设两数
16、之和不超过1616位。位。位。位。解:程序如下:解:程序如下:解:程序如下:解:程序如下:ORGORG2000H2000HMOVMOVR0 R0 ,#20H#20HMOVMOVR1 R1 ,#30H#30HMOVMOVA A ,R0R0;取被加数低;取被加数低;取被加数低;取被加数低8 8位位位位ADDADDA A ,R1R1;求和的低;求和的低;求和的低;求和的低8 8位位位位MOVMOVR0 R0 ,A A;存和的低;存和的低;存和的低;存和的低8 8位位位位INCINCR0R0;指向被加数高;指向被加数高;指向被加数高;指向被加数高8 8位位位位INCINCR1R1;指向加数高;指向加数
17、高;指向加数高;指向加数高8 8位位位位MOVMOVA A ,R0R0;取被加数高;取被加数高;取被加数高;取被加数高8 8位位位位ADDCADDC A A ,R1R1;求和的高;求和的高;求和的高;求和的高8 8位位位位MOVMOVR0 R0 ,A A;存和的高;存和的高;存和的高;存和的高8 8位位位位SJMPSJMP$ $;停机;停机;停机;停机ENDEND (21H) (20H) (21H) (20H) + (31H) (30H) + (31H) (30H)Cy(21H) (20H)Cy(21H) (20H) ADDC ADD ADDC ADD运算结果运算结果运算结果运算结果高高高高8
18、 8位存于位存于位存于位存于21H21H单元,单元,单元,单元,低低低低8 8位存于位存于位存于位存于20H20H单元。单元。单元。单元。R0R0R1R14 4、二、二- -十进制调整指令十进制调整指令DA A 调整原则:调整原则:调整原则:调整原则:形式上形式上形式上形式上非非非非BCDBCD码码码码 需要加需要加需要加需要加 06H06H、60H60H、66H66H调整调整调整调整形式上是形式上是形式上是形式上是BCDBCD码时:码时:码时:码时:CY AC CY AC 调整原则调整原则调整原则调整原则 0 0 0 0 不调整不调整不调整不调整 0 1 +06H0 1 +06H 1 0 +
19、60H 1 0 +60H 1 1 +66H 1 1 +66H 例例例例3 31919 编写程序完成编写程序完成编写程序完成编写程序完成78789393的的的的BCDBCD加法程序,并对调整加法程序,并对调整加法程序,并对调整加法程序,并对调整过程进行分析。过程进行分析。过程进行分析。过程进行分析。解:相应解:相应解:相应解:相应BDCBDC加法程序为加法程序为加法程序为加法程序为ORG 3000HORG 3000HMOV A MOV A ,#78H#78H;(;(;(;(A A)78H78HADD A ADD A ,#93H#93H;(;(;(;(A A)78H78H93H93H0BH , C
20、y=10BH , Cy=1DADAA A SJMP $SJMP $ENDEND执行结果:执行结果:执行结果:执行结果:(A A A A)71H71H71H71H,考虑进位标志(,考虑进位标志(,考虑进位标志(,考虑进位标志(CyCyCyCy)1 1 1 1,操作结果为,操作结果为,操作结果为,操作结果为171H171H171H171H。 3、减法指令、减法指令SUBB A,Rn ;(A)-(A)-(Rn)-(C)SUBB A,direct ;(A)-(A)-(direct) -(C)SUBB A,Ri ;(A)-(A)-(Ri) -(C)SUBB A,#data ;(A) 减数减数减数减数 ,
21、则差为正,则差为正,则差为正,则差为正,借位标志为借位标志为借位标志为借位标志为0 0 0 0;若被减数若被减数若被减数若被减数 =源源源源字节则字节则字节则字节则(C)=0;(C)=0; 若目的字节若目的字节若目的字节若目的字节 源源源源字节则字节则字节则字节则(C)=1(C)=1。指令:指令:指令:指令:CJNE A,direct,rel;CJNE A,direct,rel;CJNE CJNE A,#data,relA,#data,rel; ;CJNE CJNE Rn,#data,relRn,#data,rel; ;CJNE CJNE Ri,#data,relRi,#data,rel条件:
22、减条件:减1 1条件转移指令条件转移指令格式格式: DJNZ Rn,rel; rel:8位相对偏移量位相对偏移量功能功能:(PC):(PC)(PC)+2,(PC)+2,(Rn) ) ( (Rn)-1)-1 IF (Rn)IF (Rn) 0 THEN 0 THEN (PC)(PC)(PC)+rel ELSE go on(PC)+rel ELSE go on格式格式: DJNZ direct,rel; rel:8位相对偏移量位相对偏移量功能功能:(PC):(PC)(PC)+3, (PC)+3, (direct) direct) (direct)-1 (direct)-1 IF (direct) I
23、F (direct) 0 THEN 0 THEN (PC)(PC)(PC)+rel ELSE go on(PC)+rel ELSE go on位控制:判位控制:判CyCy转移指令转移指令格式格式: JC rel; rel:8位相对偏移量位相对偏移量功能功能:(PC):(PC)(PC)+2,(PC)+2, IF (C)=1 THEN IF (C)=1 THEN (PC)(PC)(PC)+rel ELSE go on(PC)+rel ELSE go on格式格式: JNC rel; rel:8位相对偏移量位相对偏移量功能功能:(PC):(PC)(PC)+2,(PC)+2, IF (C)IF (C)
24、= =0 THEN 0 THEN (PC)(PC)(PC)+rel ELSE go on(PC)+rel ELSE go on位控制:判直接位寻址转移指令位控制:判直接位寻址转移指令格式格式: JB bit,rel; rel:8位相对偏移量位相对偏移量功能功能:(PC):(PC)(PC)+3,(PC)+3, IF (bit)=1 THEN IF (bit)=1 THEN (PC)(PC)(PC)+rel ELSE go on(PC)+rel ELSE go on格式格式: JNB bit,rel; rel:8位相对偏移量位相对偏移量功能功能:(PC):(PC)(PC)+3,(PC)+3, IF
25、 (bit)IF (bit)= =0 THEN 0 THEN (PC)(PC)(PC)+rel ELSE go on(PC)+rel ELSE go on位控制:位控制:判判直接位寻址转移指令直接位寻址转移指令格式格式格式格式: : JBC bit,rel; relrel: : 8 8位相对偏移量位相对偏移量位相对偏移量位相对偏移量功能功能功能功能: (PC): (PC)(PC)+3,(PC)+3, IF (bit)=1 THEN IF (bit)=1 THEN (PC)(PC)(PC)+ 3 +(PC)+ 3 +relrel ,(bit) ,(bit) 0 0 ELSE go on ELSE
26、 go on 判判判判1 1 1 1成立先清零后转移。成立先清零后转移。成立先清零后转移。成立先清零后转移。图316 JBC指令执行流程示意图机器语言中:机器语言中:rel 是是-128,+127内的补码内的补码汇编语言中:汇编语言中: rel的书写形式的书写形式 1、jc loop ;loop代表代表目标地址目标地址 2、jc $-5 ; $-5 也代表目标地址也代表目标地址 3.3.5.2 子程序调用与返回指令子程序调用与返回指令1、子程序的调用过程与子程序嵌套、子程序的调用过程与子程序嵌套2、调用指令、调用指令(1)长调用指令)长调用指令 LCALL(2)绝对调用指令)绝对调用指令ACA
27、LL3、返回指令、返回指令RET 子程序的调用过程与子程序嵌套子程序的调用过程与子程序嵌套主程序要调用主程序要调用子程子程子程子程序时通过序时通过序时通过序时通过CALL CALL 指令指令指令指令子程序执行完后通过子程序执行完后通过子程序执行完后通过子程序执行完后通过RET RET 指令返回指令返回指令返回指令返回防止自然进入子程序防止自然进入子程序防止自然进入子程序防止自然进入子程序和自然退出子程序和自然退出子程序和自然退出子程序和自然退出子程序子程序嵌套子程序嵌套子程序嵌套子程序嵌套正在执行主程正在执行主程序序CPU正在执行正在执行子程序子程序SubACPU正在执行正在执行子程序子程序S
28、ubB子程序调用与返回指令子程序调用与返回指令长调用指令长调用指令长调用指令长调用指令 LCALL addr16LCALL addr16;(PC) (PC) (PC)+3 (PC)+3 , (SP) , (SP) (SP)+1(SP)+1,(SP) (SP) (PC )(PC ) 0707 , , (SP) (SP) (SP)+1(SP)+1,(SP) (SP) (PC )(PC ) 815815 , , (PC ) (PC ) 016016 addr16addr16 绝对调用指令绝对调用指令绝对调用指令绝对调用指令 ACALL addr11;ACALL addr11;(PC) (PC) (P
29、C)+2(PC)+2, (SP) (SP) (SP)+1(SP)+1, (SP) (SP) (PC )(PC ) 0707 (SP) (SP) (SP)+1,(SP) (SP)+1,(SP) (PC )(PC ) 815815 , , (PC ) (PC ) 010010 addr11 ,(PC )addr11 ,(PC ) 11151115 不变不变不变不变 返回指令返回指令返回指令返回指令 RET;RET; (PC ) (PC ) 815815(SP),(SP) (SP),(SP) (SP)-1(SP)-1 (PC ) (PC ) 07 07 (SP),(SP) (SP),(SP) (SP
30、)-1(SP)-1 例例例例3-313-31 已知:(已知:(已知:(已知:(SPSP)50H50H,符号地址,符号地址,符号地址,符号地址“ “SUB”SUB”所对应的程序所对应的程序所对应的程序所对应的程序存储器存储器存储器存储器ROMROM的实际地址为的实际地址为的实际地址为的实际地址为0328H0328H,在(,在(,在(,在(PCPC)0123H0123H处执行处执行处执行处执行LCALL SUBLCALL SUB后堆栈指针后堆栈指针后堆栈指针后堆栈指针SPSP、堆栈中内容以及程序计数器、堆栈中内容以及程序计数器、堆栈中内容以及程序计数器、堆栈中内容以及程序计数器PCPC中的内容是什
31、么?中的内容是什么?中的内容是什么?中的内容是什么?执行结果:执行结果:执行结果:执行结果: (PCPC)3 30123H0123H3 30126H0126H; 先后压入堆栈:先后压入堆栈:先后压入堆栈:先后压入堆栈: (SPSP)1 151H51H压入压入压入压入26H26H,即,即,即,即(SP)=(51H)=26H(SP)=(51H)=26H (SPSP)1 152H52H压入压入压入压入01H01H,即,即,即,即(SP)=(52H)=01H(SP)=(52H)=01H (SPSP)52H52H, SUBSUB0328H0328H送入送入送入送入PCPC,即,即,即,即 (PCPC)0
32、328H0328H,程序转向目标地址,程序转向目标地址,程序转向目标地址,程序转向目标地址0328H0328H为首地址的子程序为首地址的子程序为首地址的子程序为首地址的子程序执行。执行。执行。执行。 例例例例3-323-32 设(设(设(设(SPSP)50H50H,符号地址,符号地址,符号地址,符号地址“ “SUB”SUB”所对应的程序存所对应的程序存所对应的程序存所对应的程序存储器储器储器储器ROMROM实际地址为实际地址为实际地址为实际地址为0328H0328H,在(,在(,在(,在(PCPC)0123H0123H处执行处执行处执行处执行指令:指令:指令:指令:ACALL SUBACALL
33、 SUB执行结果:执行结果:执行结果:执行结果:(PCPC)2 20123H0123H2 20125H0125H;先后压入堆栈:先后压入堆栈:先后压入堆栈:先后压入堆栈: (SPSP)1 151H51H压入压入压入压入25H25H,即,即,即,即(SP)=(51H)=25H(SP)=(51H)=25H (SPSP)1 152H52H压入压入压入压入01H01H;即;即;即;即(SP)=(55H)=01H(SP)=(55H)=01H (SPSP)52H52H, SUBSUB0328H0328H送入送入送入送入PCPC,即,即,即,即(PCPC)0328H0328H,程序转向目标地址,程序转向目标
34、地址,程序转向目标地址,程序转向目标地址0328H0328H为首地址的子程为首地址的子程为首地址的子程为首地址的子程序执行。序执行。序执行。序执行。 这里这里这里这里PCPC值的高值的高值的高值的高5 5位内容不变,即把位内容不变,即把位内容不变,即把位内容不变,即把123H123H变成变成变成变成328H328H。寻址在包含寻址在包含寻址在包含寻址在包含0125H0125H地址在内的同一个地址在内的同一个地址在内的同一个地址在内的同一个2kB2kB范围内。范围内。范围内。范围内。 2kB2kB范围:范围:范围:范围:0000H07FFH0000H07FFH(高五位(高五位(高五位(高五位00
35、000B00000B)子程序调用与返回指令子程序调用与返回指令举例举例 ORG 0000HORG 0000HSTART: MOV SP,#6FHSTART: MOV SP,#6FH MOV A,#0MOV A,#0 ACALL SUB1ACALL SUB1N01: N01: MOV A,#0MOV A,#0 LCALL SUB2LCALL SUB2N0N02 2: : SJMP SJMP $ $SUSUB1B1:INC A:INC A RET RETSUB2:DEC ASUB2:DEC A RET RET ENDENDSPSP6FH6FH70H70H71H71HN01L8N01L8N01H8N01H8PC07PC07PC815PC815ACALL SUB1 ACALL SUB1 后后后后(PC)=SUB1(PC)=SUB1(PC)=N01(PC)=N01RET RET 后后后后SPSP作作 业业作业:作业: p99 3-10、3-11、3-12