• 汇编语言 实验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做但是失败了,查看内存单元发现并没有修改原来的取值。那么到底应该如何实现呢?

  • 相关阅读:
    盘点直播带货平台开发基本功能
    直播软件开发科普之流媒体介绍
    直播平台搭建之音视频开发:认识主流视频编码技术H.264
    直播卖货系统如何搭建
    day27-反射
    day20---IO流概述
    《通货膨胀》学习感悟
    《小狗钱钱》阅读感悟
    有限状态机(finite state machine,FSM)
    verilog中的可综合逻辑和不可综合逻辑
  • 原文地址:https://www.cnblogs.com/cjh-1023/p/9985973.html
Copyright © 2020-2023  润新知