
同意楼上,DS用来指示数据段的段地址,一般情况下在 *** 作DS时是把数据段的名称(其实是个符号地址)mov给AX,然后再从AX倒换到DS中去。
把DS和CS设置成相同,想必这程序没有定义数据段了?从贴出来的代码上看,倒是用到了在堆栈段中的寻址,没有提到数据段的事情呢。
就这一点,王爽老在他的书中提到了。《汇编语言》(第二版)P104页,上面写着参考48节内容。原因大致如下: 设找到一段起始地址为 SA:0000 的容量足够的空闲内存区;在这段内存区的前256个字节中,创建一个称谓程序段前缀(PSP)的数据区,DOS要利用PSP来和被加载程序进行通信(不理解的话可以暂且记住);在这段内存区的256字节处开始(在PSP的后面),将程序装入,程序的地址被设为SA+10H:0(这里确实是256个字节,256 = 1616,所以会空出 100H 的空间,也就是10:0H,“写法可能不对,暂且这么理解”);将这段内存区的段地址存入ds中,初始化其他相关的寄存器后,设置CSIP指向程序的入口。 ——摘自并改编自 王爽《汇编语言》(第二版) 清华大学出版社
你说的是从光盘重启吧?开机按DEL进入bios设置,然后在boot divice里选first boot from CDrom
保存设置,重启
或者开进按F12,选择boot from CD试试
以上就是关于汇编语言程序中将CS和DS设置相同有什么用啊全部的内容,包括:汇编语言程序中将CS和DS设置相同有什么用啊、王爽老师的汇编语言书 中为什么ds = 0B2D,程序就从0B3D开始、怎样进入DS启动程序呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)