汇编语言程序设计实验
汇编语言程序设计综合设计实验项目

汇编语言程序设计创新实验项目1. 编写一个完整的程序:根据零件的数量和总价格,计算出零件的单价。
主程序MAINPRO允许用户在键盘上输入零件数量和总价格;子程序SUBCONV 把从键盘输入的ASCII 码转化为二进制;子程序SUBCALC 计算出零件的单价;子程序SUBDISP 把二进制表示的单价转化为十进制数并显示出结果。
要求:在程序设计时要求使用顺序、分支、循环、子程序和宏汇编等多种方法解决程序设计问题,对于较大的子程序最好使用子程序嵌套,程序中如有多次重复的代码最好使用重复汇编。
2.编写一个完整的程序,分别输入有一个班学生的百分制成绩,根据学生百分制成绩转换出五级分数制。
如低于60分为E,60-69为D、70-79为C、80-89为B、90-99为A。
并统计该班学生人数。
要求:1、学生成绩从键盘接收;2、本程序可以重复运行,自行设计退出程序的方法;3、程序具有可操作性,如,应该有提示语句和判断非法操作的方法和处理方式。
3. 编写一个完整的程序,在屏幕上显示如图所示数字拼成的形状。
01234567891234567890234567890134567890124567890123567890123467890123457890123456890123456790123456784、按要求编写一个完整的程序。
要求:1、自BUFFER开始的内存单元中,存有一个ASCII码字符串。
查找已知字符串中含有多少个子字符串‘AB’的个数,将统计结果以十进制形式显示输出。
2、在查找到子字符串‘AB’后添加空格字符。
5、按要求编写一个完整的程序。
要求:1、编写子程序SORT,将内存中10个无符号字数据由小到大排序。
2、编写子程序FIND,在上述已排好的数据区里查找某一个数,若找到,显示其在数据区的位置,否则显示‘N’字符。
3、编写调用程序,完成排序及检索任务。
6、试编写一程序,要求根据用户键入的月份在终端上显示该月的英文缩写名。
汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是计算机中最基本的语言,通常用于处理硬件相关问题。
在这个实验中,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
以下是我们的实验报告。
正文:1. 实验环境我们使用的实验环境是Intel 8086微处理器与高级汇编语言。
微处理器使用的是PCB-512主板,而高级汇编语言是MASM。
2. 实验目的我们的实验目的主要是学习汇编语言的基础知识和编程技巧,包括了汇编语言的寄存器、指令、内存管理等方面的知识。
我们的另一个目的是掌握汇编语言的常用编程技巧,能够独立完成一些简单的汇编程序。
3. 实验内容我们的实验内容主要包括以下几点:(1)学习汇编语言的基础知识,包括寄存器、指令、内存管理等方面的知识。
(2)掌握汇编语言的常用编程技巧,包括数据输入输出、运算、跳转等基本操作。
(3)实践用汇编语言编写程序,如计算器、菜单等实用程序。
(4)了解8086微处理器的结构和原理。
4. 实验过程在这个实验过程中,我们完成了以下几个程序:(1)计算器计算器是一个简单的程序,主要用于实现两个数之间的加、减、乘、除等基本运算。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
(2)菜单菜单是一个实用程序,主要用于展示一个简单的菜单并实现用户选择相关功能的功能。
我们使用了汇编语言中的跳转指令、输入输出指令等实现了这个程序。
5. 实验结果在我们的实验中,我们成功完成了上述两个程序。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
6. 实验总结在这个实验过程中,我们学习汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
我们通过编写计算器和菜单等简单实用程序,加深了对汇编语言的理解和认识。
我们认为这个实验对我们今后的学习和工作都有很大的帮助。
结论:通过这个实验,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
《汇编语言程序设计》实验报告(一)

MESS2 DB 'NO MATCH!’,13,10,’$'
DATA ENDS
对以上源程序重新汇编、连接、运行,结果输出为:MATCH!
七、实验总结
通过这次上机实践,我对汇编程序和连接程序的使用开始有一点了解。但刚开始还是很不顺的,总是出现找不到文件,后来经过同学的指导,终于知道自己的错误,原来是路径错误。所以还需要勤加练习,多多实践。
四、实验材料、工具、或软件
多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语言程序设计实验集成环境。
五、实验要求
1. 编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。
2.完成课堂例题,并用DEBUG运行,观察结果。
六、试验内容与步骤:(附上必要的调试过程及运行结果截图,可加附页)
试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。上机步骤如下:
《汇编语言程序设计》实验报告(一)
姓名
学号
系别
班级
指导教师
实验日期
课程名称
《汇编语言程序设计》
同组实验者
一、实验名称:实验一汇编程序和连接程序的使用
二、实验目的:
1. 熟悉汇编语言的上机环境;
2. 学习EDIT,MASM,LINK程序的使用;3. 掌握建立、汇、链接、运行汇编语言程序的过程。
《汇编语言程序设计》实验指导书

实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。
2.熟悉DEBUG软件的使用。
3.掌握简单程序的编程方法。
二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。
各种I/O设备所提供和接收的数据编码不尽相同。
为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。
例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。
一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。
该方法经济但速度慢。
2.硬件法利用专用代码转换集成电路进行转换。
如74LS74可把BCD码转换为七段代码。
这种方法需要硬件费用,但速度快。
本实验要求掌握软件编码转换技术。
计算机常用的代码有二进制、八进制、十六进制、BCD码、ASCⅡ码、七段码等,它们之间的相互关系如下表所示。
本次试验的内容是ASCⅡ码转换为未组合BCD码设从键盘输入十进制数的ASCⅡ码已存放在起始地址CS :150H的单元中,把它转换成未组合BCD码后,再分别存入起始地址为CS:15AH的单元中。
若输入的不是十进制数的ASCⅡ码,则相应存放结果单元的内容为“FF”。
提示:1.组合BCD码是一位十进制数字占一个字节,高半字节为0,低半字节为该十进制数字的BCD码。
ASCⅡ码转换为未组合BCD码只需减30H。
2.程序框图如下图所示。
3.程序执行前,需要在CS:150H内存缓冲区写入待转换的ASCⅡ码。
方法如下:方法一:用A命令-ACS:150 DB 35,39,30,41,32CS:155 ∧C方法二:用E 命令-ECS:150,35,39,30,41,32方法三:用F命令-FCS:150 L5 35,39,30,41,321.执行程序后检查执行结果可用D命令:-DCS:15ACS:15A 05,09,00,FF,02ASCⅡ码转换为未组合BCD码的程序流程图参考程序如下:ORG 100HMOV CX,0005HMOV DI,150HBB:MOV BL,0FFHMOV A,[DI]CMP AL,3AHJNB DONESUB AL,30HJB DONEMOV BL,ALDONE:MOV AL,BLMOV [DI+0AH],ALINC DILOOP BBINT 20HORG 150HDB 35H,39H,30H,41H,32H实验二顺序结构的程序设计一.实验目的1.掌握计算机常用代码的软件转换技术。
汇编语言程序设计实验

