汇编语言 实验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 [寄存器],数据 这种方式来将数据存入以寄存器的内容为偏移地址的内存单元中。

 

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

 

转载于:https://www.cnblogs.com/cjh-1023/p/9979162.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值