sunplus 8202v iop源代码阅读笔记——1
2011-10-16 12:25
375 查看
原创文章,如有转载,请注明出处:http://blog.csdn.net/desert2009sz/article/details/6877589
一、前言
对于汇编,我一直很敬畏,特别是多过2000行的代码时,看到就有点怯场,不敢往下看了。“人都是被迫出来”,这句话在这里也适用,在没有办法的情况下,有些时候你也必须淡定地面对它。虽然代码啰嗦,随处可见的稀奇古怪跳转,纠结的各种各样的寻址方式,必须面对的寄存器使用,以及让人最最痛苦的是思维模式的转变等,让人用起来伤脑筋,但不可否认它独有的优势:细节可控,时序精准,硬件成本低廉(OTP的MCU多数只能用汇编)。
昨天终于说服自己狠下心来去看iop相关的那段代码,目的只有一个:为了节约成本和实现双无线游戏手柄。代码不是很长,一部分受编译开关的影响没有起作用,可以跳过不看。本文主要对6502s的硬件地址结构,常用指令系统做了记录,以及对iop主程序的结构,复位,中断,IR接收(NEC),游戏按键扫描等做了备注。
二、基础知识
1. MCU R65C02硬件地址划分
2. 数制
3. 指令
由于没有8202v和6502s的规格书,所以芯片的硬件结构和指令系统,也是参考程序内的注释和同系列芯片的介绍,不对之处还请各位指出。
一、前言
对于汇编,我一直很敬畏,特别是多过2000行的代码时,看到就有点怯场,不敢往下看了。“人都是被迫出来”,这句话在这里也适用,在没有办法的情况下,有些时候你也必须淡定地面对它。虽然代码啰嗦,随处可见的稀奇古怪跳转,纠结的各种各样的寻址方式,必须面对的寄存器使用,以及让人最最痛苦的是思维模式的转变等,让人用起来伤脑筋,但不可否认它独有的优势:细节可控,时序精准,硬件成本低廉(OTP的MCU多数只能用汇编)。
昨天终于说服自己狠下心来去看iop相关的那段代码,目的只有一个:为了节约成本和实现双无线游戏手柄。代码不是很长,一部分受编译开关的影响没有起作用,可以跳过不看。本文主要对6502s的硬件地址结构,常用指令系统做了记录,以及对iop主程序的结构,复位,中断,IR接收(NEC),游戏按键扫描等做了备注。
二、基础知识
1. MCU R65C02硬件地址划分
地址范围 | 说明 | 区域 |
$0 ~ $40 | 直接I/O控制器寄存器(不存SRAM区域) | - |
$40 ~ $FF | Zero Page free | SRAM |
$100 ~ $1FF | Page1 | SRAM |
$200 ~ $205 | Each vector | SRAM |
$206 ~ $23F | Free direct-mapping area | SRAM |
$240 ~ $ | CODE区域 | CODE |
数制 | 说明 |
二进制 | "%"开头,或"B"、"b"结尾 |
八进制 | "O"、"o"、"Q"、"q"结尾 |
十进制 | "D"、"d"结尾,或无结尾 |
十六进制 | "H"、"h"结尾,或"$"、"0x"、"0X"开头 |
指令 | 说明 |
sei | 关闭总的中断 |
cli | 打开总的中断 |
stz mm | 将目的地址清零,累加器和状态寄存器都不变 |
stx mm | X→mm |
rmb bit, byte | 将byte的bit位清0 |
smb bit, byte | 将byte的bit位置1 |
bbr bit, byte, label | 如果byte的bit为0,则跳到label处执行,否则顺序执行 |
bbs bit, byte, label | 如果byte的bit为1,则跳到label处执行,否则顺序执行 |
bra | 相当于jmp |
phx | X→SP phx: .macro txa pha .endm |
plx | SP→X phx: .macro pla tax .endm |
cmp #dd | A-#dd,若结果为负,则C置0,否则置1;若结果为0,则Z置1。不改变A的值 |
.PAGE0 | 将.PAGE0下的数据定位到“零页段”(0x00~0xFF) |
.ifnz | 当条件不为0时(条件为真),汇编器将对.ifnz的语句进行汇编 |
相关文章推荐
- sunplus 8202v iop源代码阅读笔记——2
- sunplus 8202v iop源代码阅读笔记——3
- Mysql源代码阅读笔记(一) 代码流程
- Mysql源代码阅读笔记(三) 重要的宏
- MINIBASE源代码阅读笔记之heapfile
- memcached源代码阅读笔记(一)
- 比特币源代码阅读笔记-创世块的产生
- linux源代码阅读笔记 linux文件系统(二)
- Cassandra源代码阅读笔记
- Set及其子类的源代码阅读笔记
- Mysql源代码阅读笔记(六)命令汇总
- ruby2.2.2 源代码阅读笔记
- RTEMS 的libio ,work area ,heap,串口驱动等的一些阅读源代码分析笔记
- U-Boot源代码阅读笔记(三) —— 对board.c的分析
- MINIBASE源代码阅读笔记之buffer manager
- Mysql源代码阅读笔记(四) 服务器监听
- memcached源代码阅读笔记(5)memcached1.4.10 libevent2.0.16在centos安装
- Mysql源代码阅读笔记(七)查询缓冲
- U-Boot源代码阅读笔记(二) —— 对lowlevel_init.S的分析
- Mysql源代码阅读笔记(八) 词法、语法分析器