|  | 
此文章由 rogerk 原创或转贴,不代表本站立场和观点,版权归  oursteps.com.au 和作者 rogerk 所有!转贴必须注明作者、出处和本声明,并保持内容完整 
| 快下班了,花了半个小时网上找了找6502的汇编指令,当年可是写过好多,现在都忘光了。看了看资料,写了两个小程序来试试看这个东西到底是不是真的能不能工作,结果果然不错。运行结果很正确。就是实在是太慢了。 
 写了个打印菱形的程序,还有一个简单的内存填数。没有编译器,只好手工汇编成机器码,手工算变量地址,跳转偏移量,又有了十几年前感觉。汇编好了把那几十个字节的数据在那个网页上手工输入进去,一点reset,程序就开始跑了。
 
 我把汇编程序和汇编好的机器码都贴在这里,有谁愿意手工输入60几个数,可以自己运行下看看CPU到底怎么工作。
 还有运算了半个小时才算出来的菱形的截图。复制代码;DEMO PRINT DIAMOND
                LOOPY:
00                        lda YCOUNT                A5 3A
02                        asl                        0A
03                        asl                        0A
04                        asl                        0A
05                        asl                        0A
06                        sta Y16                        85 3B
08                        sec                        38
09                        lda #$0F                A9 0F
0B                        sbc YCOUNT                E5 3A
0D                        sta XCOUNT                85 39
                LOOPX:
0F                        lda #$80                A9 80
11                        clc                        18
12                        adc XCOUNT                65 39
14                        tay                        A8
                        
15                        clc                        18
16                        adc Y16                        65 3B
18                        tax                        AA
19                        lda #$FF                A9 FF
1B                        sta $80, x                9D 80 00
                
1E                        tya                        98
1F                        sec                        38
20                        sbc Y16                        E5 3B
22                        tax                        AA
23                        lda #$FF                A9 FF
25                        sta $80, x                9D 80 00
                
28                        dec XCOUNT                C6 39
2A                        lda XCOUNT                A5 39
2C                        clc                        18
2D                        cmp YCOUNT                C5 3A
2F                        bpl LOOPX                10 DE
                        
31                        inc YCOUNT                E6 3A
33                        lda YCOUNT                A5 3A
35                        cmp #$8                        C9 08
37                        bmi LOOPY                30 C7
                
39                db        XCOUNT        0                00
3A                        YCOUNT        0                00
3B                        Y16        0                00
;DEMO FILL MEMORY
00                        LDX #$00                A2 00
02                        LDY #$00                A0 00
                LOOP:
04                        STX $10,Y                96 10
06                        INX                        E8
07                        INY                        C8
08                        CPY #$20                C0 20
0A                        BMI LOOP                30 F8
                HALT:
0C                        JMP HALT                4C 0C 00
 [ 本帖最后由 rogerk 于 2010-9-20 17:30 编辑 ]
 | 
 
x本帖子中包含更多资源您需要 登录 才可以下载或查看,没有帐号?注册  评分
查看全部评分
 |