关于中断、堆栈的一些问题,请各位大虾不吝赐教!菜鸟在这里先谢了!(详细见内)(01) ORG 0000H
(02) AJMP START
(03) ORG 000BH
(04) AJMP TIME0
(05) ORG 30H
(06) START:
(07) MOV P1, #0FFH
(08) MOV 30H, #00H
(09) MOV TMOD, #00000001B
(10) MOV TH0, #3CH
(11) MOV TL0, #0B0H
(12) SETB EA
(13) SETB ET0
(14) SETB TR0
(15) LOOP: AJMP LOOP
(16) TIME0:
(17) PUSH ACC
(18) PUSH PSW
(19) INC 30H
(20) MOV A, 30H
(21) CJNE A, #20,T_RET
(22) T_L1: CPL P1.0
(30) MOV 30H, #0
(24) T_RET:
(25) MOV TH0, #15H
(26) MOV TL0, #9FH
(27) POP PSW
(28) POP ACC
(29) RETI
(30) END
请问:这个程序有没有问题?有堆栈的问题吗??我看的很不顺眼,但是找不到错误的地方,能帮我指出吗??
还有就是,当程序执行时,01→02,跳转到06处标记的地方再执行。这样05处的ORG 30H这句程序不是永远也执行不到吗?不就是没有意义吗?
另一个问题,程序在执行15处LOOP: AJMP LOOP时如果发生中断,则到03处进入中断程序,然后再返回,此时还是返回15处继续执行这个程序吗??
假如加上这句:mov sp,#5fh是不是PUSH、POP都是以5FH为起始地址的??
谢谢了,请不吝赐教!