汇编语言程序设计实验汇编语言程序设计实验是计算机科学与技术相关专业中非常重要的一门实践课程,旨在培养学生对计算机底层工作原理的深刻理解和实际操作能力。
本文将介绍汇编语言程序设计实验的基本目标、内容和实验过程,并分析其重要性和实际应用。
首先,汇编语言程序设计实验的基本目标是使学生掌握基本的汇编语言编程方法和技巧,理解计算机底层工作原理,并具备解决实际问题的能力。
通过实验,学生能够深入了解计算机内部的工作原理和指令系统,了解计算机如何执行指令和处理数据。
此外,实验还能培养学生的逻辑思维能力、问题分析能力和创新能力。
汇编语言程序设计实验的内容通常包括以下几方面:汇编语言基础知识、汇编指令集和程序设计实践。
首先,学生需要学习和掌握汇编语言的基本知识,包括数据类型、寻址方式、指令格式和寄存器等。
其次,学生需要熟悉常用的汇编指令集,如数据传送指令、算术与逻辑指令、转移指令和输入输出指令等。
最后,通过编写汇编语言程序,解决一些简单的实际问题,如数值计算、字符串处理、图形显示等。
在进行汇编语言程序设计实验时,学生通常需要经过以下几个步骤:问题分析、算法设计、程序编写和调试测试。
首先,学生需要对实验问题进行仔细分析,明确问题的要求和限制条件。
其次,学生需要设计符合问题要求的算法,确定算法的输入输出和执行过程。
然后,学生需要使用汇编语言编写程序代码,注意程序的逻辑结构和语法规范。
最后,学生需要对程序进行调试和测试,确保程序能够正确地运行和输出预期结果。
汇编语言程序设计实验在计算机科学与技术领域具有重要的意义和实际应用。
首先,汇编语言是理解计算机底层工作原理和指令系统的基础,对于从事底层开发、系统优化和调试工作的人员来说,掌握汇编语言是必不可少的技能。
其次,汇编语言程序设计可以帮助学生深入理解计算机体系结构和操作系统的工作原理,提高对高级语言编程的理解和掌握能力。
最后,汇编语言程序设计实验还能培养学生的问题解决能力、团队合作精神和创新思维,为学生今后的科研工作和职业生涯打下良好的基础。
汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言汇编语言是一种低级语言,用于编写计算机的底层程序。
在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。
本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。
实验目的本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。
实验环境在实验中,我使用了一台运行Windows操作系统的计算机,并安装了MASM 汇编语言开发工具。
实验内容1. 汇编语言基础知识在实验开始前,我先学习了汇编语言的基础知识。
汇编语言使用助记符来代表机器指令,与机器指令一一对应。
了解了寄存器、内存和指令的概念,并学会了如何使用它们来编写汇编程序。
2. 汇编语言程序设计在实验中,我编写了一些简单的汇编语言程序,以加深对汇编语言的理解和应用。
例如,我编写了一个计算两个数之和的程序,通过将两个数存储在寄存器中,并使用加法指令进行运算,最后将结果保存到指定的内存位置。
3. 汇编语言程序调试在编写汇编语言程序时,我遇到了一些错误和问题。
为了解决这些问题,我学会了使用调试工具来定位错误。
通过逐步执行程序,并观察寄存器和内存的变化,我能够找到程序中的错误并进行修正。
4. 汇编语言程序优化在实验中,我也尝试了对汇编语言程序进行优化,以提高程序的性能和效率。
通过减少指令的数量和使用更高效的算法,我成功地改进了程序的执行速度。
实验心得通过本次实验,我深刻体会到了汇编语言程序设计的重要性和挑战性。
汇编语言虽然复杂,但它能够直接操作计算机的硬件,提供了更高的灵活性和效率。
通过编写汇编语言程序,我不仅加深了对计算机底层原理的理解,还提高了问题解决和调试能力。
总结汇编语言程序设计实验是一门重要的课程,它为我们提供了学习计算机底层原理和编程技巧的机会。
通过实验,我掌握了汇编语言的基本知识和技巧,并成功编写和优化了汇编语言程序。
这次实验不仅加深了我的理论知识,还培养了我的实际操作能力。
汇编语言程序设计上机实验报告(实验三)-循环程序设计

汇编语言程序设计上机实验报告(实验三)一、实验题目、内容及要求:一、实验题目、内容及要求:题目:循环程序设计内容:编写一程序,要求从键盘接收一个4位十六进制数,在终端上显示与它等值的二进制数。
二进制数。
要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。
本实验要求在EDIT 下编写完整的汇编语言程并生成可执行文件运行。
下编写完整的汇编语言程并生成可执行文件运行。
二、实验时间及地点二、实验时间及地点日期:日期: 2011/11/21 节次:节次: 7.8 地点:地点:电子实验楼二楼电子机房电子实验楼二楼电子机房 三、实验目的三、实验目的通过本实验掌握DOS 系统功能调用功能,掌握循环程序设计的方法;学会编写循环结构程序。
构程序。
简述在实验过程中遇到的问题和解决的方法:简述在实验过程中遇到的问题和解决的方法:1、问题:遇到死循环解决方法:程序显示disp 中发现执行int int 21h 21h 会修改al 的值,避免这种情况的方法就是使用堆栈段。
2、问题:调试中出现no data segment 解决方法:start 开始时没有将数据段的IP 地址赋给dx 。
data segment 3、问题:可执行,结果为乱码解决方法:数据划分比较的粗,没有系统的将数据系统划分。
系统划分:<30h other 30h-39h num 39h-41h other 41h-46h big zi mu 46h-61h other 61h-67h small zi mu >67h other 运行结果:(要求用“抓图软件”抓程序的运行结果)(要求用“抓图软件”抓程序的运行结果)结果分析及实验体会:结果分析及实验体会:1、结果0001001000110100是十六进制数1234转化而来。
十六进制数通过ASCII码对照转换为二进制数。
A~F----- -57hA~ f----- -57h0~9 ------ -37h2、学习应用了循环指令并了解了其特点:A、循环指令不影响标志位B、其功能为使寄存器CX的值减1,如果结果不等于0,则循环至标号,否则顺序执行。
汇编语言程序设计实验篇

