- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6502汇编语言程序设计(2版)之程序设计part1
6502汇编语言程序设计(2版)之程序设计part1
FC技术书籍 2008-11-09 22:26:17 阅读620 评论1 字号:大中小 订阅
6502汇编语言程序设计 返回
第一部分 基本概述 第二部分 指令和算法 第三部分 程序实例
___________________________________________________________________________________
(一)
一. CPU 对命令的执行
6502是普通的8位CPU.它需要外接其他器件(如:SRAM、EPROM、定时/计数器、I/O接口器件等)才能工作,它地址线为16,直接寻址能力为64K($0000--$FFFF)之间. 数据线为8,一次只能完成8位数据(0--255)的处理. CPU通过地址线联系到要操作的内存单元,然后读取该单元的操作码,通过预设好了的操作码所代表的操作,CPU对其进行相应命令执行. 例如对命令 ASL 的执行,假设程序计数(PC)=$7000 , ($7000)=$0A .
CPU 首先通过程序计数 PC 联系到单元$7000 ,并读取该单元内的操作码 0A(对应6502汇编助计符为ASL) 然后根据操作码的类型,完成相应的操作,这里0A代表将累加器A的内容左移一位.如果是一个时钟周期完成一项指令操作,那么就是第一个时钟周期CPU读取单元$7000中的0A,第二个时钟周期CPU执行命令0A(将累加器A的内容左移一位,高位被移到C进位标志中,低位被移入0)
二. 6502系统说明
1. $0000--$00FF 6502 CPU 零页公共区 (256字节)
2. $0100--$01FF 6502 CPU 公共堆栈区 (256字节)
没有数据进栈时堆栈指针 S=$FF,每当有一个数据进栈S-1→S. 每当有一个数据出时栈S+1→S .当执行JSR指令时,CPU把下一条指令地址-1(两个字节)自动入栈(也即程序的返回地址-1自动入栈), 然后转入到子程序中执行,当遇到RTS时弹出栈顶2个字节,作为程序的返回地址,并转到下一条指令中执行. 由于堆栈$100--$1FF最多可以存放127个双字节,所以JSR最大连续的转入深度为127层,如果还有其它数据入栈,子程序转入深度还要减少.在设计复杂的程序时,应该考虑堆栈是否会溢出,或作相关返回处理,以防止堆栈溢出而造成死机.
3. $0200--$0700(cheapchange注:综合上下文,应为0200--07FF) 公共内存区 (1.5K字节)
4. $0800--$1FFF $0000 -- $0700的镜像. 连做了3次镜像(6K字节)
换句话说,对它们的操作(读/写)实际就是对$0000--$07FF的操作。比如:读取 $08AB 的内容实际等于读取$00AB的内容。而向$15CC写数据实际等于向$05CC写数据. $0800--$0FFF, $1000--$17FF, $1800--$1FFF 这3块不是物理的 RAM,它们都是镜像.
5. $2000--$3FFF 6502 PPU I/O 地址区,系统使用. (8K字节)
6. $4000--$43FF CPU 内部功能部件 I/O 地址区,系统使用 (1K字)
7. $4400--$5FFF 扩充空间 (5K字节)
可用于各种扩充外设的 I/O 端口,或扩充ROM和RAM地址空间.
8. $6000--$7FFF 公共RAM空间
公共内存区,可为系统程序及用户程序使用
9. $8000--$BFFF 分页区间 (16K字节)
按16K字节分区,页号00--FF(一个字节),最大支持4M字节容量.用于系统程序及应用程序的主要程序数据区.
10.$C000--$FF00 公共RAM空间(16K字节)
公共内存区,可为系统程序及用户程序使用. (注$C000--$FFFF 区间的RAM与分页区间的最后一页第FF页的RAM是同一段区域)
11.$FF00--$FFFF 系统区
系统中断向量及I/O地址.
三. 汇编指令格式
汇编指令包括四部分,格式如下:
[标号:] 操作码 [操作数][;注释]
[]中的内容为可选项
标号 标号标识了一条指令的位置,可以使用标号作为访问该指令的地址,标号的格式应遵循下面规则:
.必须从第一列开始或者以: 结束
文档评论(0)