实验2 汇编源程序编写与汇编、调试

一、实验任务一

编辑ex1.asm的文本内容

 

 

 对masm ex1.asm 和link ex1.obj对文件进行汇编和链接

 

 

检查生成的文件:

用debug进行调试:

 

反汇编,30=0031-1

 

 

 

 

 查看内存单元,结果与想要的不一致,可能是因为屏幕回滚的原因

运行结果

 

 

 

二、实验任务二

编辑ex2.asm的文本内容

 

 

 打印 ex2.asm的结果:

对masm ex2.asm 和link ex2.obj对文件进行汇编和链接

 

 

 

debug命令进行调试

 

 

 

 

 

 

 

 

 

运行结果:

 

 

 

把ex2.asm中line9 mov cx, 4 改成 mov cx, 8 ,保存后重新汇编、链接、运行并观察结果。 

结合上述实验和观察,分析、对比ex2.asm和ex1.asm,它们实现的是否是相同的功能和效果?在具体实现上有什么不同? 
两者效果相同,但实现方式不同.ex1.asm是将一步步将数据放入指定内存,ex2.asm利用loop和[bx]指令,缩短了重复代码.
 
 
三、实验任务三
综合使用loop,[bx],编写完整汇编程序,实现向内存b800:07b8开始的连续16个字单元重复填充字数据0237H。 
编辑ex3.asm

 编译、链接同实验任务一、二,省略

把填充的字数据,从0237H 改成0239H,再次保存后,汇编、链接、运行,观察结果。 

把填充的字数据,从0237H 改成0437H,再次保存后,汇编、链接、运行,观察结果。 

把填充的字数据,从0237H 改成0437H,再次保存后,汇编、链接、运行,观察结果。 

猜测并分析,这个字数据中高位字节里存放的是什么信息,低位字节里存放的是什么信息。 

猜测高两位代表颜色,低两位代表数字。

 

四、实验任务四

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

编辑ex4.asm

 编译、链接同实验任务一、二,省略

查看内存单元:

 

 

五、实验任务五

编辑ex5.asm

编译、链接同实验任务一、二,省略,debug 调试如下:

 

1)复制的是什么,从哪里到哪里

复制字节数据,从cs代码段到ds数据段  0:200

2)复制的是什么,有多少个字节,如何知道要复制的字节数量

 字节数量要看代码占多少字节,可以用反汇编查看代码再计算

 

 

 

 

 

 

 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-11-06 09:34  Dauntless_yin  阅读(134)  评论(2编辑  收藏  举报