• 【8086汇编-Day3】用debug做实验时的技巧与坑


    Ⅰ· 无病呻吟

      学一门语言,不动手实验是学不好的,在实验中不断遇坑然后解决,才有进益。所以写一下我在第一次汇编实验中的所思所想(王爽《汇编语言》第二章章末实验)。

    Ⅱ · 实验内容

    •   题解思路:

        这个题需要我们向内存中写入一段代码并单步执行,仔细看过我上篇博文给出的链接,很容易想到,写入一段东西 有两个指令:e和a。

        e是向指定位置写入机器码,(-e [段地址]:[偏移量],可逐个修改,亦可批量修改,下面是逐个修改),输完回车会显示指定内存地址处的原数据,输入要修改为的值。然后个选择,1.空格:修改紧接着的下一个地址的内容。2.回车:不再继续修改。单步执行命令为t,从cs:ip默认地址开始执行命令。

    •   题解过程:

        1.再用 a 指令直接输入一段代码,然后用 d 命令查看其机器码。

        2.t单步执行(每次执行一条指令的时候,会根据指令长度,计算下一个命令的地址,做预读取)

    •   题解思路:

        写入指令倒是没什么难度,a 命令加上个指定地址就好了,重点在于,利用无条件跳转 jmp 达到计算2^8的目的,这就需要自己手动指定什么时候停止。这里用 t 加 指定指令数来实现。那就要算好要执行的指令数,将 add 和 jmp 做为一套运算,每套运算下来相当于ax的值乘以2,所以要计算2^8就是要做8套运算,乘以二就是要执行16条指令,别忘了还有一开始给ax赋初值的一条,所以总共17条指令!这里有个坑!!!dosbox里都是十六进制,所以如果输入条数的时候输入的是17,那实际上执行了23条指令。

        另外,讲过t从cs:ip默认指向的地址开始执行,所以要先改好cs值,ip的值可以在用 t 命令时指定。

    •   题解过程:

        1.写完指令后看下寄存器状态和指令机器码

        2.用 r 查看并修改cs值

        3.单步执行,并查看最后运算结果

    •   题解思路:

        用 d 命令加上起始地址查看指定内容,并用 e 尝试修改

    •   题解过程:

        事实证明,不能修改,原因是这段属于ROM(只读存储),其内容,在一开始就烧录好,只供读取使用。

    •   题解思路:

        照打命令,查看现象。修改命令参数,尝试修改显示的位置、符号、颜色、背景色、闪烁。

    •   题解过程:

        1.照例尝试

        2.上图发现写入不同内容后显示的图案样式颜色有所不同,在找到规律后,如下实验

    实际上,这里能看出来两点:一、dos内显示区域起始位置为b8000。二、参数细节不同,显示效果不同。详细如下:

      奇数位的字节表示显示什么符号,这是对应的十六进制ASCII码值,四行命令对比即可体现,诸君可尝试不同图案。

      然后偶数位字节分出来高位(前位)和低位(后位)。低位表示何种颜色(0~F共16种)图中用笑脸和梅花共同展示了所有的16种颜色(黑色在最开头,不过融入窗体黑色,看不到,这里就可以当作“隐藏了”)高位数字又分成两个段,0~7和8~F,他们都有背景色,且一样,但是后段有闪烁效果。

    (以上文段为本人总结规律,并非真正原理,有所偏差,以下面链接作矫。)

    https://blog.csdn.net/nicholas199109/article/details/8554886

    整体上就是这些了,最后一个比较有意思,诸君可以玩出点不同的效果。

     Ⅲ · 补充

      补充一张8086PC机内存地址空间分配的基本情况,实验3、4都用到了

  • 相关阅读:
    Nginx详解十四:Nginx场景实践篇之代理服务
    PyCharm设置字体风格
    PyCharm+SVN
    Nginx详解十三:Nginx场景实践篇之防盗链
    Nginx详解十二:Nginx场景实践篇之跨站访问相关
    Nginx详解十一:Nginx场景实践篇之Nginx缓存
    Nginx详解十:Nginx场景实践篇之Nginx静态资源场景配置
    Nginx详解九:Nginx基础篇之Nginx的访问控制
    浅谈控件(组件)制作方法一(附带一delphi导出数据到Excel的组件实例)(原创)
    切断数据感知控件,大大提升软件运行速度
  • 原文地址:https://www.cnblogs.com/hackmylife/p/9728096.html
Copyright © 2020-2023  润新知