汇编语言程序设计实验篇在计算机科学领域中,汇编语言是一种低级编程语言,它直接操作计算机硬件资源,具有高效性和灵活性。
本篇文章将介绍汇编语言程序设计实验的相关内容,包括实验目的、实验环境、实验步骤和实验总结。
实验目的汇编语言程序设计实验的主要目的是使学生掌握使用汇编语言编写程序的基本技能。
通过实践操作,学生将理论知识应用于实际情境中,深化对汇编语言的理解,并培养一定的编程能力。
实验环境在进行汇编语言程序设计实验之前,学生需要准备适当的实验环境。
以下是必备的硬件和软件资源:1. 计算机:一台能够运行汇编语言的计算机。
2. 汇编语言编辑器:如MASM、NASM等,用于编辑和编译汇编语言程序。
3. 调试器:如调试版本的DOSBox、CodeView等,用于调试程序,定位和解决错误。
实验步骤在进行汇编语言程序设计实验时,学生可以按照以下步骤进行操作:1. 确定实验内容:根据实验要求,选择适当的汇编语言程序设计任务,如编写一个计算两个数相加的程序。
2. 编写程序源代码:使用汇编语言编辑器,编写程序的源代码,包括程序的指令、数据段和代码段等。
3. 编译程序:使用编辑器提供的编译指令,将源代码编译成机器码,生成可执行文件。
4. 调试程序:使用调试器,对程序进行调试,定位和解决错误,确保程序能够正常运行。
5. 运行程序:运行已调试通过的程序,验证程序的正确性,并观察程序的执行结果。
6. 优化程序:对程序进行进一步优化,提高程序的执行效率和性能。
7. 总结实验结果:根据实验过程和结果,总结实验经验和教训,思考改进和拓展的可能性。
实验总结通过进行汇编语言程序设计实验,学生可以获得以下收获:1. 熟悉汇编语言:实验使学生更加熟悉汇编语言的语法和指令,增强对计算机底层运行机制的理解。
2. 培养编程能力:实验锻炼学生的编程能力和解决问题的能力,提高他们的逻辑思维和分析能力。
3. 提升实践能力:实验让学生通过实践操作,将理论知识应用于实际情境中,增强实践能力和动手能力。
汇编程序设计实验

汇编程序设计实验汇编程序设计实验是计算机科学与技术专业中一项重要的实践教学环节,它旨在培养学生对计算机硬件结构和低级语言程序设计的深入理解。
通过实验,学生可以学习到如何使用汇编语言编写程序,以及如何将这些程序转换为机器可以执行的指令。
实验目的1. 理解汇编语言的基本概念和语法结构。
2. 掌握汇编语言程序设计的基本方法和技巧。
3. 熟悉汇编程序的编写、编译、调试和运行过程。
4. 增强对计算机硬件工作原理的认识和理解。
实验环境- 汇编语言开发环境,如MASM、NASM等。
- 汇编器和链接器,用于将汇编源代码转换为可执行文件。
- 调试工具,如调试器,用于检查程序的执行过程。
实验内容1. 汇编语言基础- 学习汇编语言的指令集和操作数。
- 了解汇编语言的基本语法和程序结构。
2. 编写简单的汇编程序- 编写一个程序,实现数据的输入和输出。
- 编写一个程序,实现简单的算术运算。
3. 寄存器和内存操作- 学习如何使用寄存器进行数据存储和操作。
- 编写程序,实现内存地址的数据读写。
4. 循环和条件判断- 学习循环结构和条件判断的实现方法。
- 编写程序,实现循环和条件判断的功能。
5. 子程序调用- 学习子程序的编写和调用方法。
- 编写一个主程序和若干子程序,实现模块化编程。
6. 中断和异常处理- 了解中断和异常的基本概念。
- 编写程序,实现简单的中断服务程序。
7. 汇编与高级语言的接口- 学习如何将汇编程序与C/C++等高级语言程序进行接口。
- 编写程序,实现汇编语言与高级语言的混合编程。
实验步骤1. 环境搭建:安装并配置汇编语言开发环境。
2. 编写代码:根据实验要求编写汇编语言源代码。
3. 编译程序:使用汇编器将源代码编译为机器代码。
4. 链接程序:使用链接器将编译后的代码与其他必要的库链接成可执行文件。
5. 调试程序:使用调试工具检查程序的执行过程,找出并修复错误。
6. 运行程序:在适当的环境下运行程序,验证程序的正确性。
汇编语言程序设计实验报告

