永发信息网

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

答案:1  悬赏:0  手机版
解决时间 2021-01-27 09:21
  • 提问者网友:活着好累
  • 2021-01-27 05:26
微机原理里面的$,单片机里面的sp和pc 有什么区别吗,它们指向的到底是地址最大的那条指令还是最大地址加1
最佳答案
  • 五星知识达人网友:北方的南先生
  • 2021-01-27 05:31
微机原理里面的$有两重意思。第一表示当前地址,如果$出现在程序段,就表示与$同一行的指令地址,如果$出现在数据段中,则表示数据的地址;第二表示字符串的结束符,需要用引号标示,即“$”,例如 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要给一个合适的值。
$确实是计数器,是汇编程序在汇编源程序时扫描原程序用的计数器,但它实际也就是表示地址。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