实验4 [bx]和loop的使用

1. 综合使用loop,[bx],编写完整汇编程序,实现向内存b800:07b8 开始的连续16

字单元重复填充字数据0403H

Masm集成环境中写入代码保存为1116.asm文件如下:

 

编译运行生成如下文件:

 

成功运行得到如下结果:

 

debug调试查看b8000728后的16个字单元的内容,成功改写,截图如下:

 

将数据0403h改写成0441h,编译运行得到如下截图:

结论:观察到改变填充内容,输出字符形状产生了变化,且是根据各数值对应的ASCII码及相应形状而发生改变。

通过改变填充单元和循环次数,有如下变化: 

 

结论:观察到改变循环次数和填充内容和单位时,不仅输出内容减少了和字符形状改变,而且颜色发生了变化。

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

0~63(3FH)

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

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

指令实现)

(1)Masm集成环境中写入代码并保存为1116_2.asm文件如下:

 

编译连接得如下文件:

 

debug调试如下:

 

(2)设定初始栈地址为ss:sp=0:0240h,(由于开始入栈时sp自动减2,故设偏移地址为0240h),由于入栈操作是从高地址单元向低地址单元方向的,故初始设ah=63,在栈内存段中,高位位于高地址单元,低位位于低地址单元,故在循环中写入每次sp1

得截图如下:

 

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

Masm集成环境中写入程序,其中,第一处空填入cs,指示当前指令的段地址。关于第二个空,先任意假设一个值,然后使用debug反汇编,可观察到该程序段在“mov ax,4c00h”之前的长度为17h,返回,重设cx的值,进行编译连接,得如下截图:

先任意假设一个cx的值:

反汇编的程序段在mov ax,4c00h”之前的长度为17h

重设生成1116_4.asm文件:

 

d命令查看0200后若干内存单元,的如下结果:

 

对比反汇编的指令机械码,可知成功复制了指令到内存0200处。

本次实验个人有个人不同的写法,答案不唯一,在多加修改与跟踪的情况下,可逐渐完成实验内容,同时,可尝试多种修改数据产生的各类型结果。

posted @ 2018-11-17 12:29  但愿人长久的路小周  阅读(287)  评论(1编辑  收藏  举报