我有这段代码。有人能解释一下为什么它不工作吗,我想每5秒打印一次"Syntax Error“
提前感谢
tks = 177560
tkb = 177562
tps = 177564
tpb = 177566
lcs = 177546
. = torg + 2000
main: mov #main, sp
mov #outp, @#64
mov #200, @#66
mov #clock, @#100
mov #300, @#102
mov #101, @#tks
mov #100, @#tps
mov #100, @#lcs
prog: mov #msg, -(sp)
br outp
clock: inc time_is
cmp time_is, time_out
bne clk_end
clr time_is
jmp prog
clk_end:rti
outp:
mov r1,-(sp)
mov r2,-(sp)
mov 6(sp),r2
str_loop:
movb (r2)+,r1
beq pr_str_end
jsr pc, print_char
br str_loop
pr_str_end:
mov (sp)+,r2
mov (sp)+,r1
rts pc
print_char:
tstb @#tps
bpl print_char
movb r1, @#tpb
rts pc
. = torg + 3000
msg:.ascii<Syntax Error>
.byte 0
.even
time_out: .word 300
time_is: .word 0
buffer: .blkw 3发布于 2010-06-21 18:52:14
Discailmer:我对PDP-11的了解有点生疏,所以请确保这是有意义的……
你的代码中有两个问题:
main部件调用prog,后者调用outp,而实际上它只是不断循环,这样clock就会调用打印函数。尝试将mainloop: br mainloop放在main的末尾(就在现在prog).outp,但使用rts pc退出它,这是错误的。clock应该使用jsr prog.调用prog
另一个小问题是打印消息可能需要5秒以上(谁知道呢?)因此,如果没有调用outp,您需要保护clock方法不被再次调用。
祝好运。
发布于 2010-06-21 18:23:49
堆栈上的字符串指针是4(sp),而不是6(sp)。
https://stackoverflow.com/questions/3080652
复制相似问题