实验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)复制的是什么,有多少个字节,如何知道要复制的字节数量
字节数量要看代码占多少字节,可以用反汇编查看代码再计算
‘