汇编语言程序设计实验指导书.docx

上传人:b****0 文档编号:17506088 上传时间:2023-07-26 格式:DOCX 页数:78 大小:33.71KB
下载 相关 举报
汇编语言程序设计实验指导书.docx_第1页
第1页 / 共78页
汇编语言程序设计实验指导书.docx_第2页
第2页 / 共78页
汇编语言程序设计实验指导书.docx_第3页
第3页 / 共78页
汇编语言程序设计实验指导书.docx_第4页
第4页 / 共78页
汇编语言程序设计实验指导书.docx_第5页
第5页 / 共78页
汇编语言程序设计实验指导书.docx_第6页
第6页 / 共78页
汇编语言程序设计实验指导书.docx_第7页
第7页 / 共78页
汇编语言程序设计实验指导书.docx_第8页
第8页 / 共78页
汇编语言程序设计实验指导书.docx_第9页
第9页 / 共78页
汇编语言程序设计实验指导书.docx_第10页
第10页 / 共78页
汇编语言程序设计实验指导书.docx_第11页
第11页 / 共78页
汇编语言程序设计实验指导书.docx_第12页
第12页 / 共78页
汇编语言程序设计实验指导书.docx_第13页
第13页 / 共78页
汇编语言程序设计实验指导书.docx_第14页
第14页 / 共78页
汇编语言程序设计实验指导书.docx_第15页
第15页 / 共78页
汇编语言程序设计实验指导书.docx_第16页
第16页 / 共78页
汇编语言程序设计实验指导书.docx_第17页
第17页 / 共78页
汇编语言程序设计实验指导书.docx_第18页
第18页 / 共78页
汇编语言程序设计实验指导书.docx_第19页
第19页 / 共78页
汇编语言程序设计实验指导书.docx_第20页
第20页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言程序设计实验指导书.docx

《汇编语言程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计实验指导书.docx(78页珍藏版)》请在冰点文库上搜索。

汇编语言程序设计实验指导书.docx

汇编语言程序设计实验指导书

重庆师范大学涉外商贸学院

计算机各专业实验用书

汇编语言程序设计

实验指导书

(第一版)

 

张开成编

 

前言

为适应教学内容由简到繁、由易到难、由浅入深的教学特点,我们编写了这本简易实验指导书,用以指导实验教学。

该指导书分两部分,第一部分指出实验的实验目的、实验内容、实验准备、实验要求、共提出十五个实验,需三十个学时完成。

第二部分为十五个实验的全部程序,仅供学生参考。

该实验指导书由数计学院计算机教研室张开成同志编写。

 

2010年2月

第一部分提出各实验的实验内容、实验目的、实验要求和学时分配

实验一:

汇编语言基本操作实验(2学时)

一、实验目的:

明确QE、MASM、LINK三个系统软件的作用。

掌握汇编语言程序的编辑、汇编、连接过程。

二、实验内容:

1、编写一个程序:

用十进制输出一个按键的ASCⅡ值。

2、从键盘上读入两个一位数(必须保证按下数字键),输出它们的积。

三、实验准备:

1、预习QE、MASM、LINK三个软件的使用方法。

2、按实验要求,编写好实验源程序。

四、实验步骤:

1、用QE编辑扩展名为.ASM的源文件。

2、汇编、连接生成扩展名为.EXE的可执行文件。

3、运行程序。

五、实验报告要求:

1、总结用QE编辑源程序的方法。

2、说明源程序的连接、汇编过程。

3、分析运行结果。

4、按要求写出完整的实验报告(必须列出程序清单)。

 

实验二:

分支程序设计实验(2学时)

一、实验目的:

1、学会简单分支和多分支程序的设计方法。

2、掌握程序的调试方法。

二、实验内容:

1、从键盘读入两个一位数,输出它们的积。

若为非数字键,则显示字符“E”,退出程序。

2、从键盘接收一个按键,如为小写字母,则显示“L”,是大写字母,则显示“U”,如是数字,则显示“N”,都不是则显示“*”。

三、实验准备:

1、预习分支程序设计方法。

2、按实验内容要求,编写好实验源程序。

四、实验步骤:

1、用QE编辑扩展名为.ASM的源文件。

2、汇编、连接生成可执行文件.EXE。

3、运行程序。

五、实验报告书要求:

1、列出调试成功后的程序清单。

2、分析运行结果。

3、按要求写出完整的实验报告。

实验三:

循环及循环嵌套程序设计实验(2学时)

一、实验目的:

1、学会单循环及多重循环程序的设计方法。

