汇编语言实验指导书智能15.docx
《汇编语言实验指导书智能15.docx》由会员分享,可在线阅读,更多相关《汇编语言实验指导书智能15.docx(19页珍藏版)》请在冰豆网上搜索。
汇编语言实验指导书智能15
目录
第一部分汇编语言程序设计实验1
实验一输出字符‘A’1
实验二 数据的显示实验5
实验三从键盘上输入数据实验18
实验四 字符串的显示实验25
第一部分汇编语言程序设计实验
装订线
实验一输出字符‘A’
一、实验目的
1.通过这个简单的例子熟悉在微机上建立、汇编、链接和运行8086/8088汇编语言程序的过程。
2.掌握字符的显示方法。
3.学习DOS系统功能调用。
二、实验内容
输出字符‘A’,程序流程图如图1-1所示。
图1-1输出字符‘A’程序流程图
源程序如下:
PROGSEGMENT
ASSUMECS:
PROG
MOVDL,'A'
MOVAH,2
INT21H
MOVAH,4CH
INT21H
PROGENDS
END
三、实验设备
PC机一台,MASM汇编程序
四、实验原理
DOS功能调用的两个子程序,调用方法如下:
(1)设置入口参数
(2)子程序编号送人AH
(3)INT21H,子程序请求中断指令
有的子程序不需要入口参数,但大多数需要将参数送入指定地方。
MOVDL,'A'
MOVAH,2
INT21H
上面用的程序是DOS系统功能调用的2号子程序,功能是将字符送入屏幕显示。
其入口参数是把待输出字符的ASCII码送到DL寄存器中。
例如:
ASCII码若是0DH,2号子程序处理成回车;ASCII码若是0AH,处理成换行。
MOVAH,4CH
INT21H
这是DOS系统功能调用的4CH号子程序,功能是返回操作系统,没有入口参数。
五、实验步骤
1.用编辑软件(EDIT或记事本)将源程序输入,并存盘。
注意:
源程序是用汇编语言语句编写的程序,并不能为机器所识别。
源程序的扩展名为
ASM。
2.用宏汇编程序将.ASM源程序汇编成机器码的目标文件(OBJ文件)
命令格式是:
C:
/>MASM文件名↙
此时,汇编程序会在屏幕上给出提示,一般选择回车键作为回答。
Objectfilename[文件名.OBJ]:
↙
Sourcelisting[NUL.LST]:
↙
Cross-reference[NUL.CRF]:
↙
如果源程序没有错误,则在屏幕上会显示如下信息:
0WarningErrors
0SevereErrors
在汇编过程中,如果源程序有错误,要在编辑状态下进行修改,然后重新汇编,直到没有语法错误,才能生成.OBJ文件。
其中“WarningErrors”为一般性错误,不影响OBJ文件的生成;而“SevereErrors”是致命错误,会导致汇编通不过,无法生成OBJ文件。
汇编程序输出3个文件,第一个是目标文件,扩展名是OBJ,这个文件必须有。
第二个是列表文件,扩展名是LST,列表文件给出源程序和目标代码程序。
如果在源程序中定义了宏,则列表文件显示的源代码会将宏展开。
列表文件是可选的,如果不需要该文件,则直接按回车键即可。
第三个是建立交叉引用文件,该文件给出了用户定义的所有符号,并且是可选的,如果不需要该文件,则直接按回车键。
3.用LINK程序产生执行文件(EXE文件)
命令格式是:
C:
/>LINK文件名↙
键入上述命令后,屏幕上会出现如下所示的提问,一般情况下,按回车即可。
RunFile[文件名.EXE]:
↙
ListFile[NUL.MAP]:
↙
Libraries[.LIB]:
↙
在连接过程,输出2个文件,第一个是可执行文件,扩展名是EXE,这是最终要运行的二进制文件,该文件必须有。
第二个是内存分配图文件,文件中会列出各段的起始地址、终止地址、长度及段名。
该文件是可选的,如果不需要该文件,则直接按回车键即可。
第三个问题是询问是否用到库文件,若需要,输入文件名后按回车键,否则直接按回车键。
4.执行程序
命令格式是:
C:
/>文件名↙
上面生成可执行文件后,就可以在DOS下直接打入文件名,运行该文件。
本例中,运行程序后,在屏幕上就会出现字符“A”,然后返回操作系统。
六、思考题
1.请说出一个完整的汇编程序从编写到运行所需的步骤。
2.修改源程序,改变屏幕显示的内容。
七、实验报告内容及要求
实验报告内容应包括实验目的、实验内容、实验设备、实验步骤以及心得体会,并按要求回答思考题1、2。
实验二 数据的显示实验
一、实验目的
1.掌握屏幕上显示各种进制数据的方法。
2.掌握将内存中的二进制数转换为十进制、十六进制数的方法。
3.学会子程序的编写、调用及数据传递方法。
二、实验内容
1.把BX中的无符号二进制数转换成十进制数,在屏幕上显示出来。
2.把BX中的带符号二进制数转换成十进制数,在屏幕上显示出来。
3.求一个数据块(由10个单字节的无符号数组成)中的最大元素,并将结果以十进制数的形式在屏幕上显示出来。
4.求一个数据块(由20个单字节的带符号数组成)中的正数之和(和不超过字)和负数之和(和不超过字),并在屏幕上用十进制数的形式分别显示出两个和。
5.将寄存器BX中的二进制数转换成十六进制数,并在屏幕上显示出来。
从高到低依次取出4位二进制数变为ASCII码输出即可。
三、实验设备:
PC机一台、masm汇编程序
四、实验原理:
1.把BX中的数按位由高到低转化成十进制数,即依次对其除以10000、1000、100、10、1,将获得的商放到DL中,加30H变成ASCⅡ码,调用DOS系统中断INT21H的2号功能显示出来;对于每一位十进制数的获得和显示,实验通过编制子程序DEC_DIV并不断调用来实现。
2.先通过标志位判断BX中数的符号,如果是正数就直接转换成十进制数,进行
显示,方法与内容1相同;如果为负数,则需要先对其求补,再屏蔽其符号位,相当于得到了这个负数的绝对值。
在显示时,先把负号“-”显示出来,其余的显示与正数相同。
3.编程思路是把数据块中的第一个元素放到AL中,并通过循环把其余的元素和
AL比较,如果新元素较大的话就取代原来的元素放到AL中。
比较完成后,把最大的元素放到预先为其保留的地址中,并同时用内容1的方法把这个数以十进制形式显示出来。
4.编程思路是通过将被加数与0相比较,实现分支转移,将正数与负数分别累加到寄存器SI和DI中,并运用内容2显示带符号数的方法,通过调用子程序将其显示出来。
其中为了换行,又加了两个2号系统功能调用,分别将换行和回车放到了被显示的两个字中间。
5.16位的二进制数,4位一组可以显示为4位十六进制数,从高到低依次取出4位二进制数变成ASCⅡ码输出即可。
五、实验步骤:
依照前面介绍的方法,对每一个实验内容对应的程序进行编辑、编译、连接和运行,直到达到实验要求。
1.实验内容1
(1)实验内容1的流程图,如图2-1所示:
图2-1内容1流程图
(2)实验内容1的源程序,参考如下:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVBX,0FFFH
MOVCX,1000
CALLDEC_DIV
MOVCX,100
CALLDEC_DIV
MOVCX,10
CALLDEC_DIV
MOVCX,1
CALLDEC_DIV
MOVAH,4CH
INT21H
DEC_DIVPROCNEAR
MOVAX,BX
MOVDX,0
DIVCX
MOVBX,DX
MOVDL,AL
ADDDL,30H
MOVAH,2
INT21H
RET
DEC_DIVENDP
CODEENDS
ENDSTART
2.实验内容2
(1)实验内容2的流程图,如图2-2所示:
图2-2内容2流程图
3.实验内容3
实验内容3的流程图,如图2-3所示:
图2-3内容3流程图
4.实验内容4
实验内容4的流程图,如图2-4所示:
图2-4内容4流程图
5.实验内容5
实验内容5的流程图,如图2-5所示:
图2-5内容5流程图
六、思考题
1.请总结显示寄存器或者内存中的十进制和十六进制数据的方法。
2.请总结子程序编写、调用及参数传递的要点。
3.修改源程序,改变屏幕显示的内容。
七、实验报告内容及要求
实验报告内容应包括实验目的、实验内容、实验设备、实验步骤以及心得体会,并按要求回答思考题1、2、3。
实验三从键盘上输入数据实验
一、实验目的
1.掌握从键盘上输入数据的方法。
2.键盘上输入的是ASCII字符,掌握如何将ASCII字符转换为机内数字。
二、实验内容
1.从键盘上输入一个十进制数(0~65535),转换成二进制数并放入寄存器BX中。
2.从键盘上输入0~65535范围的一个十进制数,在屏幕上显示出相应的十六进制数。
三、实验设备
PC机一台、masm汇编程序
四、实验原理
1.内容1的编程思想是对于输入的字符,先判断它是不是1~9的数字字符,若不是,直接跳出循环,若是的话,将ASCⅡ码转化成对应数值并存到AX中,对于下一个输入的数值,判断完成后,通过将AX和BX内容交换并将AX中的数*10,再累加实现。
2.内容2的编程思想是先按照内容1的思路将字符输入、判断并转化为其对应二进制数,然后再通过把二进制数转化为十六进制数的方法实现。
为了使显示出来的数比较直观,在程序中又调用了2号系统功能显示,H代表十六进制数,并通过换行和回车把数放在两行。
3.DOS调用INT21H的1号功能子程序的作用是:
从键盘上输入一个字符,并将其键值(相应字符的ASCII码值)放入寄存器AL中。
1号调用不需要入口参数。
调用格式是:
MOVAH,1
INT21H
执行上述指令后,系统将扫描键盘,等待按键按下,如果有键按下,就将其键值对应的ASCII码值读入到寄存器AL中,同时将这个字符显示在屏幕上。
五、实验步骤:
依照上次实验步骤,对每一个实验内容对应的程序进行编辑、编译、连接和运行,直到达到实验要求。
1.实验内容1
(1)实验内容1程序流程图如图3-1所示。
图3-1内容1程序流程图
(2)实验内容1的部分源程序,参考如下:
CODESEGMENT
ASSUMECS:
CODE
STARTPROC
CALLDECBIN
CALLXIANSHI
MOVAH,4CH
INT21H
STARTENDP
DECBINPROCNEAR
MOVCX,10
MOVBX,0
LOP1:
MOVAH,1
INT21H
CMPAL,30H
JLEXIT
CMPAL,39H
JGEXIT
SUBAL,30H
MOVAH,00H
XCHGAX,BX
MULCX
ADDBX,AX
JMPLOP1
EXIT:
RET
DECBINENDP
CODEENDS
ENDSTART
实验内容1运行结果
输入2568后,程序显示如图3-2所示:
图3-2实验内容1运行结果
2.实验内容2
实验内容2程序流程图如图3-3所示。
图3-3实验内容2程序流程图
实验内容2运行结果
输入6969,显示结果如图3-4所示:
图3-4实验内容2运行结果
六、思考题
1.请总结从键盘上输入字符的方法。
2.请总结将二进制数转换为十六进制数并显示的方