• 实验 4 [bx]和loop的使用


    实验内容

    1. 综合使用 loop,[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个 字单元重复填充字数据0403H。

    实验代码:

    assume cs:code

    code segment

      mov ax,0b800h(不能以字母开头,前面置零)

      mov ds,ax

      mov cx,16

      mov bx,07b8h

      mov ax,0403h

    s:    mov [bx],al

      inc bx

      mov [bx],ah

      inc bx

      loop s

      mov ax,4c00h

      int 21h

    code ends

    end

    接下来运行程序

    编译无错误

     

    如图所示,出现16个爱心符号

    将源代码程序中字数据0403H→修改为0441H,运行截图、

    出现16个A

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

    实验代码:

    assume cs:code

    code segment

      mov ax,0020h

      mov ds,ax

      mov bx,0

      mov cx,64

      mov al,0

    s: mov [bx],al

      inc bx

      add al,1

      mov ax,4c00h

      int 21h

    code ends

    end

    编译无误

     在debug环境下进行调试

    t命令是一步一步执行下去。

    p命令,在循环部分直接结束。

    g命令直接执行完,结果如上

    3. 教材实验4(3)(P121) 

     下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200中,补全程序。上机调试,跟踪运行结果。

    assume cs:code

    code segment

      mov ax,__

      mov ds,ax

      mov ax,0020h

      mov es,ax

      mov bx,0

      mov cx,__

    s: mov al,[bx]

      mov es:[bx],al

      inc bx

      loop s

      mov ax,4c00h

      int 21h

    code ends

    end

    将当前代码段复制到目标空间,复制的测试代码段需要通过在debug中调试得出,用r命令可以看出cx的值,即程序总代码的大小,以字节为单位

    现在cx中填4,用r命令观察需要复制的字节数和不需要复制的字节数

    可以看出总共需要1ch个字节,无用代码一共需要5h个字节,所以复制的代码为17h个字节,即23

    更改源代码cx为23

     

    复制成功

    实验总结

    通过这次实验,更加清晰的掌握了将字或者字节写入一段地址空间的操作方法,相关爱心符号的代码在实验三中有所涉及,学会了复制代码段的相关操作过程。

     

      

       

  • 相关阅读:
    HTML连载29-div和span标签
    Java连载14-补码简介&浮点型整数
    Java连载13-整数型字面值的强制转换
    Java连载12-继承开发环境&long类型
    [Python] tkinter 之 Listbox & Combobox
    [Python] Tkinter command
    [java] 转型
    [Python] execl读写
    [c++] 细节
    [刷题] PTA 7-64 最长对称子串
  • 原文地址:https://www.cnblogs.com/-Cold/p/9978540.html
Copyright © 2020-2023  润新知