2、掌握程序的调试方法。

二、实验内容:

1、编写一完整程序,在一行上依次显示26个大写英文字母。

2、在屏幕上显示如图所示数字拼成的形状。

0123456789

1234567890

2345678901

3456789012

4567890123

5678901234

6789012345

7890123456

8901234567

9012345678

三、实验准备:

1、预习循环程序设计方法。

2、按实验内容要求编写好实验源程序。

四、实验步骤:

1、用QE编辑扩展名.ASM的源文件。

2、汇编、连接生成可执行文件.EXE。

3、运行程序。

五、实验报告书要求:

1、列出调试成功后的程序清单。

2、分析运行结果。

3、按要求写出完整的实验报告。

实验四:

字符串输入输出程序设计实验(2学时)

一、实验目的:

1、掌握DOS系统功能调用的基本知识。

2、学会利用DOS系统功能调用设计输入输出程序。

二、实验内容:

1、设计一个程序,在屏幕上输出如下图形:

9

89

789

6789

56789

456789

3456789

23456789

123456789

3、从键盘读入一个字符串(不超过80个字符,且不含‘$’),在下一行上原样输出该串。

4、设计一个程序,判断一个输入字符串中是否有‘abc’作为它的子串。

三、实验准备:

1、预习DOS系统功能调用及有关伪指令的知识。

2、按实验内容要求,编写好实验源程序。

四、实验步骤:

1、用QE编辑扩展名为.ASM的源文件。

2、汇编、连接生成可执行文件.EXE。

3、运行程序。

五、实验报告书要求:

1、列出调试成功后的程序清单。

2、分析运行结果。

3、按要求写出完整的实验报告。

 

实验五:

字符处理程序实验(2学时)

一、实验目的:

1、熟悉串操作指令的功能与应用。

2、掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序

二、实验内容:

1、字符串统计:

自BUFFER开始的内存单元中,存有一个ASCⅡ码字符串。

统计其中含有多少个子字符串‘AB’,将统计结果以十进制形式显示输出。

2、在给定的字符串中插入一任意字符。

3、对已有的字符串按指定的位置删除一个字符。

三、实验准备:

1、预习字符处理概念,字符处理方法和字符处理程序的设计。

2、预习有关串操作指令及其寻址方式的特点,正确使用串操作指令。

3、按实验内容要求,编写好实验源程序。

四、实验步骤:

1、编辑源程序.ASM。

2、汇编、连接生成可执行文件.EXE。

3、运行程序。

五、实验报告书要求:

1、整理每一个运行正确的源程序,列出源程序清单。

2、总结汇编语言对字符串操作的编程特点和方法。

3、总结字符串处理程序的编程方法,突出改进和完善此类程序设计的方案。

 

实验六:

子程序设计实验(2学时)

一、实验目的:

1、掌握子程序有关基本知识,学会子程序设计方法。

2、掌握调用程序与子程序的调试方法。

二、实验内容:

1、把输入的一个字符串从指定的符号起截断,显示截断后的结果。

把回车换行设计为近程子程序。

2、实现加法及减法子程序的调试方法。

三、实验准备:

1、预习子程序设计方法。

2、按实验内容要求,编写好实验源程序。

四、实验步骤:

1、用QE编辑扩展名为.ASM的源文件。

2、汇编、连接生成可执行文件.EXE。

3、运行程序。

五、实验报告要求:

1、列出调试成功后的程序清单。

2、分析运行结果。

3、按要求写出完整的实验报告。

 

实验七:

算术运算程序实验(2学时)

一、实验目的:

1、熟悉算术运算指令的功能与应用。

2、学习编写加法和乘法运算程序。

二、实验内容:

1、编写计算23579+7684和0A5H+34H的二进制运算程序。

2、多字节加法:

在内存中以FIRST和SECOND开始的单元中分别存放有两位压缩十进制(BCD)码,低位码在前。

求这两个数的压缩十进制数和,并存到THIRD开始的单元中。

3、二进制乘法:

(1)在内存DATA1和DATA2单元中分别存放着两个八位无符号二进制数A、B,求A乘以B的积,结果存于DATA3开始的内存单元中。

(2)在FIRST和SECOND开始单元中,分别存放着两个16位带符号数D、E,求D*E,结果存于THIRD开始的内存单元中。

三、实验准备:

1、认真预习加法、乘法和十进制调整指令。

2、按实验内容要求,编写好实验源程序。

四、实验步骤:

1、编辑源程序.ASM。

2、调试并运行程序。

五、实验报告要求:

