Closed GoogleCodeExporter closed 9 years ago
1.
我想,大概把字符串放到代码段中(比如最后)也是可以的��
�不过你可能就要修改一些东西。
之所以要使用数据段,是因为在前面的 16
位段中,只需要将代码段地址给 DS 即可,就是下面
语句:
mov %cs, %ax /* Move code segment address(CS) to data segment */
mov %ax, %ds /* register(DS), ES and SS. Because we have */
mov %ax, %es /* embedded .data section into .code section in */
mov %ax, %ss /* the start(metioned in the NOTE above). */
这样数据和代码全部写在代码段中是没有问题的。
但是在 32
位运行在保护模式的程序中,每个段是有自己的属性的,比��
�:
LABEL_DESC_CODE32: Descriptor 0, (SegCode32Len - 1), (DA_C + DA_32)
最后的属性说明它是 32
位代码段描述符,它的选择子是不能给 DS
寄存器的。所以你如果想把字
符串放到代码段中,就必须自己再建一个数据段描述符,并��
�代码段的信息初始化它,还要一个数
据段选择子,这个工作并不比将数据段独立出来做的少。
如果你不想新建一个数据段描述符,那么就需要自己计算字��
�串的偏移,因为你的数据段寄存器 DS
中没有内容。
2.
它后面会有作用的。有时候人那,写代码很容易有失误,比��
�你以为我没有用 push, pop,那么
堆栈段就没有用,就不需要了,可是一旦后面用到 call,
ret,问题就出来了,所以预先准备一个
也没什么大碍。
Original comment by solrex
on 26 Sep 2008 at 12:30
另外,在 report issue 时候请使用有意义的标题,title 就是
title,不是 name。
title: An identifying name given to a book, play, film, musical
composition, or other work.
无论是读邮件还是看论坛,读者都会希望从标题能够看出来��
�大致的内容。
Original comment by solrex
on 26 Sep 2008 at 12:37
Original issue reported on code.google.com by
linux...@gmail.com
on 25 Sep 2008 at 7:04