二、实验内容
P131作业29。
实验三子程序设计实验
一、实验目的
1.掌握汇编语言源程序子程序设计方法;
2.会使用CV软件工具。
二、实验内容
把实验二作为子程序,编写主程序来对能否构成三角形进行10判断。
实验四宏汇编程序设计实验
一、实验目的
1.掌握宏汇编程序编程技术及宏调用的方法;
2.主模块程序完成子程序的调用,及判断结果的显示,程序名为:ZHU.asm。
实验五混合程序的开发实验
一、实验目的
1.了解混合调用中的参数设置;
2.掌握混合调用的方法;
二、实验内容
P156第5题。
实验一单指令功能测试实验
一、实验目的
1.会使用DEBUG软件;
2.利用DEBUG单步执行功能测试指令的执行。
二、实验内容
判断从键盘输入的ASCII码数字,若是小于等于5,显示“C”,若是大于5显示“D”。假设输入的只可能是0~9数字。
实验二完整的汇编语言程序设计实验
一、实验目的
1.掌握完整的汇编语言源程序的设计方法;
实验五多模块程序设计实验
一、实验目的
1.掌握汇编段的属性的含义;
2.掌握利用LINK将多模块连接起来的方法;
3.掌握利用库文件将多模块连接起来的方法。
二、实验内容
假设内存单元中有三个字a、b和c,编写一个程序,它可判断它们能否构成一个三角形,若能,显示“Y”,否则,显示“N”;
具体要求:
1.三角形的判断程序为一模块子程序,程序名为:ABC.asm。入口参数:字节变量a、b、c。出口参数:字节变量d=1是三角形,d=0不是三角形。
2.了解COM文件的编程方法及特点;
实验五汇编语言程序设计实验(一)

实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。
2、掌握循环程序的设计。
3、掌握汇编语言主程序与子程序的调用和参数传递。
4、进一步熟悉在PC机上建立,汇编,链接,调试和运行8086、8088汇编语言程序的过程。
二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。
要求统计字符串用子程序完成。
data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。
2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。
写出操作步骤,程序清单,程序注释,实验现象。
汇编语言程序设计的试验环境及实验步骤

汇编语言程序设计的实验环境 及实验步骤
实验环境
• 1、硬件环境:微机CPU 486以上,500MB以上 硬盘,32M以上内存; • 2、软件环境:装有MASM 5.0、DEBUG、 LINK、EDIT、CREF.EXE和EXR2BIN.EXE等 应用程序。
在PC系统上运行汇编语言源程序的过程如下
• (1) 用编辑软件建立或修改扩展名为.ASM的源文件程序 (注意:扩展名必须为.ASM)。 • (2) 用宏汇编程序MASM将.ASM文件汇编(.ASM → .OBJ)汇编所得目标代码的存放地址并不是可执 行的绝对地址,以此,需要链接之后才能调试和运行。 • (3) 用链接程序LINK将.OBJ文件链接(.OBJ → .EXE ) • (4) 使用调试程序Debug调试.EXE文件 • (5) 运行程序输出结果。
• 若汇编没有用到.LIB和.DEF文件,也不建立.MAP,简 化命令 • LINK HELLO; • 如果一个程序由三个模块组成 SUM.OBJ DUMP.OBJ MAX.OBJ,需要将它们链接在一起生成可执行文件 SUM.EXE • LINK SUM+DUMP+MAX;
Байду номын сангаас 4.EXE文件的运行
• 输入文件名(可以不输入扩展名.EXE),回车
• 若只生成.OBJ ,简化命令-• MASM HELLO;
3.目标文件的链接
• 由汇编程序生成的目标文件必须经过链接程序(LINK) 以后才能成为可执行文件。 • 链接程序可以把若干个模块链接在一起,这些模块可以 是汇编程序生成的目标文件,也可以是其他高级语言的 编译程序生成的目标文件
.EXE可执行文件 .MAP地址分配文件 .LIB库文件 .DEF模块定义文件
汇编语言程序设计实验

DW 20H DUP(0)
STACK1 ENDS
;设置代码段
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA ;预置段寄存器DS
MOV DS,AX
MOV BL,A ;取数据A
ADD BL,B ;计算BL<=(A+B)
MOV AL,C ;取数据C
SUB AL,D ;计算AL<=(C-D)
MUL BL ;完成乘法运算AX<=(A+B)*(C-D)
MOV S,AX ;存放运算结果
HTL
CODE ENDS
END START
2、对源文件汇编产生目标文件obj
D:\masm 文件名。Asm
实验项目
汇编语言程序设计实验
实验时间
2015年11月21日
实验目的
掌握汇编语言编程的基本思路及方法学会使软件调试程序
实验设备
PC机一台
实验原理
a)使用文本文档编辑程序源文件,然后存盘,把扩展名改为.ASM。
b) 用汇编程序masm对源文件汇编产生目标文件obj
如:汇编指示出错则需重新调用பைடு நூலகம்辑程序修改错误,直至汇编通过为止。
3、用连接程序link产生执行文件exe D:\link文件名.Obj
4、执行程序 D:\ 文件名
5. 使用debug程序调试程序的方法debug 文件名.exe
实验心得
对于没有接触过汇编语言的我,在此次试验中,遇到了很多问题,虽然以前接触过高级编程语言,但毕竟和汇编语言的语法有很大的不同,经过老师的指导,较为熟练的掌握了汇编语言的编写、调试以及运行程序的方法和步骤。经过此次试验,知道自己的不足,今后一定要多加练习掌握汇编语言的基本语法以及注意事项,从而熟练的用汇编语言编写调试程序,
汇编语言程序设计实验

实验二、统计学生成绩一、实验内容设有20个学生成绩分别56、78、67、40、87、99、63、51、74、100,90,80,68、88、55、66、84、96、45、73分。
编写程序实现统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并分别存放在s5、s6、s7、s8、s9、s10单元中。
(最后在屏幕中输出)二、实现方法(算法)data segmentscoredb56,78,67,40,87,99,63,51,74,100,90,80,68,88,55,66,84,96, 45,73s5 db 0 ;存放低于60分的个数。
s6 db 0 ;存放60与70之间的数。
s7 db 0 ;存放70与80之间的数。
s8 db 0 ;存放80与90之间的数。
s9 db 0 ;存放90与100之间的数。
s10 db 0 ;等于100。
data endscode segmentassumecs: code, ds: datastart:movax,datamovds,axmov si,0mov cx,20lop1:cmp score[si],60jb step1cmp score[si],70jb step2cmp score[si],80jb step3cmp score[si],90jb step4cmp score[si],100jb step5inc [s10]jmp exitstep1:inc [s5]jmp exitstep2:inc [s6]jmp exitstep3:inc [s7]jmp exitstep4:inc [s8]jmp exitstep5:inc [s9]exit:incsiloop lop1mov al,s5 ; 显示s5 add al,48movdl,almov ah,02int 21hmov dl,' ' ;输出分隔符mov ah,02int 21hmov al,s6 ; 显示s6 add al,48movdl,almov ah,02int 21hmov dl,' ' ;输出分隔符mov ah,02int 21hmov al,s7 ; 显示s7 add al,48movdl,almov ah,02int 21hmov dl,' ' ;输出分隔符mov ah,02int 21hmov al,s8 ; 显示s8 add al,48movdl,almov ah,02int 21hmov dl,' ' ;输出分隔符mov ah,02int 21hmov al,s9; 显示s9 add al,48movdl,almov ah,02int 21hmov dl,' ' ;输出分隔符mov ah,02int 21hmov al,s10 ; 显示s10 add al,48movdl,almov ah,02int 21hmov ah,4chint 21hcode endsend start三、软件框图(visio流程图)四:实验过程具体调试如下:装入后直接运行:由图可知,低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数分别为:5人,4人,3人,4人,3人,1人,通过人工计算可知运行正确,我们还可以用d命令查看内存看是否正确,结果如下:0014为20的16进制,0B3D:0014内存单元即为s5的地址,其内容为05.以后的分别为,04,03,04,03,01.也就是分数段的人数。
汇编语言顺序程序设计实验报告

