⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emc单片机学习笔记(3)page.txt

📁 EMC78p156学习笔记! EMC78p156学习笔记!
💻 TXT
字号:
EMC单片机里面有个Page的概念,这里特指程序Page。
    什么导致了这个Page的出现呢?仔细研究过指令集的人都会注意到,
EMC的jmp指令的操作数只有10个bit,也就是说最大的表示范围是1K。这
样jmp指令的有效跳转范围就是当前所在的1K范围内,比如当前的PC=0x450,
那么跳转范围就是0x400~0x4FF,这跟MCS51的相对跳转的127范围的模型
是不同的。那怎么办呢?EMC提供了跨Page操作的方法,页选择寄存器,
一个bit可以表示2个page,二个bit可以表示4个Page,3个bit可以表示8
个Page,这就是PS0/PS1/PS2。在JMP之前做好Page寄存器的设置,然后执
行JMP,就可以跳转到目的地址了。

    org    0    ;PAGE 0
    mov    A,@0x55
    bs    0x03,5    ;set PS0
    jmp MyTest ;PAGE jump

    org    0x400    ;PAGE 1
MyTest:
    mov    0x05,A
    jmp    $

    如果不是JMP而是CALL,情况会如何呢?call之前我们会设置好PS寄存器,
会到跳转指定位置,如果执行到RET指令的时候,会Return到什么地方呢?
是否需要设定PS寄存器呢?如果设置了,那么这个子程序怎么通用呢?事实
证明我们多虑了,EMC已经为我们设计好了一套机制去保证,堆栈的宽度是足
以盛放call之前的PC数值,执行ret的时候,会先把堆栈里面的整个地址填写
到PC去的。

    所以说,Page产生的原因,不是堆栈,也不是PC,是指令宽度不足造成
的。可能会有人说,为什么不增加宽度以消除Page的麻烦呢?RISC单片机使
用固定宽度的指令,跳转指令长了,其他的指令也会增长的,于是成本提高
了,就失去RISC的优势了。

    EMC的软件模拟,对有Page的好像不能使用。上面的都是我参考其他家的
RISC单片机学习EMC单片机,例子程序未经试验,很多结论也是推测。请大家
多多指教。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -