6502基础知识_第1页
6502基础知识_第2页
6502基础知识_第3页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WORD格式6502根底知识:6502CPU是 8 位的处理器,早期的nes( 任天堂娱乐系统)即是采用了此种cpu, 特点是功耗小,本钱低,稳定性强,缺点嘛,自然是很明显, 速度慢,能处理的任务类型少,而且,相对于 NES,WQX还少了象处理图象和声音的专用芯片(NC2k后的系统增加了高速处理芯片 DSP 来作为声音处理,因此使在其上播放WAV成为可能 )。以后,我们使用汇编语言,就都要和这个6502芯片打交道了,让我们熟悉一下它。和 PC 上的 8080CPU一样, 6502cpu也有一套指令集,cpu识别指令,进展相应的操作。这些指令都是16进制的,比方:a9h 01h 85h 80h

2、60h,在 16进制数据后面加上一个h(hex), 来将它们和其它进制区分开来,以后的内容里, 16进制后将不加h, 其它进制 (10进制后加 D(dec),2进制后加 B(bin)那么将特别说明。上面的那段数据 :a901 85 80 60,就是一段机器码,也是一段汇编程序, 汇编的写法如下:lda#$01sta$80rts这段命令的用途将在以后介绍, 这里只是让大家了解一下汇编及机器码程序的书写格式。这些数据以二进制的格式被存储在wqx的存储介质里( 一般为 ram,flash,rom),由 cpu控制不断从存储介质中读取并分析执行。数和运算相关知识这节讲解进制、逻辑运算知识,假设已经知道

3、,可跳去下一节(1) 进制 :专业资料整理WORD格式a.常见的计数制 :专业资料整理WORD格式10进制 , 这是大家熟悉的,由0-9这 10个数码组成,逢10进位,表示时在数码后加D(Decimal),由于很常用,常省略Db.二进制数 :只有 0,1两个数码,逢2 进位,用 B(Binary)结尾,如11110000Bc.十六进制数有 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 省略各进制数间可进展等值转换

4、,可使用 wqx 上科学计算器实现计算机只能识别 1,0代表的两种信息,所以在计算机中运行的是二进制数,而计算机中所谓的8 位机,那么是指6502 一次处理数据长度为 8 位逻辑运算知识6502 多用于控制领域, 因此 6502 系统中存在大量逻辑运算,根本的逻辑运算有: 与 ,或, 非, 根本逻辑运算再经简单的组合,便可构成复合逻辑门,如 与非门 , 或非门 , 异或门 等等,下面讲解它们 a.逻辑与逻辑表达式为 :f=aba,b 为 2 事件,只有当a,b 皆为真时,结果f 才为真,否那么f 为假f=ab的逻辑状态表 :00=0 01=0 10=011=1规那么可总结为 :有 0 那么 0

5、, 全 1 那么 1专业资料整理WORD格式与操作在实际中常于于屏蔽( 修改 )或测试 (获取 ) 数据中某个或某几个位的状态专业资料整理WORD格式如 lda$80and#$40(10000000b)sta$80rts这样就可以屏蔽$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$80ora#$03(00000011b)sta$80rts和上面是一样的,现在$80里就又是原来的数据了,这里#$79就是密码,没有它就无法解开加

6、密后的数据6502存放器知识触发器是一类具有记忆能力的根本逻辑电路触发器就是一位存放器,可以存放1位二进制信息,并且有接收和输出二进制数的功能,专业资料整理WORD格式N 个触发器便可构成N 位的存放器专业资料整理WORD格式6502中共有 5 个 8 位存放器和1 个 16位存放器1. 累加存放器 A这是 8 位的存放器,也是6502中最重要和最常用的存放器,可用于读写数据,进展各种逻辑运算等等。2. 变址存放器 X这个 8 位存放器和A 差不多, 只是它可以非常方便地加1 或减 1 ,常用于数据传送,运算等等 3. 变址存放器Y和 X 一样, 2 个变址存放器搭配使用使程序更加灵活4. 堆

7、栈指针 SP这是 8 位的存放器,指向对栈栈顶位置在程序运行时。 须要一称之为堆栈的RAM块作为数据缓冲区,以暂存程序运行过程中的一些重要数据堆栈由连续的RAM单元组成。 数据写入堆栈称入栈,数据从堆栈中读出称为出栈,堆栈的操作遵循 先进后出 的操作,即先入栈的数据后出栈。系统如何了解当前的堆栈顶在哪以从顶部弹出堆栈呢?就要依靠堆栈指针SP,6502规定,堆栈位于第一页($0100-$01ff)的 RAM中,因此SP 指向的时堆栈顶的低8 位,即堆栈顶地址为$00SP,当进展入栈、出栈操作时,栈顶单元发生变化, SP 的内容也将加1 或减 1可以用下面程序读出当前SP 的内容 :TSXSTX$

8、2000专业资料整理WORD格式RTS专业资料整理WORD格式这时 $2000即为 SP 的内容5. 程序状态字PSW(Program Status Word)这也是 8 位存放器, 用于存放指令执行的状态信息,PSW 的各位状态有的是根据指令执行的结果由硬件自动设置的,有的可以由用户用软件的方法设定。PSW 的各位如下 (其中第 5位未用,保持为0)76543210NVBDIZCN: 负数标志,指令指行完后为负(7F) 那么 n=0, 否那么为 1V: 溢出标志,假设产生溢出那么 V=1, 否那么 V=0I: 中断标志。是否允许系统中断IRQ,=1:制止, =0: 允许Z: 零标志,结果是否

9、为 0, 为 0 那么 Z=1, 否那么 Z=0C: 进位标志 , 结果最高位有进位那么 C=1, 否那么 C=05. 程序计数器 PC这是6502唯一的一个16为计数器,其内容为将要执行命令的存放地址,寻址X围达64KB($0000-$FFFF),CPU是根据 PC 的内容找到指令的存储单元,取出指令执行的。PC 具有自动加1 的功能, CPU 每读取一条指令的1 字节, PC 内容自动加1, 指向下一个存储单元,这样就能实现程序的顺序执行PC 没有地址,用户不能对它进展读写,但可以通过转移,调用,返回等指令改变其内容,以改变程序的执行顺序6502主要组成设备这节讲解 wqx的主要组成部件专

10、业资料整理WORD格式1. 软件专业资料整理WORD格式就是我们编写或下载的程序和系统的局部,6502系统包括软件和硬件两个方面。2. 存储器主要作用是存放程序和数据,6502系统的存储单元为8 位,每位都是一个二进制数,即每个存储单元存放一个8 位的进制数,也就是一个字节。向存储单元存放信息称为写 ,取出信息称为 读, 读, 写 操作都称为访问存储器。6502访问存储器是根据存储单元的地址进展的,根据地址访问存储单元又称为寻址。6502的cpu 最大寻址X围为64kb,即 $0000-$ffffwqx有 512kb的闪存和数mb 的 rom, 而 cpu 却只能寻址64kb,这个问题是如何解

11、决的呢?和早期的dos 系统一样, 系统对存储器采取了分页访问的方法,以 nc1020的 512kb闪存为例 ,第 00页的 $4000-$bfff为 512kb的第一个32kb,第 01页的 $4000-$bfff为 512kb的第二个32kb.以此类推,这样即可对大容量的存储器进展访问。至于nc2k的 nand flash存储器,和这有些不同,这将在以后详细讲解。Wqx 主要有下面这些存储器:a.Mask ROM这是种不可写的存储器,又称为掩膜ROM, 也就是说对于此种存储器来说,只能进展读操作。在 NC1020中分步在 80-FF页$4000-BFFFb.System bios这是种特殊

12、的rom,是系统的bios, 存放了中断处理例程,系统重要的函数等等专业资料整理WORD格式位于各系统的 $e000-$ffff专业资料整理WORD格式c.Nor Flash 是可屡次擦除的存储器, wqx用的是 512kb 的 nor flash,Flash存储器内容不易丧失。 nor flash的特点是读取速度快,性能稳定,可以芯片内执行, 缺点那么是容量小,写入速度慢 ,nc2k以前的机型将其作为系统/ 数据存储器 ,nc2k 以后的机型那么将其作为系统和一些重要数据的存储器d.nand flash这是一种容量很大的flash 存储器。 nc2k使用的是 32mb 的 nandflash

13、, 它的特点是容量大,擦写速度快,缺点是稳定性较差(易出现坏区 ), 读写复杂,同时读取速度较慢e.sram主要的随机存储器也即内存, 分布在各系统的$0000-$3fff($0000-$003f映射到系统i/o)f.xramnc2k后的机型为了适应nand flash增加的 32k大内存,位于$80页 4000-bfffg.rambnc2k系统作为坏区表等信息存放处h.ram04$00页的 $4000-$5fff($6000-$7fff为其镜象 ),8k的内存3.CPU中央处理器 (Central Processor Unit,CPU)是整个 6502系统的核心 , 由运算器和控制器组成,进

14、展运算和控制操作。a.运算器是6502的运算部件,内有逻辑运算单元,可以实现加、减、加1 、减 1 、比较等算术运算和与、或、异或等逻辑运算。b.控制器是6502的指挥控制元件,保证wqx各局部能自动而协调地工作。专业资料整理WORD格式4.I/O接口专业资料整理WORD格式wqx在工作时,要不断从外部设备,比方键盘等获取信息,并向外部设备,比方屏幕,发送控制信号,这些信息的输入输出电路称为I/O(Input/Output),I/O口是系统和外部设备之间交换信息的通道WQX共有 64个 8 位 I/O口,分别被映射到sram的 $0000-$003f,直接对改段地址进展操作即可操作I/O5.

15、其它外部设备很多设备是不能集成到6502主板上的,比方lcd ,红外 / 串口通讯设备,键盘,电源( 电池和外部电源接口),时钟电路,发音设备等等,它们称为外部设备,一般通过I/O 接口对它们进展访问。使用 debug 工具这是本章最后一节,这里我将告诉大家如何使用debug 工具,这可是很重要的!目前 wqx使用的 debug工具有 xasm(by xu),wqxhex(by sun),nc-tools(by xu)等等,这里我强烈推荐nc-tools这个工具!这是我有史以来用过的最好的debug工具了。nc-tools1020和 2600分别在:/wqxnet的下载区和星迷天地区可得到最新

16、版本。 nc1020版 nc-tools可用于 nc1020/n,cc880,cc980;nc2600版可用于 nc-2600,如果你的机型没由相应的nc-tools, 用 sun 的 wqxhexeditor也可。这里只介绍和汇编编程相关的一些命令的用法,其它功能请参考nc-tools 使用说明按键操作 :空格 :命令确定专业资料整理WORD格式方向上 :当前浏览位置 +10专业资料整理WORD格式下 :减 10换姨烫烫烫烫烫烫烫烫烫烫烫坛上:加 1下 :加 60方向左 :减 1方向右 :减 60q:退出求助 :工具菜单: 切换 hex/ 中文: 直接以文字修改当前存储器内容: 查看存放器状

17、态: 当前页 +1:-1+(nc1020):清空 $2000-$30001.v 命令转到地址格式 :v * v *yy * 为地址yy 为页2.e c修改存储器内容专业资料整理WORD格式e c *专业资料整理WORD格式e c *yy3.e i插入数据e i *xxxx: 移动X围yy: 删除个数5.c比较数据c x000yyx000:地址yy 页将 yy 页 x000-xfff和 $2000-$2fff比较6.a写汇编a *yya *只能在 ram写方向上 =$换页上 =#左 =)方向下 =,右 =y.=b换页下 =(7.s h搜索 hex专业资料整理WORD格式s h *yyyy*yy专

18、业资料整理WORD格式* *开场地址、页yyyy yy完毕地址、页8.s c搜索文字s c *yyyy*yy9.u反汇编u * u *yy10 g执行g *g *yy 11.w 写入w x000yy将$2000-$2fff写入 $x000-$xfff12.l发送l x000yy将$2000-$2fff写入 $x000-$xfff12.l发送l x000yy将 yy 页 x000-xfff发送到 $2000-$2fff13.x求 int中断地址x yyyy专业资料整理WORD格式yyyy: 中断向量专业资料整理WORD格式寻址方式掌握 6502的寻址方式才能弄懂6502的指令,因此这节很重要#$

19、*: 指令#$zz: 数据 (8 位)$yy: 地址 (8位零页地址 )$yyyy:地址 (16位 )(1) 立即寻址方式格式 :*#$zz如 lda#$05要寻址的数据在后面已给出,称为立即寻址(2) 直接寻址方式格式 :*$yy or *$yyyy如 :LDA$1EADC$2300要寻址的数据在所给出的地址中,该地址的内容即为所需数据这里分为零页寻址(*$yy)和普通寻址 (*$yyyy)*$yy就相当于*$00yycpu 将 $0000-$ffff的可寻址X围分为0-ff个页面, 每页面 ff 个地址, 其中 $00-$ff称为零页,对他们的寻址称为零页寻址,可以看出,由于零页寻址的指令

20、为2字节,较普通寻址要快,因此使用零页寻址的指令可提高程序运行速度(3) 存放器隐含寻址专业资料整理WORD格式格式 :*专业资料整理WORD格式如 :tayphp在这种寻址方式中, 所需的数据并没有直接给出, 也没有给出地址, 而是将某个存放器的内容作为操作数 , 常用于存放器间交换数据等(4) 直接 x 变址,直接 y 变址格式 :*$yyyy,xor *$yyyy,yor *$yy,yor *$yy,x如 :lda$1000,xlda$1000,ylda$80,xlda$80,y这种寻址方式是在直接寻址的根底上,再加上x 或 y 存放器的内容,获得操作数所在地址如 lda$1000,x当

21、 x=5时,那么所要寻址的操作数就在$1005(4) 间接寻址格式 :*($yy,x) or *($yy),y or jmp($*)如 :cmp($80,x)lda($80),y所谓间接寻址就是指操作数所在的地址或所需跳转的地址并不直接给出,而是在所给出的地址中专业资料整理WORD格式如 :lda($80,x)专业资料整理WORD格式当 x=5,$85=00,$86=20那么所要的操作数就在$2000中即在 $80+5,$81+5存放了地址如 :lda($80),y当 y=5,$80=00,$81=20那么操作数就在$2005中 , 即将 $80,$81中地址 +5(y)如 jmp($2000

22、)$2000=00,$2001=30那么就会跳转到$3000间接寻址是很重要的一种寻址方式,刚开场时你也许会觉得使用直接寻址很简单,但用多了就会发现,间接寻址的灵活方便是直接寻址无法相比的(6) 相对寻址格式 :*$yyyy如 :bcs$2000相对寻址是相对于当前地址的跳转指令寻址,可向前或向后跳转,X围在+7f-7f之间指令系统$*:16位地址#$*: 数据$*: 零页地址data: 地址中数据addr: 地址stack: 堆栈a,x,y,p,s:存放器z,n,c,v,d,i,b:标志存放器p 的各位专业资料整理WORD格式各种指令和寻址方式构成了汇编代码,要注意并非每个指令都有所有的寻址

23、方式,例如 cmp专业资料整理WORD格式指令就只有cmp($*,x)的间接x 寻址方式而没有cmp($*),y的间接y 寻址方式专业资料整理WORD格式指令分为一字节、二字节、三字节指令,分别占用1,2,3 b的存储空间,一、二字节的指专业资料整理WORD格式令比三字节指令所占空间少,速度快1. 数据传输指令这里的传输是 复制 , 而不是 移动 (1)ldadata-a(2)ldxdata-x(3)ldydata-y(4)staa-addr(5)stxa-addr(6)stya-addr(7)taya-y(8)tyay-a(9)tax专业资料整理WORD格式a-x(10)txax-a(11)

24、phaa-stack堆栈是由系统开辟的一块用于保护数据的区,在 $0100-$01ff间,用于存放一些数据这里 pha 将 a 放入了堆栈中,同时堆栈指针s=s-1(12)plastack-a将保存在堆栈最上的数据弹出-a,s=s+1(13)phpp-stack,s=s-1(14)plpstack-p,s=s+1(15)tsxs-x(16)txsx-s2. 数据操作指令(1)ora专业资料整理WORD格式a=a or data(2)eora=a xor data(3)anda=a and data(4)asl逻缉左移,将data中各位依次向作移一位,最高位-c, 相当于 x2a(or data)=a(or data)=a(or data)/2(6)rol循环左移(7)ror循环右移(8)bit相当于 and, 只是与操作的结果不放入a 中,而只是影响标志位a=a+c+data这带 c 进位的加法,假设c=1, 那么 a=a+data+1因此在单个数据加法时要将c 位清 0如:lda#$80clc专业资料整理WORD格式adc#$05专业资料整理WORD格式sta$2000rts此时结果为85而在多个数据加法时,仅在最低位加法时清0如 2030+5080lda#$30clcadc#$80sta$2000lda#$20adc#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论