汇编语言 实验3

 

实验3

实验内容1:运行exe文件输出数据,并观察每一步的调试情况

步骤1:在记事本中编写t1.asm文件

 

步骤2:在dosbox环境下汇编、连接、运行文件,得到数据36

 

 

步骤3:修改dl寄存器中的值为0-9中任意一个数,重新编译链接运行,查看结果

 

 

步骤4:进入debug环境进行调试——

-r查看各寄存器的值;

-d查看PSP程序段前缀中前两个字节的值;(CS和DS寄存器相差10h:存放程序段前缀的内容,使程序返回时能记住返回的地址)

-u进行反汇编

 

步骤5:用-t(查看普通步骤)、-p(查看int 21h步骤)逐步调试,观察结果

 

tips:

1.在win7系统下可以用notepad打开一个文本文档,而win10Dosbox环境下不行;

2.用‘x’在寄存器中输入相应数据也可以输出同样结果)

 

个人理解:把0200h放入ax寄存器中,在dx中存入003xh(x为任意0-f的16进制数字),后面再加入int 21h的语句,运行后就会显示1Byte的x数据(其中a-f只会输出1)

 

 

实验内容2:运行exe程序在屏幕左上角输出带颜色的数字,逐步调试并观察其过程

 

步骤1:在记事本中编写t2.asm文件

 

步骤2:在dosbox环境下汇编、连接、运行文件,清屏后运行屏幕左上角显示红色的36

 

 

步骤3:修改原t2.asm中像内存单元传送的数据,运行后发现在屏幕上出现不同颜色的不同数字

 

 

tips:

1.运用mov [偏移地址],数据 时,有的平台会显示向寄存器中存入了占多少存储单元的数据,有的不会)

2.在汇编源程序中,数据不能以字母开头,要在字母前面加0

 

个人理解:实验1中,我发现向从0b800开始的内存单元中写入数据,能在屏幕的不同位置输出不同颜色的各种符号。而通过本次实验,我还发现向0b800内存中写入数据两个字节数据xy3z,则会在屏幕左上角顶格出现数字z,而xy控制了输出数据z的颜色

 

 

 

实验3——总结

收获:通过本次实验,我初步了解了一个完整的汇编小程序的形成过程(汇编、连接、运行),并且通过debug环境逐步观察了各个寄存器的变化。学到了汇编程序中CS寄存器的值总是比DS多10h,原因是需要10h的空间存放PSP(程序段前缀)以标识代码运行完毕之后程序返回的位置。明白了-p命令是用来查看 int 21h 这条指令的执行过程的。还学到了可以用mov [寄存器],数据 这种方式来将数据存入以寄存器的内容为偏移地址的内存单元中。

 

问题:怎么用汇编语言编写一个从键盘输入字符,从屏幕输出字符的程序呢?

 

posted @ 2018-11-18 20:10  无ni不欢  阅读(885)  评论(0编辑  收藏  举报