微处理器工作原理
[09-12 12:26:20] 来源:http://www.88dzw.com 电路基础 阅读:8928次
文章摘要:以下是设计人员可以为例子中的微处理器建立的一组汇编语言指令: LOADA mem——将某个内存地址的数据加载到寄存器A中 LOADB mem——将某个内存地址的数据加载到寄存器B中 CONB con——将一个常量值加载到寄存器B中 SAVEB mem——将寄存器B的内容保存到某个内存地址 SAVEC mem——将寄存器C的内容保存到某个内存地址 ADD——将A和B相加并将结果保存在C中 SUB——将A和B相减并将结果保存在C中 MUL——将A和B相乘并将结果保存在C中 DIV——将A和B相除并将结果保存在C中 COM——将A和B进行比较并将结果保存在测试寄存器中 JUMP addr——跳转到某
微处理器工作原理,标签:电子电路基础,模拟电路基础,http://www.88dzw.com以下是设计人员可以为例子中的微处理器建立的一组汇编语言指令:
- LOADA mem——将某个内存地址的数据加载到寄存器A中
- LOADB mem——将某个内存地址的数据加载到寄存器B中
- CONB con——将一个常量值加载到寄存器B中
- SAVEB mem——将寄存器B的内容保存到某个内存地址
- SAVEC mem——将寄存器C的内容保存到某个内存地址
- ADD——将A和B相加并将结果保存在C中
- SUB——将A和B相减并将结果保存在C中
- MUL——将A和B相乘并将结果保存在C中
- DIV——将A和B相除并将结果保存在C中
- COM——将A和B进行比较并将结果保存在测试寄存器中
- JUMP addr——跳转到某个地址
- JEQ addr——如果相等则跳转到某个地址
- JNEQ addr——如果不相等则跳转到某个地址
- JG addr——如果大于则跳转到某个地址
- JGE addr——如果大于或等于则跳转到某个地址
- JL addr——如果小于则跳转到某个地址
- JLE addr——如果小于或等于则跳转到某个地址
- STOP——停止执行
如果你读过C语言入门教程一文,那么会知道下面这段简单的C代码可计算5的阶乘(5的阶乘=5!=5X4X3X2X1=120):
a=1;
f=1;
while (a<=5)
{
f=f*a;
a=a+1;
}
在程序执行末尾,变量f中包含了5的阶乘。
汇编语言
C编译器可将这段C代码编译为汇编语言。假定此处理器中RAM的地址从128开始,而ROM(包含汇编语言程序)的地址从0开始,那么对于我们这个简单的微处理器来说,该汇编语言看起来如下所示:
// 假定a位于地址128处
// 假定F位于地址129处
0 CONB 1 // a=1;
1 SAVEB 128
2 CONB 1 // f=1;
3 SAVEB 129
4 LOADA 128 // 如果a>5,则跳转到17
5 CONB 5
6 COM
7 JG 17
8 LOADA 129 // f=f*a;
9 LOADB 128
10 MUL
11 SAVEC 129
12 LOADA 128 // a=a+1;
13 CONB 1
14 ADD
15 SAVEC 128
16 JUMP 4 // 进行循环,返回到比较部分
17 STOP
ROM
那么,现在的问题是:所有这些指令在ROM中是什么样的?所有这些汇编语言指令必须以二进制数字的形式表示。为了简单起见,我们假定每条汇编语言指令具有一个唯一的编号,如下所示:
- LOADA-1
- LOADB-2
- CONB-3
- SAVEB-4
- SAVEC mem-5
- ADD -6
- SUB -7
- MUL -8
- DIV -9
- COM -10
- JUMP addr -11
- JEQ addr -12
- JNEQ addr -13
- JG addr -14
- JGE addr -15
- JL addr -16
- JLE addr -17
- STOP -18
这些数字称作opcode(优化代码)。在ROM中,我们的小程序看起来如下所示:
// 假定a位于地址128处
// 假定F位于地址129处
地址 opcode/值
0 3 // CONB 1
1 1
2 4 // SAVEB 128
3 128
4 3 // CONB 1
5 1
6 4 // SAVEB 129
7 129
8 1 // LOADA 128
9 128
10 3 // CONB 5
11 5
12 10 // COM
13 14 // JG 17
14 31
15 1 // LOADA 129
16 129
17 2 // LOADB 128
18 128
19 8 // MUL
20 5 // SAVEC 129
21 129
22 1 // LOADA 128
23 128
24 3 // CONB 1
25 1
26 6 // ADD
27 5 // SAVEC 128
28 128
29 11 // JUMP 4
30 8
31 18 // STOP
您可以看到,七行C代码变成了18行汇编语言,并且变成了ROM中的32个字节。
解码
指令解码器需要将每个opcode转变为一组能够驱动微处理器内部各个部件的信号。让我们以ADD指令为例,看看解码器都执行了哪些工作:
Tag:电路基础,电子电路基础,模拟电路基础,电路基础
- 上一篇:怎样通过电子邮件发送传真?
《微处理器工作原理》相关文章
- › 芯片引脚及主要特性MAX791等微处理器监控电路
- › 芯片引脚及主要特性MAX705等微处理器监控电路
- › 芯片引脚及主要特性MAX703等微处理器监控电路
- › 芯片引脚及主要特性80386DX40,32位微处理器
- › 芯片引脚及主要特性80186,8位微处理器
- › 芯片引脚及主要特性80186,16位微处理器
- 在百度中搜索相关文章:微处理器工作原理
- 在谷歌中搜索相关文章:微处理器工作原理
- 在soso中搜索相关文章:微处理器工作原理
- 在搜狗中搜索相关文章:微处理器工作原理
编辑推荐
分类导航
最新更新
- · 什么是系统仿真
- · 什么是CPCI
- · 英特尔 Parallel Composer入门
- · 什么是支持数据库,什么是中宏数据库
- · 什么是数据交换技术
- · 什么是内部数据传输率
- · 什么是空间数据交换中心
- · 什么是差异备份
- · 什么是备份集
- · 什么是映像备份
热门排行
- · IGBT模块
- · 什么是24脉波整流变压器
- · 自动变速器不能强制降挡故障原因、诊断与排
- · 什么是MD机
- · 中心频率,什么是中心频率
- · 功率单位mw和dbm的换算表
- · 中值滤波模块设计思路
- · 反馈振荡器的原理
- · 气体激光器简介
- · 数制与进位记数法