zoukankan      html  css  js  c++  java
  • 汇编实验 三 编程、编译、连接、跟踪

    任务一

      DOSBOX环境下用edit命令编写汇编源程序t1.asm,如下图:

    保存后,输入masm,使用该编译工具按下图步骤进行编译连接:

    显示no stack segment,即可输入源程序名字,执行。

    (1)运行程序,输出结果如下:

    (2)用debug对生成的可执行文件t1.exe进行调试:

    1、使用r命令查看,观察ds和cs的值,看是否满足(cs)=(ds)+10H

    可以看出满足(cs)=(ds)+10。

    2、psp程序段前缀的头两个字节是CD 20,用debug查看psp的内容,

    发现psp程序段前缀头两个字节确实是CD 20。

    3、用u命令对t1.exe进行反汇编,观察得到的源代码:

    4、使用t命令和p命令单步调试,观察结果,注意遇到int命令时用p命令:

     

    (3)将line4和line9中寄存器的值分别改为0~9中任何一个数字,重新汇编、连接、运行,观察结果变化。

    这里我把line4的dl改为5,line9的dl改为9,编译连接步骤如(1),执行结果如下:

    任务二

    编写汇编源程序t2.asm如下:

     

    (1)对t2.asm进行汇编、连接后,得到可执行文件t2.exe。运行t2.exe,观察结果是否再左上方的到红色数值36。

    如直接运行没有左上方没有输出结果,输入cls清屏后再运行,得到结果如下:

    (2)重新打开t2.exe,将源代码中line7的0433h改为0432h,line10的0436h改为0439h,重新汇编、连接、运行,使用cls清屏后观察运行结果:

     看到结果为红色数值29。

    (3)重新打开t2.exe,将源代码中line7的0433h改为0333h,line10的0436h改为0336h,重新汇编、连接、运行,使用cls清屏后观察运行结果:

     

    得到蓝色数值36。

    总结与体会

     首先,在本次实验,我主要学会了对汇编源程序的编译、连接、与执行。这些都是书上有的,如果认真看书,就会很简单了。

    我去网上查了一下t命令与p命令的区别,是这样解释的:单步执行命令p与单步跟踪命令t的区别在于对待call类命令的方式上。对于t命令,当碰到“call p1”命令时,单步跟踪命令t会进入该进程,再一步步地执行;而单步执行命令p会按照一般程序执行,而不会进入子程序中。对此我不是很明白。

    从任务一,我们可以看到输出的结果为line4和line9中dl的值。

    对比任务二中(2)和(3), mov [bx],043xh中的04决定输出的颜色,3x决定形状,其中x是十进制数字。

  • 相关阅读:
    vue---思维导图
    vscode----vue中HTML代码tab键自动补全
    css选择器---继承,优先级,层叠
    前端性能优化---减少http请求数量和减少请求资源的大小
    浏览器的一个请求从发送到返回都经历了什么?
    【FAQ】maven包引入版本引发的问题
    【spring】Spring Boot:定制自己的starter
    【redis基础】
    【spring】SpringBoot之Servlet、Filter、Listener配置
    【spring cloud】服务启动后正常,但是无法上线,一直处于down状态
  • 原文地址:https://www.cnblogs.com/ljzww/p/9970650.html
Copyright © 2011-2022 走看看