zoukankan      html  css  js  c++  java
  • 实验报告:实验四

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

    代码如下:

     1 assume cs:code
     2 code segment
     3    mov ax,0b800h
     4    mov ds,ax
     5    mov bx,07b8h
     6    mov cx,10h
     7 
     8 s: mov [bx],0403h
     9    add bx,2
    10    loop s
    11   
    12    mov ax,4c00h
    13    int 21h
    14 code ends
    15 end

    需注意的是如果地址以字母开头的话需要在前面加0。

    并且是重复填充字数据,所以每次bx值需要+2.

    然后汇编→连接→运行→调试。如下图

    结果如下图

    然后将源代码程序中字数据 0403H→修改为 0441H,结果如下图。(16个A)

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

    代码如下:

     1 assume cs:code
     2 code segment
     3     mov ax,20h
     4     mov ds,ax
     5     mov bx,0
     6     mov cx,40h
     7     mov al,0
     8 
     9 s:  mov [bx],al
    10     inc al
    11     inc bx
    12     loop s
    13   
    14     mov ax,4c00h
    15     int 21h
    16 code ends
    17 end

    然后汇编→连接→运行→调试。如下图

    分部调试

    查看结果对应地址确实改为了0-63。

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

    最终代码如下:

     1 assume cs:code
     2 code segment
     3    mov ax,cs
     4    mov ds,ax
     5    mov ax,0020h
     6    mov es,ax
     7    mov bx,0
     8    mov cx,17h
     9 s: mov al,[bx]
    10    mov es:[bx],al
    11    inc bx
    12    loop s
    13    mov ax,4c00h
    14    int 21h
    15 code ends
    16 end

    其中,想要复制程序代码,即从cs:ip开始(ip默认为bx=0),即把cs赋值给ax。

    循环次数cx一开始并不确定,但是可以在运行的程序反汇编中看出所需复制的代码的长度。则随意给cx赋值,查看反汇编代码长度

    如下图

    可以看出程序从0000-0016为所需复制的代码,长度为23个字节。

    即赋值cs=17h。

    然后重新编译连接运行调试,结果如下图:

    然后用g命令直接调试,再用d命令查看指定地址中的内存数据是否为反汇编中的代码对应的数据:

    结果相符。

    总结和感想:

    1.熟悉了汇编中loop语句的循环使用。

    2.对段前缀【bx】的语法和用法有所理解,同时对g命令一步到位的调试很有好感。

  • 相关阅读:
    Oracle EBS-SQL (INV-1):库存货位列表.sql
    Oracle EBS-SQL (SYS-24):职责列表
    Oracle EBS-SQL (SYS-23):用户权限查询.sql
    Oracle EBS-SQL (SYS-22):sysadmin_用户职责查询.sql
    Oracle EBS-SQL (SYS-21):sys_用户名与人员对应关系查询.sql
    Oracle EBS-SQL (SYS-20):职责使用菜单2.sql
    Oracle EBS-SQL (SYS-20):OPM接口处理.sql
    Oracle EBS-SQL (SYS-19):sys-用户登陆纪录查询.sql
    Oracle EBS-SQL (SYS-18):检查系统安装的各个表是否打开(PJM%).sql
    Oracle EBS-SQL (SYS-17):查询一张报表在哪个职责下面.sql
  • 原文地址:https://www.cnblogs.com/xue123/p/9972249.html
Copyright © 2011-2022 走看看