问题描述
我是C64汇编程序编程的新手,我对保存和加载内存区域的过程有疑问。我担心以下问题:
rowmax2 <- function(x) apply(x,1,function(x) {x <- na.omit(x);length(x[x > 4])})
rowmax2(aMat)
# [1] 8 7 8 7 4 3
将字母A放在屏幕左上方
lda #$01
sta $0400
我可以使用x寄存器作为计数器,并可以比较使用循环的频率。
但是现在我有一个16位计算(屏幕起始地址加xxx),并将结果存储在内存地址中,例如$ 4000和$ 4001。如何将此值用作新的屏幕地址,以便在屏幕上计算出的区域上打印出字母a?
解决方法
好的,现在我理解了(间接)Y的含义 我的解决方案现在看起来像这样:
.var lines = $28 //40 characters
.var currentPos = $fd //save screen address
calcLine:
ldx #$05 //counter 5 backward
ldy #$00 //Sets carry to 0
lda #lines //A=40
asl //A=80
calc:
clc
adc #lines //A=120 (or $78 in hex)
bcc next //If carry,then increase
iny
next:
dex
cpx #$00
bne calc
sta currentPos //If carry,then increase
sty currentPos+1 //Save value if carry
//add screen start address ($0400)
clc
lda currentPos+1
adc #$04
sta currentPos+1
lda #$42 //the sign
sta (currentPos),y