文档详情

第3章80C51的指令系统1.ppt

发布:2017-01-04约1.37万字共81页下载文档
文本预览下载声明
第3章 80C51的指令系统 3.1 指令格式及常用符号 单字节指令(49条) 双字节指令(45条) 书写格式 描述符号 一般不影响标志寄存器PSW的状态。 1、16位传送(仅1条) MOV direct,direct 以DPTR内容为基址 读片外RAM 入栈指令PUSH 字节交换指令XCH 半字节交换指令XCHD 1、当(01H)=00H,将78H入R0中,PSW中RS1RS0 =00,有几种方法?分别是什么? MOV R0,#78H MOV @R1,#78H MOV 00H,#78H 2、将内部RAM中30H和31H的低半字节组成一个字节放入片内RAM中32H中。 3、片外RAM中0060H内容片内RAM31H内容低4位互换后送回到片外0061H中。 CY为1,无符号数(字节)加减发生进位或借位 OV为1,有符号数(字节)加减发生溢出错误 AC为1,十进制数(BCD码)加法的结果应调整 P为1,存于累加器A中操作结果的“1”的个数为奇数 将内部RAM33H~30H与RAM43H~40H连续四字节的内容相加后结果存于内部RAM33H~30H中 MOV R7,#4 MOV R0,#30H MOV R1,#40H CLR C LOP: MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R7,LOP RET CY为1,表示D7位需借位 AC为1,表示D3位需借位 OV为1,表示“D6有借位D7无借位”或“D7有借位D6无借位” 3.5 逻辑运算与循环类指令(24条) 例:将片内RAM31H30H整体带进位的左移1位。 CLR C MOV A,30H RLC A MOV 30H,A MOV A,31H RLC A MOV 31H,A 3.6 控制转移类指令(17条) 条件转移类指令范例——方案一 条件转移类指令范例——方案二 条件转移类指令范例——方案三 条件转移类指令范例——方案四 3.7 位操作类指令(17条) 位操作是以位为单位进行的各种操作。位操作指令中的位地址有4 种表示形式: 长跳转 LJMP addr16 ;PC ← addr16 相对转移 SJMP rel ;PC ←(PC)+ 2,PC ←(PC)+ rel 目标地址rel 对应范围为 +127 ~-128。 【例】若“NEWADD”为地址1022H,PC的当前值为1000H。执行指令 SJMP NEWADD 后,程序将转向1022H处执行(rel=20H= 1022H-1000H-2)。解析如下: 散转移 JMP @A+DPTR;PC ←(PC)+ 1,PC ←(A)+(DPTR) 可完成多条判跳指令的功能 mov a,r7 add a,r7 MOV DPTR,#TABLE JMP @A+DPTR TABLE:AJMP ROUT0 AJMP ROUT1 AJMP ROUT2 AJMP ROUT3 据R7内容转移 3.6.2 条件转移 累加器判0转移 比较不等转移 减1不为0转移 【例】有一段程序如下,该程序执行后, (A)=10+9+8+7+6+5+4+3+2+1=37H MOV 23H,#0AH CLR A LOOPX:ADD A,23H DJNZ 23H,LOOPX SJMP $ 还有什么方法实现循环的终止? 将00H~0FH这16个数顺序地置入片内RAM20H~2FH单元中。 MOV R0,#20H MOV R7,#16 CLR A LOOP:MOV @R0,A INC A INC R0 DJNZ R7,LOOP SJMP $ MOV R0,#20H CLR A LOOP:MOV @R0,A INC A INC R0 CJNE A,#10H,LOOP
显示全部
相似文档