6502基础知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6502基础知识:
6502 CPU是8位的处理器,早期的nes(任天堂娱乐系统)即是采用了此种cpu,特点是功耗小,成本低,稳定性强,缺点嘛,自然是很明显,速度慢,能处理的任务类型少,而且,相对于NES,WQX还少了象处理图象和声音的专用芯片(NC2k后的系统增加了高速处理芯片DSP来作为声音处理,因此使在其上播放WAV成为可能)。
以后,我们使用汇编语言,就都要和这个6502芯片打交道了,让我们熟悉一下它。
和PC上的8080CPU一样,6502 cpu也有一套指令集,cpu识别指令,进行相应的操作。
这些指令都是16进制的,比如:a9h 01h 85h 80h 60h,在16进制数据后面加上一个"h”(hex),来将它们和其它进制区分开来,以后的内容里,16进制后将不加h,其它进制(10进制后加”D"(dec),2进制后加”B"(bin))则将特别说明.
上面的那段数据:a9 01 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
这时$2000即为SP的内容
5。程序状态字PSW(Program Status Word)
这也是8位寄存器,用于寄存指令执行的状态信息,PSW的各位状态有的是根据指令执行的结果由硬件自动设置的,有的可以由用户用软件的方法设定.PSW的各位如下(其中第5位未用,保持为0)
7 6 5 4 3 2 1 0
N V B D I Z C
N:负数标志,指令指行完后为负(>7F)则n=0,否则为1
V:溢出标志,若产生溢出则V=1,否则V=0
I:中断标志。是否允许系统中断IRQ,=1:禁止,=0:允许
Z:零标志,结果是否为0,为0则Z=1,否则Z=0
C:进位标志,结果最高位有进位则C=1,否则C=0
5。程序计数器PC
这是6502唯一的一个16为计数器,其内容为将要执行命令的存放地址,寻址范围达64KB($0000—$FFFF),CPU是根据PC的内容找到指令的存储单元,取出指令执行的。PC具有自动加1的功能,CPU每读取一条指令的1字节,PC内容自动加1,指向下一个存储单元,这样就能实现程序的顺序执行
PC没有地址,用户不能对它进行读写,但可以通过转移,调用,返回等指令改变其内容,以改变程序的执行顺序
6502主要组成设备
这节讲解wqx的主要组成部件
1。软件