第4章89C5汇编语言程序设计
三、实验说明 1.因为本实验是交通灯控制实验,所以要了解实际交通灯的变化情况和规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。 2.过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。 3.再转状态3,南北绿灯通车,东西红灯。 4.过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。 四、实验程序框图 r 三、实验程序 0070 1 ORG 0070H 0070 907000 2 PP: MOV DPTR,#7000H 0073 E0 3 MOVX A,@DPTR 0074 540F 4 ANL A,#0FH 0076 C4 5 SWAP A 0077 F5F0 6 MOV B,A 0079 A3 7 INC DPTR 007A E0 8 MOVX A,@DPTR 007B 540F 9 ANL A,#0FH 007D 45F0 10 ORL A,B 007F A3 11 INC DPTR 0080 F0 12 MOVX @DPTR,A 0081 80FE 13 PP1: SJMP PP1 14 END 四、实验操作 运行前: 7000H 7001H 7002H 运行后: 7000H 7001H 7002H 4 5 4 5 5 7 7 8 8 F F 8 实验四 数据排序实验 一、实验目的 熟悉51指令系统,掌握程序设计方法。 二、实验内容 编写并调试一个子程序,其功能为用冒泡法将内部RAM中几个单元字节无符号的正整数,按从小到大的次序重新排列。 三、实验重新框图(略) 四、实验步骤 ①把51片内RAM区50H-5AH中放入不等的数据。 ②用连续运行方式从起始地址0100H开始运行程序(输入0100后按EXEC键。 ③排序结束,显示P.。 ④用寄存器读写方法检查50-5AH中内容应从小到大排列。 五、思考 修改程序把50H-5AH中内容应从大到小排列。 六、实验程序 0100 1 ORG 0100H 0100 758160 2 DORDE:MOV SP,#60H;设栈指针 0103 7B50 3 MOV R3,#50H 0105 EB 4 DORDE1: MOV A,R3 0106 F8 5 MOV R0,A;数据指针传送R0 0107 7F0A 6 MOV R7,#0AH;长度送R7 0109 C200 7 CLR 00H;清标志位 010B E6 8 MOV A,@R0 010C 08 9 DORDE2: INC R0 010D FA 10 MOV R2,A 010E C3 11 CLR C ;清进位标志 010F 8622 12 MOV 22H,@R0 0111 B52201 13 CJNE A,22H,DORDE3;相等否 0114 D3 14 SETB C 0115 EA 15 DORDE3: MOV A,R2 0116 4006 16 JC DORDE4;小于或等于不交换 0118 D200 17 SETB 00H 011A C6 18 XCH A,@R0;大于交换位置 011B 18 19 DEC R0 011C C6