实验6 键盘操作与显示
一、实验目的
熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。
二、实验题
- 把数据段中1维数组AA_1变量地址中连续7个数(1,3,5,7,2,4,6)读出,把每个数加2后再存入到数据段中BB_1数组开始的标号地址中去,并显示出BB_1数组中每个数来(之间用空格分开),参考程序如下:
请回答以下问题:
(1) 指令MOV AH, 02H中02H的含义是?
INT 21H 是DOS功能调用,调用的功能号都放在AH中,MOV AH,02H就是调用屏幕字符显示功能,其实就和MOV AH,4CH一样只不过4CH调用的是程序结束执行的功能。
(2) 指令ADD DL, 30H的作用是什么?
因为我们要在屏幕上显示字符,但是屏幕显示字符不能直接显示字符,所以我们需要先将DL中的数值加上30H转换成ASCII码值然后才能正确显示对应的数值字符。
(3) 除了参考程序中用的访问方式,还可以用什么方式访问AA_1数组里的元素?
汇编语言中访问数组其实和C语言十分类似,段地址+偏移地址=真实地址,就和C语言通过数组名加序号的方式访问差不多。
除了通过LEA来获取数组的有效地址之外,还可以通过mov offset来获取数组的偏移地址,这和LEA取有效地址其实作用一样。
- 已知DATAX和DATAY单元各存放一个带符号字节数据,从键盘上接收加(+)、减(-)、乘(*)或除(/)符号,然后完成相应运算,结果存入RLT单元。
- 加法调试
分析结果知:9+3的结果是12,换算成16进制也就是0CH
2. 减法调试
分析结果:3*9=27,换算成16进制也就是1BH
4. 除法调试
分析可知:9除以3等于3.
总结:考虑到算法的鲁棒性,我认为应该判断输入除法符号,否则除了加减乘其他的都会被视为除法运算符号
- 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。把源程序附在下面,并把debug单步调试的截图附在下面。
分析:可以发现调试结果datax,datay,dataz三个值分别是a,b,c的ascii码值。
三 实验报告
要求: 1.每步操作过程及所用指令;2.用截图方式反应指令执行前后的相关寄存器或存储单元内容的变化,并对所得结果进行分析。
__EOF__
本文链接:https://www.cnblogs.com/tccjx/p/16295556.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:TCcjx,转载请注明原文链接:https://www.cnblogs.com/tccjx/p/16295556.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?