我再次这样做,但这次我很接近。使用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
我如何检查字符串是否为空?
谢谢!
答案 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真的很生气,但你明白了。