MOV A,R6 MOV B,R3 MUL AB ADD A,R4 XCH A,R6 XCH A,B ADDC A,R5 MOV R5,A MOV F0,C MOV A,R2 MUL AB ADD A,R5 MOV R5,A CLR A MOV ACC.0,C MOV C,F0 ADD A,B MOV R4,A RET
SJMP $ END
实验八 多分支程序
一、实验目的
掌握汇编语言的编程。
二、实验内容
编写程序,根据送入的数据转移运行。
三、程序框图
四、实验过程
-12-
根据程序框图编写程序,调试无误后装载,运行后观察记录实验现象,并截图。
五、实验结果及分析
1、如何修改程序使数据循环变慢,同时将0字循环改为4字循环? 答:修改延时程序DLY,增长延时时间
原延时程序: DLY:
MOV R3,#0A0H DL1:
MOV R4,#7DH DL2: NOP NOP
DJNZ R4,DL2 DJNZ R3,DL1 RET END
修改后的延时程序: DLY:
MOV R3,#0FH DL1:
MOV R4,#7DH DL2: NOP NOP
DJNZ R4,DL2 DJNZ R3,DL1 RET END
将0字循环改为4字循环: 修改后的子程序 ROUT0:
MOV 20H,#99H MOV A,20H MOV R0,#0DCH MOV R1,#0DDH MOVX @R0,A MOV A,#01H
LP0: MOVX @R1,A ACALL DLY RL A SJMP LP0
六、实验源程序
ORG 0
-13-
MOV 20H,#04H MOV R0,#20H MOV A,@R0
MOV DPTR,#TAB LOOP:JMP @A+DPTR TAB: AJMP ROUT0 AJMP ROUT1 AJMP ROUT2 AJMP ROUT3 ROUT0:
MOV 20H,#0C0H MOV A,20H MOV R0,#0DCH MOV R1,#0DDH MOVX @R0,A MOV A,#01H
LP0: MOVX @R1,A ACALL DLY RL A
SJMP LP0 ROUT1:
MOV 20H,#0F9H MOV A,20H MOV R0,#0DCH MOV R1,#0DDH MOVX @R0,A MOV A,#01H LP1:
MOVX @R1,A ACALL DLY RL A
SJMP LP1 ROUT2:
MOV 20H,#0A4H MOV A,20H MOV R0,#0DCH MOV R1,#0DDH MOVX @R0,A MOV A,#01H LP2:
MOVX @R1,A ACALL DLY RL A
SJMP LP2 ROUT3:
MOV 20H,#0B0H
-14-
MOV A,20H MOV R0,#0DCH MOV R1,#0DDH MOVX @R0,A MOV A,#01H LP3:
MOVX @R1,A ACALL DLY RL A
SJMP LP3 DLY:
MOV R3,#0A0H DL1:
MOV R4,#7DH DL2: NOP NOP
DJNZ R4,DL2 DJNZ R3,DL1 RET END
实验十 电脑时钟(定时器、中断器综合实验)
一、实验目的
熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。
二、实验内容
编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。
三、程序框图
-15-