单片机程序存储基本问题
有几个问题我实在是找不到答案。。。如凌阳61板。。16位的也就是说一次只能处理16个2进制数,那么就是说明它每次只能执行一个16位指令,寄存器PC(程序计数器)里面是开机...
有几个问题我实在是找不到答案。。。如凌阳61板。。16位的也就是说一次只能处理16个2进制数,那么就是说明它每次只能执行一个16位指令,寄存器PC(程序计数器)里面是开机后执行的第一条指令的地址吗?(如果是,每次完成1条指令加1,那要是突然掉电了呢?再次开机还接着上条指令运行?不是吧!!)还有它的指令超过16位了啊(如我要执行一条R1=0x0001或者CMP R1,R2指令)写入那?奇怪了指令都超过16位了寄存器的没有办法存储 !奇怪明明就超过16位了处理器好奇怪!>..<....!
展开
2个回答
展开全部
不是16个2进制数,而是16bit,2字节宽度的数据。
一般在开机或复位之后,PC=0,然后根据执行了的指令指令宽度增加1、2甚至4。
突然掉电了,等于复位,所以PC=0,不会继以前的PC值往下执行,因为寄存器、RAM等情况都改变了,继续执行没有意义。
如果PC=FFFF,继续执行发生溢出的话,又变成PC=0了,这也相当于复位。
指令宽度可以是16位,如果指令含有16位的立即数,那就变成32位的了,指令的前16bit是操作码,后16bit是操作数。
要说典型的话,AVR单片机是个例子,单片机是8位的,但指令是16bit甚至32bit的,32bit的指令就把16bit的立即数包含在其中了,比如LDS指令。
追问
请问1开机后处理器怎么查找程序(第一条指令)?需要我向PC写入第一条指令的地址吗?
2如16位处理器指令宽度都会是16位的吗?(如0x0007=0x0001)看上去就超过16位了。。这条指令要分开存储?(寄存器16位)
追答
不需要,CPU的的硬件设计就是复位后PC=0。
指令宽度可能是16或32bit,或者说是16bit的整倍数。
迪凯特科技(北京)有限公司
2023-07-28 广告
2023-07-28 广告
RS232串行通讯的数据格式包括以下组成部分:1. 起始位:一位,用于表示数据的开始。2. 数据位:通常为8位,但也可以是7位或9位。3. 校验位:可以选择奇偶校验或无校验。4. 停止位:一位,用于表示数据的结束,也可以选择使用1.5个或2...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询