shuiyu 发表于 2017-7-7 23:54:51

《零基础入门学习汇编语言》第二十八讲

本帖最后由 shuiyu 于 2018-1-18 23:16 编辑

越努力,越幸运。欢迎大家来看我的笔记{:10_297:} 小白刚学,不对的请各位大佬指正,谢谢{:10_254:}

一、一段安全的空间
(1)在8086模式中,随意向一段内存空间写入内容是很危险的 ,因为这段空间中可能存放着重要的系统数据或代码。
(2)我们在纯DOS方式(实模式)下,可以不理会DOS,直接用汇编语言去操作真实的硬件,因为运行在CPU实模式下的DOS,没有能力对硬件系统进行全面、严格地管理。但在Windows XP\2000、UNIX这些运行于CPU保护模式下的操作系统中,不理会操作系统,用汇编语言去操作真实的硬件,是根本不可能的。硬件已被这些操作系统利用CPU保护模式所提供的功能全面而严格地管理了。只要你试图覆盖系统内存,就会报错;使我们不能修改覆盖掉内存。
(3)DOS方式下,一般情况, 0:200~0:2FF 空间中没有系统或其他程序的数据或代码;为了谨慎起见,在进入DOS后,我们可以先用Debug 查看一下,如果0:200~0:2FF单元的内容都是0的话,则证明DOS 和其他合法的程序没有使用这里。


二、将内存ffff:0~ffff:b段元中的数据拷贝到 0:200~0:20b(20:0~20:b)单元中。
(1)正常代码:
这程序其实和我们上一讲的题目差不多,就是改变了段的地址,还有就是多了一个赋值到另一个段的操作。依葫芦画瓢就OK了{:10_254:}




(2)优化后的代码(效率更高):
这一个优化了的呢,其实就是在上一个的基础上多使用了一个寄存器es,使得ds不用在一次循环中改变两次,同时被两个段来回赋值。


谢谢小甲鱼带来的视频教程,感谢!! {:10_303:}


   
本节结束,多谢览阅!
越努力,越幸运。谢谢大家来看我的笔记{:10_297:} 小白刚学,不对的请各位大佬指教,谢谢{:10_254:}
页: [1]
查看完整版本: 《零基础入门学习汇编语言》第二十八讲