📋 作者介绍:友友们好我是乱披风锤,大二学生党一枚
💖作者主页:乱披风锤的个人博客主页.乱披风锤
🔥我和友友们一样喜欢编辑,天天敲代码🤭,沉迷学习,日渐消瘦。很荣幸能向大家分享我的所学,和大家一起进步。如果文章有错误,欢迎在评论区指正。那么开始今天的学习吧!
🎉 支持我:点赞👍+收藏⭐️+留言📝
汇编语言-实验6
一、实验要求
1.你的程序不要截图,直接粘贴。
2.用蓝色或者绿色字体作答。
二、实验技巧
1.程序运行没有输出,怎么查看运行结果?(debug所生成的可执行文件,执行后,查看结果)
2.dos下打字很慢怎么办?(可以使用shift+向上或者向下,查看已经输入过的指令)
3.编译出错怎么办?(仔细查看出错提示信息,找到对应行检查。asm文档在打开的状态,可以对其在dos下编译)
4.请独立完成作业。(可偷看别人的程序,但不能复制粘贴)
三、实验技巧
1.编写程序,使用loop指令用加法计算你的学号后两位*99。
源程序(不要截图):
code segment
assume cs:code
start:
mov ax,14
mov cx,98
s:add ax,14
loop s
mov ax,4c00h
int 21h
code ends
end start
结果(截图):
输入代码段的起止地址查看代码段(截图):
思考:loop指令对应的机器码是? loop指令的偏移地址是?要跳转到的指令的偏移地址是?这两个偏移地址的差值与loop指令机器码有什么关系?
答:机器码E2FB loop指令的偏移地址000B 跳转到的偏移地址0006
关系0B+FB=06
2.编写程序,使用loop指令输出字母表ABCD….Z。
源程序(不要截图):
code segment
assume cs:code
start:
mov dl,'A'
mov ah,2
int 21h
mov cx,25
s:
inc dl
int 21h
loop s
mov ax,4c00h
int 21h
code ends
end start
运行结果(截图):
思考:loop指令对应的机器码是? loop指令的偏移地址是?要跳转到的指令的偏移地址是?这两个偏移地址的差值与loop指令机器码有什么关系?
答:机器码E2FA loop指令的偏移地址000F 跳转到的偏移地址0009 关系0F+FA=09
输入代码段的起止地址查看代码段(截图):
3.编写程序,使用loop指令用加法求2的20次方.
源程序(不要截图):
code segment
;求2^20
assume cs:code
start:
mov ax,2
mov cx,19
s: add ax,ax
loop s
mov ax,4c00h
int 21h
code ends
end start
运行结果(截图):
思考:看到运行结果后,你有什么想法呢?
运行结果ax=0000,2的20次方超过了2的16次方,寄存器ax存放不下
4.大家来找茬。请翻到本文档下一页,请根据截图判断哪里出错了,再看看自己判断是否正确。你能找到错误原因的题有几道?
答:我能找到错误原因的有 4 道.分别是
第一题:第九行mov ax,4c00少了h
第二题:第二行cs后面跟了中文;
第三题:第十一行code end,end后面少了s
第四题:第四行后面bx后面接了中文,
常见错误演示:
错误1
错误2
错误3
错误4
总结
好了,那么今天的学习就到这里了。友友们觉得不错的可以给个关注,点赞或者收藏哦!感谢各位友友们的支持。以下的代码希望各位大佬们自行检验哦,毕竟亲手操作让记忆更加深刻。