汇编语言-实验5(学习打卡Day10)


📋 作者介绍:友友们好我是乱披风锤,大二学生党一枚

💖作者主页:乱披风锤的个人博客主页.跳转到个人简介
🔥 我和友友们一样喜欢编辑,天天敲代码🤭,沉迷学习,日渐消瘦。很荣幸能向大家分享我的所学,和大家一起进步。如果文章有错误,欢迎在评论区指正。那么开始今天的学习吧!
🎉 支持我:点赞👍+收藏⭐️+留言📝
在这里插入图片描述

汇编语言-实验5(学习打卡Day10)


一、实验目的

学会汇编语言程序的编译链接执行。
学会使用debug分步调试程序。
掌握代码段定义相关伪操作。

二、实验要求

请用绿色或者蓝色字体作答。
源程序直接粘贴文字,源程序不要截图。

三、实验过程和结果

请用绿色或者蓝色字体作答。
源程序直接粘贴文字,源程序不要截图。
在这里插入图片描述

1.将汇编语言编译环境(masm文件夹)复制粘贴至c或者d根目录下(这个步骤在前几个实验中就已经完成)。
2.将上图汇编语言程序输入至记事本中(分号后面的是注释,可以不敲入),并且另存为“文件名.asm”的形式。文件命名请以字母或者下划线开头,不要使用中文。例如“myfile.asm”。请注意输入的时候符号是全角还是半角状态。
3.进入dosbox,mount命令使用完成后,进入masm文件夹。如果电脑够低端,也可以直接进入masm文件夹,而不使用dosbox。
4.编译链接执行汇编语言程序。从键盘输入某个字母,如下图中输入了q
在这里插入图片描述
你的截图
在这里插入图片描述
思考:上图中qqa是怎么回事(不一定是q,你也可以输入其他字符),请猜测这个程序干了什么事情(参阅系统功能调用int 21h)。
答:从键盘输入单个字符后,输出与键盘输入的字符相同的字符,然后输出大写的字母A(大写字母A的ASCII码对应的十六进制是41)比如输如q,输出qqA
思考:写一条本程序中的伪指令
答:end , assume, segment和ends
思考:本程序中有标签吗?如果有,请写出
答:有,code
思考:本程序中ends有什么含义
答:段的结束
思考:本程序中返回dos的两条指令有什么用?请删除这两条指令重新运行试试。
答:用它返回是不需任何条件,还可顺便关闭打开后忘记关闭的文件。并返回寄存器al的值。在DOS中可用于*.com或*.exe文件。

5.Debug生成的exe程序,并逐条执行。注意使用t和p命令。直到程序运行结束,用q命令退出debug。
在这里插入图片描述
在这里插入图片描述
你的截图
在这里插入图片描述
在这里插入图片描述
思考:本程序并没有使用cx寄存器,可是cx=0015h这是随机数还是有什么含意?可再次debug逐条执行,看看cx是不是不同。
CX中存放的是程序的长度,程序的机器码共有15个字节
6.尝试修改源程序,完成你想要的功能,并另存为另外的名字(能用中文名吗)。
新源程序粘贴如下(不要截图):
答:code segment
;求解2的5次方
assume cs:code
start:
mov ax,2
add ax,ax
add ax,ax
add ax,ax
add ax,ax
mov ax,4c00h
int 21h
code ends
end start

7.重新编译链接执行新源程序,看看能不能得到你想要的结果(程序中适当的注释是不是很有用呢?)。
截图:
在这里插入图片描述
8.debug你的新程序生成的可执行文件,并逐条执行。注意查看刚刚加载时cx的值。
思考:初始状态cx寄存器的值是多少?跟之前的程序一样吗?
答:不一样,因为修改后的源程序的代码长度变了,CX表示程序中代码的长度

9.请自己尝试编写求23的汇编程序,运行结果保存在AX寄存器中。编译、链接、执行后,debug所生成的可执行文件,再用u命令查看代码,用t命令单步执行后查看结果(如果遇到int 21h 请用p命令执行)。填写代码段的范围。
源程序(不要截图):
答:code segment
;求解222
assume cs:code
start:
mov ax,2
add ax,ax
add ax,ax
mov ax,4c00h
int 21h
code ends
end start

debug可执行文件,查看初始状态,截图:
在这里插入图片描述
debug可执行文件,查看代码段,截图:
在这里插入图片描述
psp起止地址:
答:075A
代码段起止地址:
答:076A:0000 076A:000C
在这里插入图片描述

总结

好了,那么今天的学习就到这里了。友友们觉得不错的可以给个关注,点赞或者收藏哦!感谢各位友友们的支持。以下的代码希望各位大佬们自行检验哦,毕竟亲手操作让记忆更加深刻。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值