• 《汇编语言》实验三——编程、编译、连接、跟踪


    实验任务一:将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。

     

    用记事本编辑代码,保存为t1.asm:

    编译、连接,生成可执行文件:

     

    运行程序:

     

    得到输出结果为06

    下面研究修改line4和line9中寄存器dl的值,对结果产生的影响。

    为简化编译、连接的过程,决定采用批处理文件的形式来完成这个过程:

    生成一个名为m_l.bat的批处理文件。

    修改:line4的3—>4,line9的6—>8:

    编译、连接、执行:

    得到输出结果08

    用debug对t1.exe调试:

    用r命令查看各寄存器的值:

    发现cs的值为076A,ds的值为075A,满足(cs)=(ds)+10H

    查看psp的内容:

    可以看到,psp的头两个字节的确是CD 20

    使用u命令反汇编,观察源代码:

    单步调试:

    实验任务二:将下面的程序保存为t2.asm文件,将其生成可执行文件t2.exe

    用记事本编辑代码,保存为t2.asm:

    编译、连接,生成可执行文件:

    运行结果:在屏幕的左上方出现红色数值36

    下面研究修改line7和line10的部分数据对结果产生的影响

    ①line4的 0433h—>0432h, line10的 0436h—>0439h

    编译、连接、运行:

    运行结果:在屏幕的左上方出现红色数值29

    ①line4的 0433h—>0333h, line10的 0436h—>0336h

    编译、连接、运行:

    运行结果:在屏幕的左上方出现蓝色数值36

    从以上3组结果可以看出,line7控制第一个字符的输出,line10控制第二个字符的输出。二者[bx]的高字节决定了颜色,低字节控制显示的字符。

  • 相关阅读:
    android120 zhihuibeijing 开机页面
    Android View.onMeasure方法的理解
    android119 侧滑菜单
    android事件拦截处理机制详解
    Android应用在不同版本间兼容性处理
    虚拟机重置密码
    ESXi虚拟机开机进入bios的方法
    [日常工作]Win2008r2 以及更高版本的操作系统安装Oracle10.2.0.5
    Linux下安装oracle的过程
    Oracle18c Exadata 版本安装介质安装失败。
  • 原文地址:https://www.cnblogs.com/kevin234/p/9890063.html
Copyright © 2020-2023  润新知