看过z80监控程序,编过监控程序高手请
小弟正在改写z80的监控程序,老师要我学z80的,把外部数据空间的一段划为
堆栈使用,把51的内部数据空间留给用户使用。了解z80的人知道,z80的sp是
16位。这样外部数据空间的地址(16位)很容易就可以传给sp。而51的sp是8位的,
直接传是行不通的。我想这到还不难办到,我自己定义2个数据空间,一个放sp的
高16位地址(暂时叫他sph把),一个放低16位地址(spl)。编程时把sph传给
dph,把spl传给dpl。那么pop 就成了dptr-1,push就成了inc dptr。
但仔细想一想又发现这样好象行不同。
理由如下:本程序要在用户程序和监控程序之间跳转,z80实现监控程序到用户程序
的过程是先取出用户栈的地址。把用户程序的首地址放到用户栈存放pc的单元中去
按下相应的键后会有一段程序(pop ix ,pop iy。。。。。)最后sp已经指向存放
用户程序首地址的pc单元,最后一句ret时,sp传到pcl,sp+1到pch。从而实现跳转。
我的这种方法到底不是用的真实的sp。前面的都还可以实现,到了最后用ret语句。
程序是真实的sp到pcl,真实的sp+1到pch。显然不可到达目的,怎么办呢?请大虾指教
看过z80监控程序,编过监控程序高手请