首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pdp-11中的打印机

pdp-11中的打印机
EN

Stack Overflow用户
提问于 2010-06-21 03:31:05
回答 2查看 353关注 0票数 2

我有这段代码。有人能解释一下为什么它不工作吗,我想每5秒打印一次"Syntax Error“

提前感谢

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-21 18:52:14

Discailmer:我对PDP-11的了解有点生疏,所以请确保这是有意义的……

你的代码中有两个问题:

  1. main部件调用prog,后者调用outp,而实际上它只是不断循环,这样clock就会调用打印函数。尝试将mainloop: br mainloop放在main的末尾(就在现在prog).
  2. The的编写方式之前,您通过分支进入outp,但使用rts pc退出它,这是错误的。clock应该使用jsr prog.

调用prog

另一个小问题是打印消息可能需要5秒以上(谁知道呢?)因此,如果没有调用outp,您需要保护clock方法不被再次调用。

祝好运。

票数 3
EN

Stack Overflow用户

发布于 2010-06-21 18:23:49

堆栈上的字符串指针是4(sp),而不是6(sp)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3080652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档