1、整理好运行正确的源程序,列出调试成功后的程序清单。

2、总结加法、乘法运算程序的设计方法。

3、若要求直接在屏幕上显示运行结果,程序将做如何修改?

实验八:

排序和检索程序实验(2学时)

一、实验目的:

1、熟悉用汇编语言编制一些常用的非数字值处理的程序。

2、练习编制具有子程序库操作的汇编语言程序。

二、实验内容:

1、将内存中10个无符号数由小到大排序。

(每个数为16位二进制数)

2、在上述已排好的数据区里查找某一个数,若找到,显示其在数据区的位置,否则显示‘N’字符。

3、把上述两个程序改编成子程序,并存入子程序库中。

然后编写调用程序,完成排序及检索任务。

三、实验准备:

1、仔细阅读关于子程序操作部分,熟悉上机操作。

2、预习排序和检索算法。

3、准备数据,按选择好的算法编制源程序。

数据以数据区定义和键盘输入两种方法提供。

四、实验步骤:

1、将编好的源程序操作部分,建立.ASM。

2、汇编、连接并运行程序。

3、最后运行成功的排序和检索程序,改为子程序,调试无误后存入子程序库,再调用运行。

五、实验报告要求:

1、整理出运行正确的源程序清单。

2、说明子程序库的建立和应用方法,指出它们的应用特点。

 

实验九:

整数输入与输出程序实验

一、实验目的:

1、学会编写整数输入、输出子程序的方法。

2、掌握子程序共享的方法。

二、实验内容:

在磁盘上建立3个文件CR.ASM,WRITE.ASM和READ.ASM,分别存放CR、WRITE和READ子程序的程序清单。

使用INCLUDE伪指令编写完整程序,从键盘上读入两个整数,求它们的和。

三、实验内容:

1、预习子程序共享的方法。

2、预习整数输入、输出方法。

四、实验步骤:

1、在磁盘上建立3个文件CR.ASM、WRITE.ASM和READ.ASM。

2、编写完整程序并汇编,连接生成可执行文件.EXE。

3、运行程序。

五、实验报告要求:

1、总结整数输入、输出的方法。

2、总结子程序共享的方法。

实验十:

中断程序设计实验

一、实验目的:

1、熟悉中断有关概念,掌握常驻内存技术。

2、掌握修改中断向量技术。

二、实验内容:

编写一个时钟程序,要求把时钟信号显示在屏幕的右上角,并在程序结束后常驻内存。

三、实验准备:

1、预习有关中断程序设计的有关内容。

2、按实验内容要求,编制实验源程序。

四、实验步骤:

1、建立源程序.ASM。

2、汇编、连接,生成可执行文件.EXE。

五、实验报告要求:

1、整理并列出调试成功后的源程序清单。

2、分析运行结果。

实验十一:

系统调用及程序设计实验(2学时)

一、实验目的:

掌握DOS和BIOS系统功能调用,学会键盘与屏幕控制技术。

二、实验内容:

1、在屏幕10行20—24列处显示五朵梅花,颜色各异,且要求中间一朵能够闪烁。

2、在屏幕上画出一条下斜的彩色变换的直线。

三、实验准备:

按实验内容要求,准备好实验源程序。

四、实验步骤:

1、建立源程序.ASM。

2、汇编、连接,生成可执行文件.EXE。

3、运行程序。

五、实验报告要求:

1、整理并列出调试成功后的源程序清单。

2、分析运行结果。

实验十二《综合实验一》:

显示月份名direct(2学时)

一、实验目的:

训练学生的综合应用能力。

二、实验内容:

试编写一程序,要求根据用户键入的月份在终端上显示该月的英文综写名。

三、实验要求:

按实验内容要求,准备好实验源程序。

四、实验步骤:

1、建立源程序.ASM。

2、汇编、连接,生成可执行文件.EXE.

3、运行程序.

五、实验报告要求:

1、整理并列出调试成功后的源程序清单。

2、分析运行结果。

实验十三《综合实验二》:

显示学生名次表(2学时)

一、实验目的:

训练学生的综合应用能力。

二、实验内容:

试编写一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字的grade数组中,其中grade+1保存学号为了i+1的学生的成绩。

然后根据grade中的学生成绩,把学生名次填入50字的rank数组中,其中rank+1的内容是学号为i+1学生的名次,再按学号顺序把名次从终端上显示出来。

三、实验要求:

按实验内容要求,准备好实验源程序。

四、实验步骤:

1、建立源程序.ASM。

2、汇编、连接,生成可执行文件.EXE。

