程序集打印缓冲区

时间:2014-03-12 22:09:20

标签: assembly printing null buffer 6502

我再次这样做,但这次我很接近。使用6502芯片。

我正在编写程序集打印缓冲区的程序。

我遇到的一个问题是检查字符串是否为空。

到目前为止,这是我的代码:(人类可读)

buffer = $03ff
x = $01

[START]: $0500

    LDX buffer      // load buffer (at safe memory address $03ff)
    LDY #$00        // loading the y register with 0 so that you can count up
                // checking for a null string; if null, branch to the break instruction
LOOP:   LDA buffer+1, y     // get byte using the buffer
    STA (x), y  // store the value at the pointer
    INY         // increment y
    DEX         // decrement x (counting down with the x register)
    BEQ $500?       // if x is equal to 0, program is done
    BNE LOOP:       // if x is not equal to 0, keep going
    BRK             // if brk, it’s null

我如何检查字符串是否为空?

谢谢!

2 个答案:

答案 0 :(得分:1)

可能只是先对零进行明确的测试:

[START]: $0500

    LDY #$00
    LDX buffer

    BEQ ENDOFLOOP

LOOP:  
    LDA buffer+1, y
    STA (x), y
    INY
    DEX

    BNE LOOP

ENDOFLOOP:
    BRK

LDX设置零标记,因此在测试之前无需对X执行任何操作。

答案 1 :(得分:0)

我只是将比较移到前面......

    ...
    LDY #$00
LOOP:
    LDA buffer+1, y
    BEQ ENDOFLOOP:
    STA (x), y
    INY
    DEX
    JMP LOOP:
ENDOFLOOP:
    ...

我的6502真的很生气,但你明白了。