我试图理解我的大学练习的emu6502汇编代码。该代码将八进制数转换为二进制数。
opt f-g-h+l+o+
org $1000
start equ *
lda <text
sta $80
lda >text
sta $81
ldy #0
lda #$a5
jsr binary
lda <text
ldx >text
jsr $ff80
brk
binary sta byte
ldx #7
bitslp lda #'0'
asl byte
bcc pr
lda #'1'
pr sta ($80),y
iny
dex
bpl bitslp
rts
byte dta b(0)
org $2000
text equ *
dta b(0),b(0),b(0),b(0)
dta b(0),b(0),b(0),b(0)
dta b(10) ; '\n'
dta b(0)
org $2E0
dta a(start)
end of file
我不知道&lt;,&gt;符号代表以下几行:lda <text
,ldx >text
以及与equ *
对齐的目的?我在互联网上阅读了很多文章,但没有发现任何关于大于,低于lda之后的标志和等于之后的星号标志。
我也不知道如何为程序提供输入。 (要转换的数字)
答案 0 :(得分:0)
显示的代码将A中的值转换为$ 2000
的ascii-string代码的主要部分是
binary sta byte ; store value to be encoded
ldx #7 ; loop counter: 1 + 7 times = 8 repeats
; shift A bit by bit, and convert each bit into "0" or "1"
bitslp lda #'0' ; default value for bit: not set "0"
asl byte ; check next bit (top bit -> carry)
bcc pr ; bit clear? keep the "0"
lda #'1' ; otherwise use a "1" ...
; store the ascii result at "string pointer" ($80/$81)+y
pr sta ($80),y ; ... and store it
iny ; y++ (increase string "pointer")
dex ; loop counter
bpl bitslp ; loop branch
rts
周围的代码只加载值
- 2000美元到[$ 80 / $ 81](“字符串”),
- $ 0进入Y(这将属于“二进制”子程序),和
- 要转换的A的$ F4(样本值)
最后调用$ ff80(也许是一些输出函数?谁知道:-))