3、运行程序。

五、实验报告要求:

1、整理并列出调试成功后的源程序清单。

2、分析运行结果。

实验十四《综合实验三》:

计算工资Scremp(2学时)

一、实验目的:

训练学生的综合应用能力。

二、实验内容:

试编写一程序,接收用户输入的工作时间及工资率(即每小时的工资数),显示计算而得的工资数。

三、实验要求:

按实验内容要求,准备好实验源程序。

四、实验步骤:

1、建立源程序.ASM。

2、汇编、连接,生成可执行文件.EXE。

3、运行程序。

五.实验报告要求:

1、整理并列出调试成功后的源程序清单。

2、分析运行结果。

实验十五《综合实验四》:

字符图形显示程序(2学时)

一、实验目的:

训练学生的综合应用能力。

二.实验内容:

试编写一程序实现以下功能:

使一个特定字符从左下角上升到右上角,然后回到左下角,再上升到右上角,重复运行,直到按任意键时退出。

三.实验要求:

按实验内容要求,准备好实验源程序。

四、实验步骤:

4、建立源程序.ASM。

5、汇编、连接,生成可执行文件.EXE。

6、运行程序。

五.实验报告要求:

1.整理并列出调试成功后的源程序清单。

2.分析运行结果。

 

第二部分各实验程序参考清单

实验一:

汇编语言基本操作实验

1、用十进制输出一个按键的ASCII值

codeSEGMENT

ASSUMECS:

code

main:

MOVAH,1

INT21H

MOVAH,0

MOVBL,100

DIVBL

MOVCL,AL

ADDCL,30H

MOVAL,AH

MOVAH,0

MOVBL,10

DIVBL

ADDAL,30H

ADDAH,30H

MOVBX,AX

MOVAH,2

MOVDL,13

INT21H

MOVDL,10

INT21H

MOVDL,CL

INT21H

MOVDL,BL

INT21H

MOVDL,BH

INT21H

MOVAH,4CH

INT21H

codeENDS

ENDmain

2、从键盘读入两个一位数(按键博爱正按下的是数字键),输出它们的积。

codeSEGMENT

ASSUMECS:

code

main:

MOVAH,1

INT21H

MOVBL,AL

MOVAH,2

MOVDL,13

INT21H

MOVDL,10

INT21H

MOVAH,1

INT21H

SUBAL,30H

SUBBL,30H

MULBL

MOVBL,10

DIVBL

ADDAX,3030H

MOVBX,AX

MOVAH,2

MOVDL,13

INT21H

MOVDL,10

INT21H

MOVDL,BL

MOVAH,2

INT21H

MOVDL,BH

INT21H

MOVAH,4CH

INT21H

codeENDS

ENDmain

实验二:

分支程序设计实验

1、从键盘读入两个一位数,输出它们的积。

若为非数字键,则显示字符“E”,退出程序。

codeSEGMENT

ASSUMECS:

code

main:

MOVAH,1

INT21H

CMPAL,’0’

JBlab1

CMPAL,’9’

JAlab1

MOVBL,AL

MOVAH,2

MOVDL,13

INT21H

MOVDL,10

INT21H

MOVAH,1

INT21H

CMPAL,’0’

JBlab1

CMPAL,’9’

JAlab1

SUBAL,30H

SUBBL,30H

MULBL

MOVBL,10

DIVBL

ADDAX,3030H

MOVBX,AX

MOVAH,2

MOVDL,13

INT21H

MOVDL,10

INT21H

MOVDL,BL

MOVAH,2

INT21H

MOVDL,BH

INT21H

JMPlab2

Lab1:

MOVAH,2

MOVDL,’E’

INT21H

Lab2:

MOVAH,4CH

INT21H

CodeENDS

ENDmain

2、从键盘上接收一个按键,如果按键是小写字母则输出“L”,是大写字母则输出“U”,如果是数字则输出“N”,都不是则输出“*”。

codeSEGMENT

ASSUMECS:

code

start:

MOVAH,1

INT21H

CMPAL,’0’

JBlab1

CMPAL,’9’

JAlab2

MOVDL,’N’

JMPlab3

Lab2:

CMPAL,’A’

JBlab1

CMPAL,’Z’

JAlab4

MOVDL,’U’

JMPlab3

lab4:

CMPAL,’a’

JBlab1

CMPAL,’z’

JAlab1

MOVDL,’L’

JMPlab3

lab1:

MOVDL,’*’

lab3:

MOVAH,2

INT21H

MOVAH,4CH

