汇编语言实验指导书智能15.docx

上传人:b****1 文档编号:2285415 上传时间:2022-10-28 格式:DOCX 页数:19 大小:154.85KB
下载 相关 举报
汇编语言实验指导书智能15.docx_第1页
第1页 / 共19页
汇编语言实验指导书智能15.docx_第2页
第2页 / 共19页
汇编语言实验指导书智能15.docx_第3页
第3页 / 共19页
汇编语言实验指导书智能15.docx_第4页
第4页 / 共19页
汇编语言实验指导书智能15.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

汇编语言实验指导书智能15.docx

《汇编语言实验指导书智能15.docx》由会员分享,可在线阅读,更多相关《汇编语言实验指导书智能15.docx(19页珍藏版)》请在冰豆网上搜索。

汇编语言实验指导书智能15.docx

汇编语言实验指导书智能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.请总结将二进制数转换为十六进制数并显示的方

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1