6502基础知识

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6502基础知识:

6502CPU是8位的处理器,早期的nes( 任天堂娱乐系统 )即是采用了此种cpu, 特点是功耗小,成本低,稳定性强,缺点嘛,自然是很明显, 速度慢,能处理的任务类型少,而且,

相对于 NES,WQX还少了象处理图象和声音的专用芯片(NC2k后的系统增加了高速处理

芯片 DSP 来作为声音处理,因此使在其上播放WAV成为可能)。

以后,我们使用汇编语言,就都要和这个6502芯片打交道了,让我们熟悉一下它。

和 PC 上的 8080CPU一样,6502cpu也有一套指令集,cpu识别指令,进行相应的

操作。

这些指令都是16进制的,比如:a9h 01h 85h 80h 60h,在16进制数据后面加上一个

"h"(hex), 来将它们和其它进制区分开来,以后的内容里, 16进制后将不加h, 其它进制 (10

进制后加 "D"(dec),2进制后加 "B"(bin))则将特别说明。

上面的那段数据 :a901 85 80 60,就是一段机器码,也是一段汇编程序, 汇编的写法如

下:

lda#$01

sta$80

rts

这段命令的用途将在以后介绍, 这里只是让大家了解一下汇编及机器码程序的书写格式。

这些数据以二进制的格式被存储在wqx的存储介质里( 一般为 ram,flash,rom),由cpu控制不断从存储介质中读取并分析执行。

数和运算相关知识

这节讲解进制、逻辑运算知识,若已经知道,可跳去下一节

(1)进制 :

a.常见的计数制 :

10 进制 , 这是大家熟悉的,由0-9这10个数码组成,逢10进位,表示时在数码后加

D(Decimal), 由于很常用,常省略"D"

b.二进制数 :

只有 0,1两个数码,逢 2 进位,用 B(Binary)结尾,如11110000B

c.十六进制数

有0-9 和 A,B,C,D,E,F共16个数码,其中A,B,C,D,E,F分别对应10进制的

10,11,12,13,14,15,后用H(hexadecimal)结尾,如79h 。因为本书中大量使用了这

一数志,所以将 "h" 省略

各进制数间可进行等值转换,可使用 wqx 上科学计算器实现计算机只能识别 1,0代表的两种信息,所以在计算机中运行的是二进制数,而计算机中所谓的8 位机,则是指6502 一次处理数据长度为 8 位

逻辑运算知识

6502 多用于控制领域,因此 6502 系统中存在大量逻辑运算,基本的逻辑运算有: " 与 ","或"," 非", 基本逻辑运算再经简单的组合,便可构成复合逻辑门,如" 与非门 "," 或非门 "," 异或门"等等,下面讲解它们 a.逻辑与逻

辑表达式为 :f=a^b

a,b 为 2 事件,只有当a,b 皆为真时,结果 f 才为真,否则 f 为假

f=a^b 的逻辑状态表 :

0^0=0 0^1=0 1^0=0

1^1=1

规则可总结为 :"有 0 则 0, 全 1 则 1"

与操作在实际中常于于屏蔽( 修改 )或测试 (获取 ) 数据中某个或某几个位的状态

如lda$80

and#$40(10000000b)

sta$80

rts

这样就可以屏蔽$80中的6-0位

b.逻辑或

逻辑或的表达式为 :

f=a ˇb

逻辑状态表为 :

0 ˇ 0=1 0 ˇ 1=1 1 ˇ 0=11规则ˇ可总1=1结为 :"有

1则1,全0则 0"

或操作常用来置位,如将 $80的 0,1位置 1:

lda$80

ora#$03(00000011b)

sta$80

rts

和上面是一样的,现在$80里就又是原来的数据了,这里#$79就是密码,没有它就无法解开加密后的数据

6502寄存器知识

触发器是一类具有记忆能力的基本逻辑电路

触发器就是一位寄存器,可以存放1位二进制信息,并且有接收和输出二进制数的功能,

N 个触发器便可构成N 位的寄存器

6502 中共有 5 个 8 位寄存器和 1 个 16位寄存器

1.累加寄存器 A

这是 8 位的寄存器,也是6502中最重要和最常用的寄存器,可用于读写数据,进行各种

逻辑运算等等。

2.变址寄存器 X

这个 8 位寄存器和 A 差不多,只是它可以非常方便地加1 或减 1 ,常用于数据传送,运算等等 3. 变址寄存器Y

和 X 一样, 2 个变址寄存器搭配使用使程序更加灵活

4.堆栈指针 SP

这是 8 位的寄存器,指向对栈栈顶位置

在程序运行时。须要一称之为堆栈的RAM块作为数据缓冲区,以暂存程序运行过程中的一

些重要数据

堆栈由连续的RAM单元组成。数据写入堆栈称入栈,数据从堆栈中读出称为出栈,堆栈的操作遵循 "先进后出 "的操作,即先入栈的数据后出栈。

系统如何了解当前的堆栈顶在哪以从顶部弹出堆栈呢?

就要依靠堆栈指针SP,6502规定,堆栈位于第一页($0100-$01ff)的RAM中,因此SP 指向的时堆栈顶的低8 位,即堆栈顶地址为$00SP,当进行入栈、出栈操作时,栈顶单

元发生变化, SP 的内容也将加 1 或减 1

可以用下面程序读出当前SP 的内容 :

TSX

STX$2000

RTS

相关文档
最新文档