正在加载图片...
MOV RI, #30H START:MOVA,aR1;取数 Jb ACC.7, NEG 若为负数,转NEG IZ ZERO 若为零,转ZER0 ADD A, #02H ;若为正数,求X+2 AJMP SAVE 转到SAVE,保存数据 ZERO: MOVA, #64H ;数据为零,Y=100 AJMP SAVE ;转到SAVE,保存数据 NEG: DECA CPL A 求|X SAVE: MOV aR1,A;保存数据 INC RI ;地址指针指向下一个地址 DNZ RO, START ;数据未处理完,继续处理 SJMP 暂停 42.5子程序 子程序概念 所谓调用子程序,暂时中断主程序的执行,而转到子程序的 入口地址去执行子程序。如图410所示。调用子程序应注意: (1)子程序占用的存储单元和寄存器。 (2)参数的传递。 (3)子程序经过调用后得到的数据来完成程序之间的参数传递。 (4)嵌套调用与递归调用。如图411所示。 2.子程序设计举例 【例48】将44节中的例45改为子程序结构 解:数据块中的十个数都需要进行符号判断并作相应处理,可把一部分 工作交给子程序完成,主程序只负责读取数据、调用判断处理子程序、 保存数据、循环控制工作。源程序如下 ORG 0100H MOV R0,#10 MOV RI, #30H START:MOVA,aR1;取数MOV R1,#30H START:MOV A,@R1 ;取数 JB ACC.7,NEG ;若为负数,转NEG JZ ZER0 ;若为零,转ZER0 ADD A,#02H ;若为正数,求X+2 AJMP SAVE ;转到SAVE,保存数据 ZER0:MOV A,# 64H ;数据为零,Y=100 AJMP SAVE ;转到SAVE,保存数据 NEG: DEC A CPL A ;求∣X∣ SAVE:MOV @R1,A ;保存数据 INC R1 ;地址指针指向下一个地址 DJNZ R0,START ;数据未处理完,继续处理 SJMP $ ;暂停 4.2.5 子程序 1.子程序概念 所谓调用子程序,暂时中断主程序的执行,而转到子程序的 入口地址去执行子程序。如图4-10所示。调用子程序应注意: (1)子程序占用的存储单元和寄存器。 (2)参数的传递。 (3)子程序经过调用后得到的数据来完成程序之间的参数传递。 (4)嵌套调用与递归调用。如图4-11所示。 2.子程序设计举例 【例4.8】 将4.4节中的例4.5改为子程序结构。 解:数据块中的十个数都需要进行符号判断并作相应处理,可把一部分 工作交给子程序完成,主程序只负责读取数据、调用判断处理子程序、 保存数据、循环控制工作。源程序如下: ORG 0100H MOV R0,#10 MOV R1,#30H START:MOV A,@R1 ;取数
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有