输出256个5个机器周期的方形波

MOV R0,#00
;0-1=256
CLR P1.0
LOOP: CPL P1.0
;指令一个机器周期
NOP
NOP
DJNZ R0,LOOP
;指令两个机器周期
END

判断两个数的大小,并传递该数

MOV A,30H
CJNE A,40H,BIG
SETB P1.0
;相等时执行
RET
BIG: JC,LESS
;CY=1跳转,所以此段是前一个数大的操作
MOV 20H,A
MOV 21H,40H;
RET
LESS:MOV 20H,40H
;此段是后一个数大的操作
MOV 21H,A
RET
END
之所以要在三处位置都加上RET,是因为跳转后,程序执行到RET就结束了,后面再执行一条END;只有在LCALL调用子程序,执行到RET时,才回有返回,返回到最初的调用指令下一条(这一点与RETI相似,),若无新的重复调用,则不会再次重复执行相应的调用程序。