永发信息网

汇编地址计数器$与指令指针有什么区别?

答案:3  悬赏:80  手机版
解决时间 2021-02-14 12:30
汇编地址计数器$与指令指针有什么区别?
最佳答案
上面 圆球球UOB 的回答有问题哈。

这是两个不同阶段里存在的概念。编写的一个汇编程序从编写好到最后得到运行结果,至少需要以下几个阶段:编写、录入、汇编链接、运行。
其中 汇编链接 就是我们用masm汇编、link链接等软件处理的过程。

在masm汇编时才会有$,它叫地址计数器,masm用它来确定每一个变量的地址、每一条语句的地址、每一个标号的地址、每一个子程序的入口地址。 比如我们有一条指令
mov ax,a ,这里的a就会被a的地址所替代,指令会采用直接寻址方式。

而PC是在程序被执行时才有的,被称为程序计数器,CPU由他来记住当前要执行的指令的地址,当当前的指令执行时PC会指向下一条要执行的指令,这样来保证程序连续不断的执行下去,直到结束。
全部回答
当开始汇编或在每一段开始时,把地址计数器初始化为零,以后在汇编过程中,每处理一条指令,地址计数器就增加一个值,此值为该指令所需要的字节数. 而PC指针实际上是内存中的一个由段地址+段内偏移形成的物理地址中的一部分。在每个汇编程序开始之前,这个地址并不清零。 换句话说,PC是绝对地址,$是相对地址。
这完全是两码事。pc内当前指令的下一条指令的地址被存放在寄存器ip中,ip是代码段的地址指针。而$只不过是一个伪操作符,是一个取当前地址的伪操作符,也即地址运算符,它只在源程序在编译过程中为了取得当前地址时用,当编译完成后,代码中$被一个实际的地址值取代了。 例: 当我们需要汇编编译器自动计算出数组大小的时候,可能就会用到当前地址计数器$运算符了,masm用$运算符返回当前程序语句的地址偏移值,利用该数值,我们可以计算出数组的长度。 例如: list byte 10,20,30,40,50 listlen = $ - list 则常量listlen就是数组list的长度值了。 在实际使用中一定要注意字节数组、字数组和双字数组的长度计算区别。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
河南省恒生电子仪器有限公司怎么去啊,有知道
将2本同样大小的书包成一包.书的长宽高分别为
关于大学生士兵三期能不能转业的问题
此物管八面,人人有两片,用手摸的着,自己看
如果我公司的对公账户里资金不够 可以从其他
桑利游泳场(蔚蓝新都分场)怎么去啊,我要去那
上海中考物理电路分析
高兴火葬场的具体位置
体育馆游泳馆地址在什么地方,我要处理点事
我是高中生,想剪一个易打理的短发。头发很厚
郸城又铭中学在哪里啊,我有事要去这个地方
关于根管充填的目的和作用,不正确的是()
在篮球比赛中如何成为一个优秀的射手?
水表00755是什么意思
圣博机电在哪里啊,我有事要去这个地方
推荐资讯
国华旅社在哪里啊,我有事要去这个地方
地图中那个箭头是指向北还是南
异度之刃用不同的人物去交支线任务有什么不同
我无证驾驶摩托车,被交警查住,开了罚单,填
某住宅开发商强行要求设计单位做400高窗台并
被人打后打人者的亲属能做证人吗?我们有权拒
夜宴烧烤城地址在哪,我要去那里办事
三星手机微信里小笨蛋和大坏蛋少一个亲亲的表
下列各项中,除了哪一项之外,其余的都是肾脏
好运木业怎么去啊,有知道地址的么
惠人原汁机hu19sgm二代和三代的区别是什么,
【pond】pool和pond有什么区别
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?