回 帖 发 新 帖 刷新版面

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

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

回复列表 (共21个回复)

11 楼

好多指令没用到的,如果是在WINDOWS等保护模式下编程更是如此,很多东西不让你访问,端口,一些寄存器等等

12 楼

[quote]好多指令没用到的,如果是在WINDOWS等保护模式下编程更是如此,很多东西不让你访问,端口,一些寄存器等等[/quote]

的确如此

13 楼

那有什么好的建议吗?
谢谢!

14 楼

又有点问题了
mov  ax,[si+8]中的8是十六进制吗?还是十进制???

15 楼

[quote]又有点问题了
mov  ax,[si+8]中的8是十六进制吗?还是十进制???[/quote]

源代码里的数字,编译器都认为是十进制。如果你需要指定十六进制,请使用 h 后缀

16 楼

我看题的有
mov  ax,[si+0ah]
……
mov  ax,[si+8]
……
mov  ax,[si+6]
所以就有点疑问啊

17 楼

si+0ah 是十六进制的 0A

si+8

si+6 都是十进制

18 楼

謝謝你的回答!
但不能給你評分了哦

19 楼

没关系,回答问题和灌水是最大的乐趣。。。

加分也是乐趣,不过是附加的乐趣,没有就算了,不影响我最大的乐趣。。。HOHO~~

20 楼

[quote]又有点问题了
mov  ax,[si+8]中的8是十六进制吗?还是十进制???[/quote]

老凶啊,不是我罗苏,什么进制转换的基础一定要有啊,要不怎么学下去呢?

本身一个数它没有什么进制的属性,所谓十进制,是逢十进一,每位表范围方法是0~9。十六进制是逢十六进一,每位表示范围是0~9,A,B,C,D,E,F。现在是8,都没进位,所以它本身所表示的数值含义并不会引起混淆,你可以说它是10进制也可以是16进制。不过象类似10这样的数就要注意了:比如有这样一条语句int 10h,如果你本意是要调10h(16进制)中断,但忘了加后面的"h",那就差远了,因为10h相当于十进制的16。一般填寄存器内容,寻址等,都是用16进制的格式,因为16进制每位刚好对应4个bit,在对齐呀,计算啊各方面非常方面。在计算机世界里,16进制好处多多。

我来回复

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