INT21H

codeENDS

ENDstart

实验三:

循环及循环嵌套程序设计实验

1、设计一完整程序,在一行依次显示26个大写英文字母。

codeSEGMENT

ASSUMECS:

code

start:

MOVCX,26

MOVDL,’A’

lab1:

MOVAH,2

INT21H

ADDDL,1

LOOPlab1

MOVAX,4C00H

INT21H

codeENDS

ENDstart

2、在屏幕上显示如下由数字拼成的形状:

0123456789

1234567890

2345678901

3456789012

4567890123

5678901234

6789012345

7890123456

8901234567

9012345678

codeSEGMENT

ASSUMECS:

code

main:

MOVBL,0

lab1:

MOVCX,10

MOVDL,‘0’

ADDDL,BL

lab2:

MOVAH,2

INT21H

ADDDL,1

CMPDL,’9’

JBElab3

MOVDL,’0’

lab3:

LOOPlab2

MOVDL,13

INT21H

MOVDL,10

INT21H

ADDBL,1

CMPBL,10

JBlab1

MOVAX,4C00H

INT21H

codeENDS

ENDmain

实验四:

字符串输入输出程序设计实验

1、设计一个完整程序,在屏幕上输出下面的图形。

9

89

789

6789

56789

456789

3456789

23456789

123456789

DataSEGMENT

BufDB‘123456789’,13,10,24H

DataENDS

CodeSEGMENT

ASSUMEDS:

data,CS:

code

Main:

MOVDX,data

MOVDS,DX

MOVCX,9

LEADX,[buf+8]

MOVAH,9

Lab:

INT21H

SUBDX,1

LOOPlab

MOVAX,4C00H

INT21H

CodeENDS

ENDmain

2、键盘读入一个字符串(不超过80个字符,且不含‘$’),到下一行上原样输出该串。

DATASEGMENT

BUFDB80,81DUP(0)

DATAENDS

CODESEGMENT

ASSUMEDS:

DATACS:

CODE

MAIN:

MOVDX,DATA

MOVDS,DX

LEADX,[BUF]

MOVAH,10

INT21H

MOVBL,[BUF+1]

MOVBH,0

MOV[BUF+BX+2],’$’

MOV[BUF+1],10

LEADX,[BUF+1]

MOVAH,9

INT21H

MOVAX,4C00H

INT21H

CODEENDS

ENDMAIN

3、设计一个程序,判断一个输入字符串中是否有“abc”作为它的子串。

ASSUMECS:

CODE,DS:

DATA

DATASEGMENT

ORIDB‘ABC’

LEN=$-ORI

BUFDB80

ORG$+81

DISP1DB13,10,’YES,$’

DISP2DB13,10,’NO,$’

DATAENDS

CODESEGMENT

M:

MOVAX,SEGBUF

MOVDS,AX

LEADX,BUF

MOVAH,10

INT21H

MOVCL,[BUF+1]

CMPCL,LEN

JBNO

MOVCH,0

MOVBX,OFFSETBUF+2

N2:

MOVSI,0

N1:

MOVAL,[BX+SI]

CMPAL,[ORI+SI]

JNEN3

INCSI

CMPSI,LEN

JAEYES

JMPN1

N3:

INCBX

LOOPN2

NO:

LEADX,DISP2

JMPN4

YES:

LEADX,DISPI

N4:

MOVAH,9

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDM

实验五:

字符处理程序实验

1、字符串统计:

自BUFFER单元开始内存单元中,存有一个ASCⅡ码字符传,统计其中含有多少个字符串‘AB’,将统计结果以十进制形式显示输出。

DATASEGMENT

BUFDB‘ASTABABABABAABAJKDLAB’

COUNTEQU$-BUF

BUF1DB3DUP(?

DATAENDS

STACKSEGMENTPARASTACK‘STACK’

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

STACKPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETBUF

MOVCX,COUNT

MOVBX,0

MOVAH,0

LOOP1:

MOVAL,[SI]

CMPAL,‘A’

JNZLESS

INCSI

DECCX

JZOK

MOVAL,[SI]

CMPAL,‘B’

JNZLOOP1

MOVAL,BL

ADDAL,1

DAA

MOVBL,AL

LESS:

INCSI

LOOPLOOP1

OK:

MOVDI,OFFESTBUF1

MOVDL,BL

SHRBL,1

SHRBL,1

SHRBL,1

SHRBL,1

MOVAL,30H

ADDAL,BL

MOV[DI],AL

INCDI

ANDDL,0FH

ADDDL

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2