实验二 汇编语言程序设计(顺序、多分支、循环)
一. 实验目的
1、掌握顺序和循环程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
二. 实验内容
1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:
①计算表达式值(V–(X*Y+Z-720))/X;
②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。
2、使用地址表实现如下功能:根据输入的数字1-7,分别显示相应的英文星期名,如果输入其他字符,则重新输入。
3、求一个班50名学生成绩的平均值、最大值和最小值,并将结果显示出来。
4、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串;查找中间是否有‘masm’子串。如果有,输出‘Yes’;否则,输出‘No’)。
三. 实验过程和程序
1、
设置参变量:;设置 x=2 y = 10 z= 700 v = 10 计算(10-(2x10 + 700 -720))/2 = 5 利用-g命令分段运行最终验证商ax是否等于5 余数dx是否为0
源代码如下:
2、
3、
4、
四. 实验结果(包括必要的截图)
1、
2、
3、
4、
五. 实验体会
(1)、加深了对有乘法运算imul,结果的分配问题,对于两个有符号字相乘ax存低16位,dx存高16位,(两个16位相乘为32位,当时没考虑到这一点出错了很久),且默认目的操作数为ax,8进制相乘默认操作数为al 结果传ax。除法两个 16进制字相除,其商存于低16位ax,其余数存高16位dx,且默认目的操作数为ax,只需一个源操作数r16,字节相除默认操作数为ax,商传 al,余数存ah,需一个r6.
(2)、定义字符串以$结尾,灵活运用odh,oah回车换行空格等,可使界面相对美观。
(3)、输入字符串0ah,其中第一个byte和第二个byte分别储存字符串长度和字符串输入的实际长度,第二个byte可以赋初始值,但是int21后系统自动更改为实际输入的字符串长度!第三个byte开始储存输入的字符串,即string[2]开始,提取所输入的字符串中的内容时,需要注意内存的开始是第三个,但是利用it21 输入一段字符串时,直接获取其的首地址:offset byte!