实验名称:汇编语言顺序程序设计实验报告实验目的:通过本次实验,学生能够掌握使用汇编语言编写顺序程序的基本方法,理解汇编语言的基本结构和运行机制。
实验内容:1. 汇编语言基础知识1.1 汇编语言的概念1.2 汇编语言的特点1.3 汇编语言的应用领域2. 汇编语言程序设计2.1 程序设计的基本流程2.2 程序设计的基本步骤2.3 汇编语言程序设计的规范与技巧3. 实验步骤3.1 确定实验题目和要求3.2 分析实验任务,设计程序流程图3.3 编写汇编程序3.4 调试程序,确保程序正确运行3.5 编写实验报告4. 实验报告要求4.1 实验题目4.2 实验目的4.3 实验内容和步骤4.4 程序设计思路和实现方法4.5 实验结果分析和讨论4.6 实验心得体会实验过程:1. 确定实验题目和要求本次实验的题目为“汇编语言顺序程序设计”,要求学生使用汇编语言编写一个顺序程序,实现指定的功能要求。
2. 分析实验任务,设计程序流程图在开始编写汇编程序之前,我们首先要明确实验的功能需求,然后设计程序的流程图,规划程序的整体结构。
3. 编写汇编程序在设计好程序流程后,根据汇编语言的语法规则,编写相应的程序代码,并确保程序的逻辑正确,语法无误。
4. 调试程序,确保程序正确运行编写完成程序后,需要对程序进行调试,逐步检查程序运行过程中的各个环节,发现并修复可能存在的错误。
5. 编写实验报告我们需要撰写本次实验的实验报告,详细记录实验的整体过程,包括程序设计思路、程序实现方法、实验结果分析和讨论,以及实验心得体会。
实验结果分析和讨论:经过本次实验,我们掌握了汇编语言顺序程序设计的基本方法和技巧,了解了汇编语言程序设计的规范和要求。
在实验过程中,我们遇到了一些问题和困难,但通过不懈的努力和团队合作,最终成功完成了实验任务,并取得了令人满意的成绩。
实验心得体会:通过本次实验,我们深刻认识到汇编语言在计算机领域中的重要性和应用价值,同时也意识到汇编语言程序设计的复杂性和技术挑战。
汇编语言编程实验报告

汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。
编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。
二、实验目的1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。
)3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。
4、LINK连接程序5、DEBUG调试程序三、汇编语言源程序上机操作过程2、编辑源文件根据给定的任务,可编写程序。
如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。
一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。
将包含QE文件的工作磁盘插入驱动器A:。
进入QEA\QE进入全屏幕后可以开始编程。
文件名取为Myprog。
asm;Ddisplystring (09H)CODESEGMENTPUBLICASSUME CS:CODE,DS:CODEORG 100HSTART:JMP BEGINMSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display messageMOV DS,AXMOV DX,OFFSET,SG ;set up to display messageMOV AH,09H;display string function requestINT 21H ;call DOSMOV AH ,4CH ;terminate propram funct requestINT 21H ;Call DOSCODE ENDS;end of code segmentEND START;strat is the entry point输入完毕后,按ALT---X,存盘返回DOS3、汇编源程序文件(ASM,MASM)由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。
汇编语言程序设计实验

