ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

精简cpu设计

精简cpu设计

参考

8位CPU设计

简介

8位指令宽度,地址宽度,数据宽度,ram,rom,外设统一寻址,目的是设计一个尽可能占用逻辑资源少的cpu

寄存器

寄存器含义说明
R0~R3通用寄存器临时变量、算术运算
R4操作数1 (o1)运算操作数,高低字节可单独写
R5操作数2 (o2)运算操作数,高低字节可单独写
R6寄存器A运算结果输出寄存器
R7SP堆栈指针 SP=0 栈顶为R11
R8PC程序计数器(指向 ROM)
R9PSW标志位:零、正、负、溢出等
R10中断向量定时器/IO中断共用
R11~R15堆栈寄存器函数调用现场保存

指令集

操作码指令 OPCODE o3含义 / 子码说明
1OP1L #1将立即数写入 操作数寄存器 1 的低字节
2OP1H #1将立即数写入 操作数寄存器 1 的高字节
3OP2L #1将立即数写入 操作数寄存器 2 的低字节
4OP2H #1将立即数写入 操作数寄存器 2 的高字节
5MOV数据转移:
0000:o1, #o2立即数 → 内存
0001:o1, Ro2寄存器 → 内存
0010:Ro1, Ro2寄存器 → 寄存器
0011:@Ro1, #o2立即数 → 指针
0011:@Ro1, R噢立即数 → 指针
0100:@Ro1, o2寄存器 → 指针
0101:@Ro1, @Ro2指针 → 指针
0110:Ro1, @Ro2指针 → 寄存器
6运算(A <= A ? o2)
ADD0000: ADD 加
SUB0001: SUB 减
MUL0010: MUL 乘
DIV0011: DIV 除
REM0100: REM 取余
AND0101: AND 与
OR0110: OR 或
NOT0111: NOT 非
XOR1000: XOR 异或
INC1001: INC 加1
DEC1010: DEC 减1
7SET #immimm=0 为 o1,o2,否则为o1,#imm
8CLR #immimm=0 为 o1,o2,否则为o1,#imm
9CPL #immimm=0 为 o1,o2,否则为o1,#imm
10LJMP条件跳转(根据寄存器A结果):
0000: A = 任何 → 无条件跳转
0001: A > 0
0010: A = 0
0011: A < 0
0100: A ≥ 0
0101: A ≤ 0
0110: JP
0111: JNP
1000: JZ
1011: JNZ
1100: JC
1101: JNC
11CALL调用函数 o2
12RET返回函数
13NOP空指令

伪指令

操作码真实指令展开
op #1
OP2H #1>>4
OP2L #1&0xf
op #1,#2
OP1H #1>>4
OP1L #1&0xf
OP2H #2>>4
OP2L #2&0xf
mov r1,#3
OP1H #1>>4
OP1L #1&0xf
OP2H #3>>4
OP2L #3&0xf
MOV Ro1,#o2
返回列表