实验三 顺序结构程序设计实验

各题目程序源代码在这里:Leeeeo’s Assembly-Language</strong>

一、实验目的

1.掌握顺序结构程序的基本设计方法;

2.掌握数据传送指令和算术运算指令的用法;

3.掌握逻辑操作指令和移位操作指令的用法;

4.掌握状态标志位操作指令的用法;

5.掌握简单的I/O功能调用。

二、实验要求

1.熟练掌握DEBUG中的U,D,E,G命令的使用方法;

2.学会利用系统功能调用,来实现键盘输入字符、显示字符的方法;

3.了解大、小写字母及数字在计算机中的表示方法及转换方法。

三、实验内容

1、编写十六进制数的乘法程序。要求从键盘输入两个一位十六进制数据,乘积存入SUM单元。

解题思路:

先将从键盘输入的十六进制数据的ASCII码通过查表的方法转换成对应的十六进制数据存储在AL单元中,以此类推保存第二个数,然后使用MUL得到两个数的积,最后使用MOV将结果保存到SUM单元中。

 

2、编写程序,求表达式5X+Y的值,要求:X、Y值从键盘输入,X、Y均为一位十六进制数据,将计算结果存入SUM单元。

解题思路:

先将从键盘输入的十六进制数据的ASCII码通过查表的方法转换成对应的十六进制数据存储在AL单元中,将5保存到CH中,然后使用MUL得到5X的结果保存到CL中,用第一个数的方法查表得到第二个从键盘输入的数,然后使用ADD得到第二个数和5X的和,最后使用MOV将结果保存到SUM单元中。

3、编写程序,求表达式的值,已知A、B、C的值分别存放在DATAA、DATAB和DATAC字节单元中,X的值存放在DATAX字节单元中,计算结果存入DATAY字单元(A、B、C、X均为0~9之间的数字)。要求在DEBUG下多次修改X的值,观察计算结果。

解题思路:

从DATAX中取出数据相乘,再乘DATAA的数据得到,类似可以得到BX,最后取出DATAC中的数据与前两项作和,结果存入DATAY单元。在DEBUG下使用-E DS:偏移量 的方法多次修改X的值,在使用-D DS:0 观察Y值的变化。

4、从键盘上输入0~9之间的任意数字,利用查表的方法,计算其平方值,并将结果以十进制形式在屏幕上显示出来。

解题思路:

将0~9之间数字的平方值的十位和个位分别保存到两个表中。通过查表的方法直接输出该数字的十位和个位到屏幕上。

5、利用查表的方法,计算的值的值(0X15,0Y15),X,Y分别存放在DAX和DAY单元中,计算结果存入SUM单元。

解题思路:

从DAX和DAY中取出X和Y的值,通过查表分别得到和的值,然后将两个值作和将结果存入SUM单元。

 

四、遇到的问题及解决办法

1.0F和OF

想打0F结果输成OF,输入错误。这类错误在编译过程中就能暴露出来。

解决办法:

根据提示找到对应行数,修改对应行代码。

2.产生结果不对

程序编译链接都没有报错,但是运行结果不正确。

解决办法:

在DEBUG模式下查看对应内存单元所存放的值是否正确,即从键盘入读的数是否正确地转换成十六进制数保存在相应的内存单元。然后查看数据段,表中数据是否正确。然后在用-G命令,执行到感觉结果不对的对应行,查看内存单元是否如预期所想,如正确则用-G执行到下一行,直到找到有问题的行,把问题改正。

3.指令参数不正确

MOV DL,

解决办法:

根据提示找到对应行数,修改对应行代码。

各题目程序源代码在这里:Leeeeo’s Assembly-Language</strong>