• 实验一


    实验一

    我的实验环境:windows 10系统下通过dosbox

    一.实验结论

    (1)使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。

    使用e命令输入机器码。

     

    使用反汇编命令得到的汇编指令,而且与书上的代码相同。

     

    将这段汇编指令运行,到最后一步时结果,可以看到AX和BX的值已经经过一步步发生了改动。而且在使用t命令时,一定要注意要从写代码的地址开始运行,即要修改CS与IP的值。

    (2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。

     

    输入指令

     

    经过运行,得到的AX的值即为2的8次方,但是这里的数字为十六进制,十六进制的100化为十进制后为256,为2的8次方。

    (3)PC主板机上的ROM中写一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并试图改变它。

     

    找到了生产日期,在图中,FFF0:00F0的地址上。

    试图修改生产日期,但是修改完查询后发现修改失败。因为这段地址为各个ROM的地址空间,并不能进行改动。

    (4)向内存B8100H开始的单元填写数据

     

    填写数据后,发现屏幕上多了几个图案。当小幅改变地址时,发现图案出现在了其他位置。其中01为ACSLL码代表了一个笑脸,同时也代表其颜色为蓝色,02,03等所表示的依次类推。

    以8000H~9FFFH为空间显存地址,这里的数据被写入显存,然后被显卡输出到显示器上。

    二.总结与体会

        本次实验其实算是我第一次在dubug环境下真正使用汇编语言,之前仅仅只是学会了如何配置好环境。同时我发现,学习汇编让我感觉使用命令行工具并不是一个复杂的东西,而且甚至有时候它的功能还很实用。因为我的电脑是win10系统下用dosbox进行调试的,不知为何dosbox的窗口特别小而且窗口模式下无法放大(应该是因为分辨率),所以截图时图片显得小,而在实验室时因为是32位win7可以直接使用电脑上的命令提示符,截图可以更加清晰明显。

        本次实验内容中,主要是学习了一些汇编指令的操作方法,还有机器码对汇编指令的转换。实验一中,直接输入机器码的方式,再通过反汇编得到这些指令,不过看出机器码要比汇编指令难看懂许多。同时在使用e进行输入时,也发现了更加方便贴合人心的输入方法(上图所示),当使用e并且在后面直接写内容时,有可能会因为输入过多不再让输入;而这种方法可以一个一个进行修改,方便人计数,不容易改错。实验二里,只写一条add ax,ax指令加上修改段地址和偏移地址就可以达到求出2的8次方。实验三四主要是关于一些地址所代表的特殊意义,比如屏幕显示的内容也是有其所代表的地址的。这对于学习汇编还是一个开始。

  • 相关阅读:
    每日英语:Universities in Singapore strengthen cooperation with China
    每日英语:The Exercise Equivalent of a Cheeseburger?
    每日英语:Eating Safely in China, on a Budget
    每日英语:What Makes A RiskTaker
    OAuth2 vs JWT,到底怎么选?
    Docker 为什么输给了Kubernetes?Docker 员工自述!
    90 岁程序员,他的压缩算法改变了世界!
    数据库设计的 10 个最佳实践!
    代码写的垃圾被嫌弃?这 3 个插件你值得拥有!
    ShardingJdbc 实现读写分离 + 分库分表,写得太好了!
  • 原文地址:https://www.cnblogs.com/xcss831/p/9866019.html
Copyright © 2020-2023  润新知