zoukankan      html  css  js  c++  java
  • 实验四 [bx]和loop的使用

    四.实验结论

    实验一:

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

    实现代码如下:

    assume cs:code
    code segment
        mov ax,0b800h
        mov ds,ax
        mov bx,07b8h
        mov cx,16
    
      s:mov [bx],0403h
        add bx,2
        loop s
    
        mov ax,4c00h
        int 21h
    code ends
    end
    

     运行得到的结果:

    是16个红色的爱心。

    实验二

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

    assume cs:code
    code segment
            mov ax,00020h
            mov ds,ax
            mov bx,0
            mov cx,64
    
    s:
            mov [bx],bx
            inc bx
            loop s
    
            mov ax,4c00h
            int 21h
    code ends
    end
    

     利用debug进行调试,看是否符合题目要求:

    用g命令先直接执行到loop语句,再单步执行,最后程序正常退出。

    用d命令可观察到已存入。

    实验三

    程序源代码如下:

    assume cs:code
    code segment
            mov ax,cs
            mov ds,ax
            mov ax,0020h
            mov es,ax
            mov bx,0
            mov cx,17h
    
    s:
            mov al,[bx]
            mov es:[bx],al
            inc bx
            loop s
    
            mov ax,4c00h
            int 21h
    code ends
    end
    

     在算循环次数的时候要用cx的值减去mov ax,4c00h和int 21h的所占的字节长度。

    如图所示cx值为001c,而mov ax,4c00h和int 21h总共占5个字节。所以循环次数应为17h。

    五.总结与思考

    了解了bx以及loop的使用,并会在编译执行之后使用debug进行调试和查看。利用debug的逐步调试发现新的问题,并且在其中解决困惑。

    需要注意的是循环次数的确定以及偏移地址的计算。

  • 相关阅读:
    微软铁杆兄弟诺基亚开发基于Linux的手机
    Linux目录递归改变文件名大小写
    boa-0.94.13 移植到 ARM
    LINUX如何设置只允许SSH登陆?
    9.4. 使用 I/O 内存
    I-O 端口和 I-O 内存
    Linux 的虚拟文件系统--各结构之间的联系
    Linux 系统调用
    【poj2528】Mayor's posters
    【poj3225】Help with Intervals
  • 原文地址:https://www.cnblogs.com/makaya/p/9985122.html
Copyright © 2011-2022 走看看