汇编语言程序设计实验报告班级姓名学号《汇编语言程序设计》实验一、实验教学目标与基本要求汇编语言实验主要使学生掌握DEBUG调用程序中各命令的使用方法,掌握MASM汇编程序对汇编语言源程序进行编辑、汇编、连接、装配、调试到运行的上机操作方法.要求学生熟练掌握汇编语言指令练习、顺序程序设计、分支程序设计、循环程序设计、子程序设计和中断程序设计.二、实验课程内容实验一 DEBUG(用于测试和调试 MS-DOS 可执行文件的程序)命令的使用(1学时)除了q 命令之外,所有 Debug 命令都接受参数.可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分隔符.实验目的:掌握DEBUG中各命令的使用方法;掌握在DEBUG命令使用后观察内存单元、寄存器、标志位的内容及意义;学会使用DEBUG来调试程序.实验内容:使用以下DEBUG命令,观察并记录结果(所留空间不够,可以附页).1.程序调用命令C>DEBUG [D:] [PATH] [FILENAME[.EXT]] [PARM1] [PARM2]其中,文件名是被调试文件的名字.如未键入文件名.可用DEBUG命令N和L把需要文件装入存储器后再调试.D指定驱动器,PATH为路径,FILENAME为文件名,PARM为命令参数2.显示存储单元命令-D [ADDRESS]或;ADDRESS 地址-D [RANGE] ;RANGE 范围3.修改存储单元内容命令-E ADDRESS [LIST]4.检查和修改寄存器内容命令-R [REGISTER NAME] ;Register name 寄存器名字5.汇编命令-A [ADDRESS]6.跟踪命令-T [=ADDRESS] [VALUE] ;Value 变量值7.运行命令-G [=ADDRESS ] [ADDRESS2 [ADDRESS3]8.反汇编命令-U [ADDRESS]-U [RANGE]9.命名命令-N FILESPECS [FILESPECS]FILESPECS的格式可为[D:][PATH]FILENAME [.EXT]10.装入命令-L [ADDRESS[DRIVE SECTOR SECTOR]] ;DRIVE SECTOR 磁盘扇区11.写命令W ADDRESS DRIVE SECTOR12.退出命令-Q实验二汇编语言实验操作方法(1学时)实验目的:掌握在DEBUG下运行汇编指令或简单小程序;熟悉标准汇编程序上机流程.实验内容:设计实验使用数据,分析得出理论结果;记录实验结果,与理论结果比较.(所留空间不够,可以附页)1.在DEBUG下运行汇编指令或简单小程序(如:实现1+2;0F3A6+0FFFB等)在DEBUG提示符下,用汇编命令A:输入汇编指令或简单小程序,用单步命令T或全程命令G来执行,并检查执行中间结果与最后结果.2.标准汇编程序上机方法 (如:给出一个AL*7的程序,用加法及移位指令实现)A.建立ASM文件,用EDIT .COM全屏幕编辑文件或其他编辑文件建立扩展名为ASM的源程序.B.用MASM(或ASM)产生扩展名为OBJ目标文件.C.用LINK产生扩展名为EXE可执行文件.D.在DEBUG下,把文件调入内存,调试程序.E.在DOS下可直接执行扩展名为EXE的文件.附:汇编语言的工作环境.A.硬件环境IBM-PC及其系列机内存256K字节以上外存:硬盘或至少一个软驱CPU:80586以上显示器:单色或彩色显示器键盘:标准ASCII码键盘B.软件环境编缉程序:或其他编缉程序汇编程序:MASM.EXE 或ASM.EXE连接程序:LINK.EXE调试程序: 或DEBUG.EXE实验三汇编语言指令练习(2学时)实验目的:1.掌握DEBUG中汇编命令A,反汇编命令U,单步命令T,显示存储单元命令D,修改存储器单元命令E,修改与显示寄存器单元命令R,退出Q等命令的用法.2.熟悉汇编中传送、逻辑等指令.3.了解指令不同的寻址方式,注意规定或限制使用的寄存器如:双操作数指令中,源操作数和目的操作数的地址不能同时为存储器地址,段跨越前缀不能使用CS,操作对象是地址还是地址中的内容,指令隐含使用的寄存器..实验内容:对DEBUG中A,U,T,D,E,R,Q等命令按不同用法进行练习;汇编中传送、逻辑等指令.1:基本题:MOV.PUSH.POP.AND.OR.XOR.TEXT.ADD.SUB.MUL.DIV.2:掌握题:在DEBUG状态下把三个数从大到小排序.3:实验步骤A.在DOS提示符下,在MASM子目录下,按DEBUG及回车.B.在DEBUG提示符下,按A进入小汇编,输入源指令.C.用U反汇编,检查输入源指令是否正确,用T或G,调试与运行指令.D.检查指令运行结果,用E,R检查与修改内存、寄存器内容.E.重复B.C.D过程.实验准备:按实验内容要求,理解指令功能,编写不同寻址方式的指令清单.实验报告:(所留空间不够,可以附页)1.实验目的,要求,内容及算法思想.2.指令的寻址方式,注意规定或限制使用的寄存器.3.指令清单.4.实验心得.实验四顺序程序设计(2学时)实验目的:掌握汇编语言程序设计的基本步骤,分析问题,确立算法,画出程序流程图.说明流程图中各功能的含义和表示法.分配工作单元和存储空间.根据程序算法流程选择合适的指令编制汇编语言源程序.本实验着重掌握顺序程序的设计基本方法和技巧.实验要求:1.程序要结构化:简明、易读和易调试2.执行速度较快3.占用存储空间较少实验内容:1:按实验内容要求,确定算法,画流程图,编写程序2:基本题:计算表达式的值: w=(v-(x*y+z-540))/x3:掌握题:将一字节压缩BCD码转换为二个ASCII码.实验步骤:1.首先进入编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.2.调试与运行程序:用单步,短点,连续等方法调试与运行程,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令执行结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.3.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.实验报告:(所留空间不够,可以附页)1.目的,要求,内容及算法思想.2.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.3.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.4.实验心得及有意义的建议.实验五分支程序设计(4学时)实验目的:掌握分支程序设计的原理和方法,重点掌握各种分支程序中形成判断条件而产生的程序段的设计方法和技巧.实验要求:1.如何产生条件2.如何对条件进行判断3.如何实现分支实验内容:1.按实验内容要求,确定算法,画流程图,编写程序2.基本题: 计算函数值: Y=1 X>0Y=0 X=0Y=-1 X<03.掌握题: 多路分支,假定将各分支程序进行编号,若存在0,1,…,N的N+1个分支程序.现根据当前的编号,转入到相应的分支程序.若各分支程序的入口地址分别为:ADDR0,ADDR1,…,ADDRN.1.首先进入编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.2.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.3.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果. 实验报告:(所留空间不够,可以附页)1.实验目的,要求,内容及算法思想.2.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.3.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.4.实验心得及有意义的建议.实验六循环程序设计(4学时)实验目的:掌握循环程序设计的原理和方法,重点掌握循环程序结构的形式和常用循环程序的控制方法和技巧.实验要求:1.置循环参数的初值2.循环体构成3.如何实现循环控制实验内容:1.按实验内容要求,确定算法,画流程图,编写程序2.基本题: 统计某地址中正元素的个数3.掌握题:把BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来;假定给出4名学生5门课的成绩,计算每个学生的平均成绩和每门课的平均成绩;冒泡排序.A.认真阅读本实验指导实验步骤:1.首先进入编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.2.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.3.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.实验报告:(所留空间不够,可以附页)1.目的,要求,内容及算法思想.2.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.3.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.4.实验心得及有意义的建议.实验七子程序设计(2学时)实验目的:掌握子程序设计的原理和方法,重点掌握子程序结构的形式和常用子程序的控制方法和技巧.采用子程序设计以增加程序的可读性,有利于程序的模块化和自顶向下的设计方法的实现.实验要求:1.子程序定义及相对应的调用方法.2.子程序设计时需建立子程序的功能说明.3.子程序现场保护和现场恢复.4.子程序的输入参数和输出参数的确定及传递方法,可利用寄存器,内存或堆栈传递参数.5.子程序嵌套调用时,注意任何存放断点和寻找短点进行返回.6.掌握常用DOS系统功能子程序的调用.实验内容:1.按实验内容要求,确定算法,画流程图,编写程序.2.基本题:十进制数到十六进制数转化程序.程序要求从键盘取得一个十进制数,然后以十六进制形式在屏幕上显示出来.3.掌握题: 在屏幕上显示4行“hello!what is your name?”,要求用子程序调用的方法实现;计算N! (N≥0)的程序实验步骤:1.首先进入编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.2.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.3.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.实验报告:(所留空间不够,可以附页)1.目的,要求,内容及算法思想.2.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.3.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.4.实验心得及有意义的建议.实验八中断程序设计(2学时)实验目的:掌握软中断程序设计的原理和方法,重点掌握软中断程序入口、出口地址的产生。
汇编语言程序设计实验报告

实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在调试过程中,学习及掌握debug程序的各种操作命令。
三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。
四.方法说明:a) 使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。
b) 用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。
c) 用连接程序link 产生执行文件EXE.d) 执行程序,可直接从DOS执行程序。
e) 使用debug程序调试程序的方法。
五.实验步骤:1.调用字处理程序EDIT 建立以sample.asm文件datarea segmentstring1 db ‘move the cursor backward.’string2 db ‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datarea start:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件obj D:\masm 文件名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一汇编语言的上机过程及指令学习一、实验目的1.学习汇编语言的上机过程;2.学习DEBUG的使用方法;3.学习数据传输指令、算术运算指令的寻址方式、使用方法及对标志寄存器的影响情况。
二、上机环境硬件:PC及兼容微机软件:或或任何文本编辑系统MASM.EXELINK.EXE三、实验内容及步骤1.学习汇编语言的上讥过程:进入MASM文件夹。
(1)建立“*.ASM”文件。
方法是:键入:ED 文件名.ASM回车参考程序如下:;PROGRAM TITLEdata segment ;数据段定义source_buffer db 40 dup(‘a’);源串data endsextra segment ;扩展段定义dest_buffer db 40 dup(?) ;目标串extra endscode segment ;代码段定义main proc far ;主函数assume cs:code,ds:data,es:extra ;段声明start: push ds ;保存返回地址xor ax,axpush axmov ax,data ;数据段寄存器赋值mov ds,axmov ax,extra ;扩展段寄存器赋值mov es,axlea si,source_buffer ;取得源串首地址lea di,dest_buffer ;取得目标串首地址cld ;串传送时地址增量mov cx,40 ;串长40个字符rep movsb ;串传送ret ;返回系统main endpcode endsend start注意:在输入程序的过程中,要用F3_S随时存盘,程序输入完毕后用F3_E命令保存文件并退出编辑系统(也可以使用其他编辑文件,如:TURBO C、TURBO PASCAL、WPS、记事本等均可)。
(2)用MASM汇编程序对刚建立的“*.ASM”文件进行汇编,产生“*.OBJ”目标文件,方法是:键入:MASM 文件名;回车(也可以在文件名后不加“;”,回车后按提示要求进行输入)若有错误,回到第(1)步再用编辑文件进行修改。
修改后再重新汇编,直至没有错误为止。
此汇编过程排除源文件中的语法错误。
(3)用LINK连接程序对刚建立的“*.OBJ”目标文件进行连接,产生可执行文件,方法是:键入:LINK 文件名;回车(也可以在文件名后不加“;”,回车后按提示进行输入)如果有错误则回到第(1)步重新编辑,再汇编、连接。
(4)执行执行刚产生的可执行文件“*.EXE”,方法是:键入:文件名[.EXE]回车(扩展名.EXE可省略)若有执行结果错误则是逻辑错误,可以用DEBUG.EXE文件进行调试,找出错误。
(5)DEBUG.EXE调试程序的使用键入:DEBUG 文件名.EXE回车DEBUG以短线来作为提示,DEBUG调试软件中常用到的命令有:_u 反汇编命令,用于将机器码反汇编成汇编程序;_g 运行命令,也可以先设置断点后再运行,如:_g 地址程序停在断点处,并显示出所有寄存器以及各标志位的当前值,最后一行给出下一条将要执行指令所在的地址、机器代码以及其汇编指令;_d地址用来查看数据段和附加段的有关区域的数据;_e地址修改数据区的字符串命令;_a地址修改程序区的程序,也可以修改数据区的字符串,但要给出数据段的地址;_q 退出DEBUG命令;_地址长度’字符串’修改数据区数据命令;_t 逐条执行命令;2.汇编语言常用伪指令的使用。
title shys.asmdatarea segment ;数据段定义string1 db ‘Move the cursor forward.’;串1string2 db ‘Move the cursor forward.’;串2m ess1 db ‘Match.’ ,13,10,’$’;提示信息m ess2 db ‘No t match.’ ,13,10,’$’datarea endsprogram segment ;代码段定义main proc far ;主函数assume cs: program, ds: datarea,es:datarea ;段声明start: push ds ;保存返回地址sub ax,axpush axmov ax, datarea ;数据段寄存器赋值mov ds, axmov es, ax ;扩展段与数据段重合1ea si, string1 ;串1首地址送SIlea di,string2 ;串2首地址送DIc1d ;地址增量mov cx,25 ;串长25个字符r epz cmpsb ;串比较j z match ;比较完后都相等lea dx,mess2 ;提示信息2首地址jmp short disp ;转显示match: 1ea dx,mess1 ;提示信息1首地址disp: mov ah,9 ;调用9号功能显示int 21hret ;程序返回系统main endpprogram endsend start运行成功后,再用ED重新编辑源程序修改参考程序中两个字符串的内容,使它们互不相同,如:String1 db ‘M ove the cursor forward.’String2 db ‘Move the cursor backward.’然后,重新汇编、连接、执行。
*先用P命令或T命令单步执行几条指令,然后用r命令检查寄存器内容;*用D命令查看数据区的内容;3.学习数据传输指令、算术运算指令的寻址方式、使用方法及对标志寄存器的影响情况。
在上述程序的基础上加入学过的数据传输指令、算术运算等指令,经过汇编、连接后,用DEBUG程序查看运行结果和标志寄存器的状态。
4.将自己编写的含有常用伪指令程序键入,调试及查看各个伪指令的运行结果。
四、实验要求1.认真预习实验内容;2.学习DEBUG的使用资料,预习各命令的用法;3.预先编写与实验有关的程序;4.实验结束后认真填写实验报告。
实验二顺序和分支结构程序设计一、实验目的1.进一步熟悉DEBUG的使用;2.掌握IBM PC机的指令系统与寻址方式。
3.掌握顺序和分支程序设计方法二、预习内容1.寻址方式及指令系统;2.汇编语言编程格式;3.汇编语言设计,编写、调试,和运行程序的方法。
三、实验内容1.DEBUG R命令的使用,同时掌握8086CPU各个寄存器的功能。
2.D命令、E命令的使用,了解内存的使用;3.A、U、T、G命令的使用,同时编写数据传送指令与算术运算指令、控制转移指令、循环指令程序,调试各个指令以便深入了解指令的寻址方式;4.逻辑指令的练习;5.堆栈指令的学习;6.控制转移指令的练习;7.处理机控制指令的练习。
四、步骤与要求1.设内存中自BLOCK单元存有10个数据,要求查找是否有50H这个数,若有显示FOUND,如果没有则显示NOT FOUND,并返回dos状态。
编程如下:DATA SEGMENTFSUB DB ‘FOUND’,’$’NSUB DB ‘NOT FOUND’,’$’DATA ENDSEDATA SEGMENTBLOCK DB 12H,34H,56H,68H,90H,54H,87H,77H,99HEDATA ENDSCOUNT EQU 10CODE SEGMENTASSUME CS:CODE,DS:DATA,ES:EDATASTART: MOV AX,DATA ;数据段寄存器赋值MOV DS,AXMOV AX,EDATA ;扩展段寄存器赋值MOV ES,AXMOV DI,OFFSET BLOCK ;数据区首地址送DIMOV CX,COUNT ;数据个数送CXMOV AL,50H ;需要查找的数据50H送ALREPNZ SCASB ;查找JZ FOUND ;查找到显示FOUNDMOV DX,OFFSET NSUB ;未查找到显示NOT FOUNDJMP DISPFOUND:MOV DX,OFFSET FSUBDISP: MOV AH,9 ;显示提示信息INT 21HL1: MOV AH,4CH ;返回系统INT 21HCODE ENDSEND START形成可执行文件后,进入DEBUG,按P、D、A、U、T、G顺序练习命令,同时熟悉指令系统与寻址方式。
(1)先用P命令或T命令单步执行几条指令,然后用r命令检查寄存器内容,例r或r ax 检查AX寄存器的内容;(2)用D命令查看数据区的内容,d命令默认在DS段,可根据DS寄存器的内容确定要查看的区域;(3)用D命令查看ES数据区的内容。
注意加段地址。
2.试编写程序,在数据区存有三个十六进制数,要求:根据三个数的比较结果显示(或存入SINS单元)如下信息:(1)如果三个数都不相等则显示“All not equal!”;(2)如果三个数中有二个数相等则显“Just two number is equal!”;(3)如果三个数都相等则显示“All equal!”。
3.试编程实现:设有10个学生的成绩分别为56,69,84,82,73,88,99,63,100和80分,分别统计低于60分、60分~79分、70~79分、80~89分、90~99分及100分的人数,并存放到S5、S6、S7、S8、S9和S10单元中。
五、步骤1.对题目进行分析,并画出程序流程图;2.编写汇编语言程序,以备上机使用;3.上机时键入程序、调试、运行,并检查结果与预想的结果是否相同;4.使用DEBUG对程序进行测试。
六、实验要求1.认真预习实验内容;2.预先将实验题目画出程序流程图,并编写与实验有关的程序;3.实验结束后认真填写实验报告。
实验三循环及子程序结构程序设计一、实验目的1.进一步熟悉DEBUG的使用;2.掌握IBM PC机的指令系统与寻址方式。
3.掌握循环和子程序结构程序设计二、预习内容1.寻址方式及指令系统;2.汇编语言编程格式;3.汇编语言设计,编写、调试,和运行程序的方法。
三、实验内容1.指令系统的学习;2.DEBUG调试程序的使用;3.子程序编程结构的学习;四、步骤与要求1.要求对题目进行分析,并画出程序流程图;2.将源程序书写工整,以备上机使用;3.上机时键入程序、调试、运行,并检查结果与预想的是否相同;4.编程实现:从键盘输入一个一位数N,然后响铃N次。
每次响铃之间要有适当延时。
4.使用DEBUG对程序进行测试。
五、实验要求1.认真预习实验内容;2.预先将实验题目画出程序流程图,并编写与实验有关的程序;3.实验结束后认真书写实验报告。
六、参考程序1、参考程序如下title ncont. asmdata segmentarray dw 4214H,4565h,2544h,9766h,0a343h,0000h,-1234 Hnegn dw ?data endsstac segment para ' stack'sta dw 16 dup(0)tos label wordstac endsprogram segmentmain proc farassume cs: program,ds: data,ss: stacstart : push dssub ax, axpush axmov ax, datamov ds, axmov ax,stacmov ss,axmov sp,offset tosmov cx, (negn-array) /2mov bx, 0mov di, bxmov si, bxagain: cmp array[bx], 0jle less_or_eqinc dijmp short nextless_or_eq:jl nextinc sinext: add bx,2loop againmov ax, (negn-array)/2. sub ax, disub ax, simov negn, axpush axpush sipush dipop axpop dipop siretmain endp program endsend start(1)先用P命令或T命令单步执行几条指令,然后用r命令检查寄存器内容,例r或r ax检查AX寄存器的内容;(2)用D命令查看数据区的内容,d命令默认在DS段,在程序首部有100H字节的文件控制块,文件控制块之后才是程序定义的数据段,可根据DS寄存器的内容确定要查看的区域;(3)执行PUSH和POP指令时查看堆栈区的内容变化。