当前位置:文档之家› 单片机:子程序调用

单片机:子程序调用

单片机:子程序调用
单片机:子程序调用

子程序调用

下图为整个程序运行结果

ORG 0000H

MOV A, #0

LCALL SUB1

MOV B,#10

SUB1: MOV A,#100

RET

END

圈内为ROM内存储结果

内部ROM结果

0000H 74H MOV A, #0

0001H 00H

0002H 12H LCALL SUB1

0003H 00H

0004H 08H SUB1: MOV A, 100H 所存单元0008H 0005H 75H MOV B, #10

0006H 0F0H

0007H 0AH

0008H 74H SUB1: MOV A, 100H

0009H 64H

000AH 22H

执行MOV A,#0前PC=0000H 后

因为A内容为0,(A)=00H. 该指令占2字节PC=0002H

执行LCALL SUB1 调用子程序SUB1将原程序压入堆栈

复位后(SP)=07H. (SP)=SP+1,(SP)=08H程序向下应该执行LCALL SUB1.执行后为了回到原程序,现将00005H单元压入堆栈。由于SP只能存8位二进制。现将低8位05H 存入SP.

PUSH 05H (SP)=(SP)+1 (SP)=09H再将高8位存入SP. PUSH 00H.

SUB1: MOV A, #100

SP=09H (A)=64H 程序占2字节PC=0005H

下一步取出高8位POP 00H (SP)-1=SP (SP) =08H 取出低8位POP 05H (SP) =07H

返回继续程序执行MOV B,#10. RET见下图

PC=000AH (B)=0AH PC=0008H END

相关主题
文本预览
相关文档 最新文档