1

我正在再做一次,但这次我已经接近了。使用 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

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

谢谢!

4

2 回答 2

1

可能只是先对零做一个明确的测试:

[START]: $0500

    LDY #$00
    LDX buffer

    BEQ ENDOFLOOP

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

    BNE LOOP

ENDOFLOOP:
    BRK

LDXX设置零标志,因此在测试之前不需要做任何事情。

于 2014-03-13T06:50:44.453 回答
0

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

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

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

于 2014-03-12T22:15:47.983 回答