mcs51单片机指令系统与编程(编辑修改稿)内容摘要:

, SP=30H 例 17: 当 SP=06H, DPTR 的内容为 1234H,求执行指令的结果是什么。 解: PUSH DPH ; SP← SP+1, SP=07H,( SP) ← ( DPH), ( SP) =( 07H) =12H PUSH DPL ; SP← SP+1, SP=08H,( SP) ← ( DPL), ( SP) =( 08H) =34H 结果为:( 07H) =12H,( 08H) =34H, SP=08H, DPTR=1234H 执行程序后: DPTR=0123H, SP=30H 交换指令 交换指令是将操作数自源地地址送到目的地。 该指令共有五条,它在数据传送任务上更 9 为出色而且不易丢 失信息。 ( 1) 字节交换指令 格式: XCH A, Rn ; A Rn XCH A, @Ri ; A ( Ri) XCH A, direct ; A ( direct) 功能:将 A的内容与源字节中的内容互换。 例 18: 设( R0) =20H,( A) =3FH,( 20H) =74H XCH A, @R0 ; ( A) =74H,( 20H) =3FH 执行程序后:实现了累加器 A和内部数据 RAM 中的 20H 单元内 容互换。 ( 2) 半字节交换指令 格式: XCHD A, @Ri ; A3~0 ( Ri) 3~0,高四位不变。 功能:将累加器 A中的内容的低四位与 Ri 所指的片内 RAM 单元中的低四位互换,但 它们的高四位均不变。 ( 3) 累加器高低四位互换指令 格式: SWAP A ; A7~4 A3~0 功能:把累加器 A中的内容的高、低四位互相交换。 例 19: 如果要使内 RAM 30H 单元与 50H 单元中的内容互换,该怎样编制程序。 解法一: 用交换换 类指令。 XCH A, 30H ; A ← ( 30H) XCH A, 50H ; A ← ( 50H) XCH A, 30H ; A ← ( 30H) 解法二:用栈操作指令。 PUSH 30H MOV 30H, 50H POP 50H 解法三:用传送指令。 MOV A, 30H MOV 30H, 50H MOV 50H, A 数据的传送指令汇总一览表 10 表 2— 2 MCS— 51 型单片机数据传送类指令 二、算术指令 MCS-51单片机的算术运算类指令共计24条,它主要完成加、减、乘、 除四则运算,以及加1指令、减1指令、二 — 十进制调整操作,这些指令一般都影响标志位。 1、加法指令 加法指令共有8条,都是以累加器内容作为相加的一方,相加后的和被送回累加器中,影响标志AC、CY、OV、P。 类 型 助记符 功能 机器码 字节数 周期数 片内 RAM 传送 指令 MOV A, Rn A ← Rn 11101rrr 1 1 direct A← ( direct) E5 direct 2 1 @Ri A ← ( Ri) 1110011i 1 1 data A ← data 74data 2 1 MOV Rn, A Rn← A 11111rrr 1 1 direct Rn← ( direct) 10101rrr direct 2 2 data Rn← data 01111rrr data 2 1 MOV direct1, A (direct1)← A F5 direct1 2 1 Rn (direct1)← Rn 10001rrr direct1 2 2 direct2 (direct1)← (direct2) 85 direct2 direct1 3 2 @Ri (direct1)← ( Ri) 1000011i direct1 2 2 data (direct1)← data 75direct1 data 3 2 MOV @Ri, A (Ri)← A 11110111 1 1 direct (Ri)← (direct) 1010011i direct 2 2 data (Ri)← data 0111011i data 2 1 片外 RAM 传送 指令 MOV DPTR,data16 DPTR← data16 90dataH dataL 3 2 MOVX A,@Ri A← ( Ri) 1110001i 1 1 MOVX A,@DPTR A← ( DPTR) E0 1 2 MOVX @Ri,A (Ri)← A 1111001i 1 2 MOVX@DPTR, A (DPTR)← A F0 1 2 ROM 传送 指令 MOVC A,@A+PC A← ( A+PC) 83 1 2 MOVC A,@A+DPTR A← (A+DPTR) 93 1 2 交换 指令 XCH A,Rn A Rn 11001rrr 1 1 XCH A,@Ri A (Ri) 1100011i 1 1 XCH A,direct A (direct) C5 direct 2 1 XCHD A,@Ri A3~0 (Ri)3~0 1101011i 1 1 SWAP A A3~0 A7~4 C4 1 1 堆栈 指令 PUSH direct SP← SP+1 (SP)← (direct) C0 direct 2 2 POP direct (direct) ← (SP) SP ← SP1 D0 direct 2 2 11 (1) 不带进位加法指令(4条) 格式: ADD A,# data ;A ← A+ data ADD A, direct ;A ← A+( direct) ADD A, @Ri ; A← A+( Ri) ADD A, Rn ;A ← A+ Rn 功能:将两个操作数相加,再送回累加器中。 例 20:某程序执行指令为 : MOV A, #OC3H ADD A, #OAAH 求执行结果,并说明对状态字的影响。 解: 11000011(OC3H) +) 10101010(OAAH) 01101101 结果为A=6DH Cy=1,OV=1 AC=0,P=1 例 21:8位数加法的两个程序如下: ( 1)MOV A,#ACH; (2)MOV A,#54H ADD A,#85H; ADD A,#27 H 给出程序执行结果,并说明对状态标志的影响。 (1) 1 0 1 0 1 1 0 0 (ACH) ( 2) 0 1 0 1 0 1 0 0 ( 54H) + 1 0 0 0 0 1 0 1 (85H) + 0 0 1 0 0 1 1 1 (27H) 0 0 1 1 0 0 0 1 0 1 1 1 1 0 1 1 无进位 AC=0 1⊕ 0=1 0⊕ 0=0, OV=0 有进位 C=1 无进位 C=0 结果: CY=1, OV=1, AC=1, P=1 结果: Cy=0, OV=0, AC=0, P=1 A=31H A=7BH 说明: OV— 带符号数运算时和的第 7 位中有一位产生进位而另一位不产生进位,则使OV置 1,否则被清 0。 例 22: 求执行指令 ADDC A , R0 的结果,设 R0=55H, A=OAAH, Cy=1。 解: 10101010 ( 0AAH) 01010101 ( 55H) +) 1 ( Cy) 00000000 结果: A=00H, Cy=0, AC=0, OV=0, P=0 例 23:设 A=85,( 30H) =6DH, Cy=1,执行指令 ADDC A , 30H 解: 10000101( 85H) 01101101( 6DH) +) 1 ( Cy) 11110011 结果: A=F3H, Cy=0, OV=0, AC=1, P=0 例 24:编写程序计算 4455H+22FFH 的结果。 1 1 1 12 编程说明:由于两个加数均为 16 位数,应分二步编程计算, ① 先将二数低 8 位相加,若有进位存入 Cy 中。 ② 再将二数高 8 位同 Cy 相加后,结果分别存入 40H, 41H 单元中。 解: MOV A , 55H ;取第一个加数的低 8 位 ADD A , 0FFH ;两个加数低 8 位相加 MOV 40H , A ;存入低 8 位和 MOV A , 44H ;取第一个加数的高 8 位 ADDC A, 22H ;两个加数高 8 位和 Cy 相加 MOV 41H , A ;存入高 8 位和 带借位减法指令 该指令有 4 条,以累加器内容作为被减数,减后的差被送回累加器。 格式: SUBB A , data ; A← Adata— Cy SUBB A , Rn ; A← ARn— Cy SUBB A , direct ; A← A( direct) — Cy SUBB A , @Ri ; A← A( Ri) — Cy 功能:累加器 A中的内容减去原操作数中的内容及进位位 Cy,差再存入累加器 A中。 例 25:当执行程序指令 SUBB A , 64H 的结果,设 A=49H, Cy=1。 解: 01001001( 49H) 01100100( 64H) — ) 1 11100100 结果: A=E4H, Cy=1, P=0, AC=0, OV=0 减法运算对 PSW 中的影响: (1) 减法运算的最高位有借位时,进位位 Cy 置位为 1,否则 Cy 为 0。 (2) 减法运算时低 4 位向高 4 位有借位时,辅助进位位 AC 置位为 1,否则 AC 为 0。 (3) 减法运算过程中,位 6 和位 7 同时借位时溢出标志位 OV 为 1,否则 OV 为 0。 (4) 运算结果中“ 1”的个数为奇数时(注意:不计借 CY 中的 1),奇偶校验位 P 置 1,否则 P 为 0。 (5) 由于减法只有带借位减法一条指令,所以在单字节相减时,须先清借位位( CLR C)。 (6) 加法运算与 上述减法运算类似,这里不缀述了。 例 26:设 A=D9H, R0=87H,求执行减法指令后的结果。 程序为: CLR C SUBB A, R0 解: 11011001( D9H) 10000111( 87H) 0( Cy)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。