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

    [BX]和loop的使用

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

    源程序如图所示

    img

    编译连接后的运行结果

    img

    将line7的0403h改为0441h后的运行结果为

    img

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

    必做:综合使用loop, [bx], mov实现

    源程序如图所示

    img

    编译连接后进行追踪

    img

    使用d命令和g命令查看执行前后 0:200~23f的变化

    img

    选做*:利用栈的特性,综合使用 loop,push 实现(限定仅使用 8086 中已学过 指令实现)

    源程序如图所示

    img

    追踪程序执行过程,使用d命令和g命令查看执行前后 0:200~23f的变化

    img

    3.下面的程序的功能是将“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  
    

    这个实验要求我们复制程序返回指令之前的指令,那么我们首先要做的就是找到程序存储的位置,由第四章4.9可知cs:ip指向程序的第一条指令,那么我们看一下这个程序,它的line4要求我们将ax的值存入到段地址ds中,而再看line9和line10,很明显,这就是将指令复制到0:200处的指令,那么ds:bx内的数据就是我们的程序,而且我们可以从cs和code得到程序的段地址,那么line3第一个空应该填cs或者code,接下来就是line8的空,cx用来控制循环的次数,但我们不知道这个程序到底有多少字节,那我们应该先随便填写一个数,编译连接后追踪程序,用r命令查看程序的总长度(cx=1c),但我们得到的字节数是包括了程序返回指令的字节数的,因此我们要减去多余的数,已知程序返回指令的字节数为5,那么我们就减去5,得到总长为17,因为这是16进制,所以我们应该填 17h.

    操作过程如下图所示

    img

    img

    img

    img

    img

  • 相关阅读:
    Linux .下Apache的安装
    从程序员到项目经理:项目管理三大目标
    linux下mysql安装
    Linux学习之常用命令
    转载:struts2拦截器
    el自定义函数库
    JAVA正则表达式小结
    JSP自定义标记
    JAVA动态代理(JDK和CGLIB)
    JAVA反射机制
  • 原文地址:https://www.cnblogs.com/-Anguvia-/p/9975156.html
Copyright © 2011-2022 走看看