回 帖 发 新 帖 刷新版面

主题:[讨论]从寄存器问题想起的

大家好,首先声明一点,我这学期才刚开始学汇编,感觉学得很吃力!因此想和各位老师交流下:si,di和[si],[di]有什么区别啊?还有( )这种为什么一会是地址,一会又是数值呢?

回复列表 (共21个回复)

沙发

si di 是寄存器的内容.如果当时存放的是指针,那么 si , di 得到的就是一个内存地址.( 16 位 )

[si],[di] 是寄存器指向的内容,如果当时存放的是指针,那么[si],[di] 得到的就是一个内存单位.(8 位)

比如,内存地址 0040 中存放一个字节的变量 2B.
如果 si = 0040 则 , [si] = 2B

板凳

当时存放的是指针?这是什么意思啊?
不好意思,新手……

3 楼

[quote]当时存放的是指针?这是什么意思啊?
不好意思,新手……[/quote]

指针就是一个内存地址,我们可以把它存放在寄存器里。这样我们就可以对它操作,以达到间接操作数据的目的。

很多时候,操作指针会更方便。

4 楼

谢谢兄台的回答!
不过据说指针很是很危险的东西……

5 楼

[quote]谢谢兄台的回答!
不过据说指针很是很危险的东西……[/quote]

的确是比较危险,因为对指针操作不好,可能会使指针指向不可靠的地址,或不可写的地址.

结果就是得到不可靠不真实的数据,甚至出现内存错误.

但是,不管怎么样,指针的应用还是非常广泛的.虽然高级语言里我们可以用其他的东西来代替指针.但是经过编译器翻译以后,很多在高级语言里用普通方式表达的东西都会被自动转换成指针.

也就是说,学习汇编语言这种非常直接的非常低层的语言,指针可以说是无法避免的.

6 楼

嗯,谢谢
希望自己以后都能用对吧
谢谢你了啊!

7 楼

学了汇编之后,你会感觉,原来C语言里的所谓指令,并没有什么碰不得的,呵呵

8 楼

[quote]学了汇编之后,你会感觉,原来C语言里的所谓指令,并没有什么碰不得的,呵呵[/quote]
呵呵……不太理解兄弟的話啊……

9 楼

学了汇编之后,你会感觉,原来C语言里的所谓指针,并没有什么碰不得的,呵呵
=======================

打错了,是“指针”,不是“指令”。言下之意就是汇编全是“指针”,呵呵。

10 楼

不过指令也不好学啊,正在慢慢适应啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册