微机原理里面的$,单片机里面的sp和pc 有什么区别吗,它们指向的到底是地址最大的那条指令还是最大地址加1

就是说它们指向的内存单元到底是有没有指令?... 就是说它们指向的内存单元到底是有没有指令? 展开
 我来答
百度网友8c431b1a3
2011-07-23 · TA获得超过198个赞
知道答主
回答量:60
采纳率:0%
帮助的人:18.7万
展开全部
微机原理里面的$有两重意思。第一表示当前地址,如果$出现在程序段,就表示与$同一行的指令地址,如果$出现在数据段中,则表示数据的地址;第二表示字符串的结束符,需要用引号标示,即“$”,例如 string db "abcde$"。
sp是堆栈指针,是指向堆栈数据区的顶端地址,执行一次PUSH、POP指令,sp就会自动增加或减少,使sp始终指向堆栈顶。
pc是程序指针,它指向的是当前正在执行指令的地址单元,pc的值随着指令的执行而变化,一般不会是最大地址值。
希望我的回答能解决你的疑惑。
追问
请问sp指向的所谓栈顶 里面有没有数据或者程序  我想弄明白的是它指的到底是哪  假设存31H的单元是地址最大的了 那指针指的是31H这个单元  还是存31H这个单元的再上个单元   还有$不是计数器吗?怎么表示地址了
追答
栈顶里面有数据啊,堆栈指针不会指向程序区的。
sp实际上也就是一个指针而已,它始终是指向栈顶。如果是8088/8086系列,压栈操作sp就减2,同时把要压栈的数据复制到sp所指的两个单元里。这个时候的栈顶因为sp减了2,因此上移了两个单元,sp还是指向新的栈顶。
不太清楚你说的31H单元是地址最大了这句话。8088系列压栈操作是sp向地址小的方向移动。
如果你说31H单元是堆栈段内地址最小的单元(图上看是有效地址EA=0),确实sp从0再减2就会变成0FFFEH了,这样的话就可能会出错了。所以初始化时,sp要给一个合适的值。
$确实是计数器,是汇编程序在汇编源程序时扫描原程序用的计数器,但它实际也就是表示地址。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式