zoukankan      html  css  js  c++  java
  • 汇编语言 实验4

    实验4

    实验内容1:综合使用 loop,[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个 字单元重复填充字数据 0403H;修改0403H为0441H,再次运行

    步骤1:在记事本中编写好temp.asm文件

     

    步骤2:进入dosbox环境进行编译连接并运行,屏幕特定位置显示16个红色爱心

     

    步骤3:修改0403H为0441H,运行后观察结果

     

    Tips:

    进入debug环境逐步调试时,发现并没有修改b87b8H内存单元中的值。对比直接运行并在没有清屏条件下进入debug运行,和直接在debug环境中修改寄存器取值,发现可能的原因是:输出在屏幕上的符号是动态的,即刻显示当前位置的符号。如果显示的位置下面本来没有代码,后面输入的代码会覆盖这些符号;如果下面你本来就有代码,会随着代码的输入而不断上移位置

     

     

    实验内容2:综合使用 loop,[bx],编写完整汇编源程序,实现向内存 0:200~0:23F 依次传送数据 0~63(3FH)

    用loop, [bx]实现:

    1、步骤1:在记事本中编写好temp2.asm文件

     

    步骤2:进入dosbox环境进行编译连接并运行

     

    步骤3:进入debug环境,灵活使用 debug 的 t 命令、g 命令、p 命令调试,用 d 命令 查看 0:200~0:23F,确认是否将 0~63 传送至此段内存区域

     

     

    (用g命令调试)

     

     

    (用t命令逐步调试、p命令一起执行循环的部分,结果和用g命令一样)

    2、稍作改动,同样能实现

     

     

    实验内容3:实现将“mov ax,4c00h”之前的语句全部复制到从0:200开始的一段空间中

    步骤1:在记事本中编写好temp3.asm文件(填空的内容为1. CS 2.offset last-offset start

     

    步骤2:进入dosbox环境进行编译连接并运行

     

    步骤3:灵活使用 debug 的 t 命令、g 命令、p 命令调试,用 d 命令查看 0:200 之后的若干字节,观察是否将 mov ax, 4c00h 之前的指令复制到指定内存

     

     

     

     

    实验4——总结

    收获:本次实验让我熟悉了loop、[bx]的使用,弄懂了屏幕上输出符号的位置与是否被覆盖的问题,了解了怎么进行代码的复制(怎么表示一段不知道大小的空间的大小),掌握了p命令的有一个功能——跳过循环的具体过程直接执行到循环结束。

     

    问题:最后一个实验为什么在复制完成以后还会多出一段数据呢?

           实验内容2的我尝试了用loop、push做但是失败了,查看内存单元发现并没有修改原来的取值。那么到底应该如何实现呢?

  • 相关阅读:
    5.电影搜索之 自动填充,也叫autocomplete、搜索建议!
    4.电影搜索之如何把视频播放器嵌入网页 百度影音+快播
    3.电影搜索之采集
    2.电影搜索之整体结构
    软件工程期末考试复习
    python数据库连接池DBUtils
    python实现定时发送系列
    flask高阶
    python对象转字典
    flask中的蓝图与红图
  • 原文地址:https://www.cnblogs.com/cjh-1023/p/9985973.html
Copyright © 2011-2022 走看看