저는 다시하고 있지만 이번에는 닫습니다. 6502 칩으로 작업하기.조립 인쇄 버퍼
어셈블리 인쇄 버퍼 프로그램을 작성하고 있습니다.
내가 겪고있는 한 가지 문제점은 문자열이 null인지 확인하는 것입니다.
여기 내 코드는 지금까지 있습니다 : (사람이 읽을 수있는)
내가 문자열이 null의 경우 확인 가겠어요 어떻게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
?
감사합니다.
감사합니다. 그래서 SUPER SUPER (정확한 2 일) 조립에 대한 초보자 질문 ...하지만 나는 BEQ 구문에 혼란스러워합니다. – Surz
어셈블러에서 BEQ ENDOFLOOP을 넣을 수 있습니까? (어떤 메모리 주소에 혼란 스럽습니까? 그 메모리 주소를 입력하고 넣을 선의 수를 계산합니까? – Surz
실제 기계 코드를 작성하는 경우 결론은 어디에서 끝내야할지 결정할 때 PC가있는 바이트 수입니다.하지만 어셈블러에 대해 신경 쓸 필요는 없습니다. 정확한 구문은 조금 다르지만 일반적으로 'LOOP :'와 같은 것입니다. 어셈블러가 라벨로 취급하고'BNE LOOP'는 그 라벨이 어디에 있든지간에 'BNE'를 의미 할 것이며 어셈블러는 정확한 바이트 수를 계산하여 여러분에게 채울 것입니다 – Tommy