汇编实验报告(详细版).
《汇编语言》实验报告

《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。
实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。
汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。
本实验通过编写汇编语言程序,加深对汇编语言的理解。
二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。
2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。
3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。
b.设置段寄存器,将数据段地址加载到DS寄存器中。
c.设置显示模式和光标位置。
d.将字符串逐个字符输出到屏幕上。
e.关闭显示模式。
4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。
5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。
三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。
通过程序分析和调试过程,加深了对汇编语言的理解和掌握。
四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。
通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。
同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。
在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。
总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。
完整word版,汇编实验报告,推荐文档

实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为ABC。
DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。
图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。
汇编实验报告(详细版)

计算机组成与汇编语言(实验报告)内容: 实验一、六、七、八院系专业:计算机学院计算机科学与技术姓名:xxxxxxxxx学号:*******xxxxx完成时间:2012年12月1日计算机组成与汇编语言实验报告printf("输入的二进制数不正确!!");break;}}}if(a[15]=='1')s++;for(i=1;i<16;i++){if(a[15-i]=='1')s+=(1<<i);}printf("二进制: ");puts(a);printf("对应的十进制为: ");printf("%d\n",s);}程序1运行结果:实验情况与体会:运行过程中出现过不能判断是否输错的情况以及权位判断有误等情况,经过思考和修改后修改正确,说明理解好二进制与十进制之间的转换过程很重要。
编程过程中主要碰到的问题是,不够十六位的时候要在前面补零。
转换方法主要是除二求余的方法。
注:篇幅不够,可以另外附页。
计算机组成与汇编语言实验报告姓名xxxx 学号2011004xxxx 计分专业软件工程班级xxxxx 实验日期2012年 12 月 1日实验名称实验六分支结构程序设计实验目的●熟悉有符号定点数的表示。
●掌握原码、补码、反码之间的相互转换程序设计。
实验内容说明:该程序中X=23,Y=45,他们之差的绝对值为22,用16进制表示为0016H,即图中显示的结果2.调试程序2:DATA SEGMENTADD AL, 07HLP4: ADD AL, 30H ;将低四位转化为相应的ASCII码并以字符形式输MOV DL, ALMOV AH, 2INT 21HMOV AH, 4CHINT 21HCODE ENDSEND START上机运行该程序并检查运行结果是否正确。
上机实验过程:说明:求出三个数里面的最大数73;3. 编写程序1:编程实现从键盘输入一位数字,判断其奇偶性,并在屏幕上输出一个标志,若为奇数,则输出1,否则输出0。
汇编实验报告

实验一汇编程序一、实验目的1.掌握DEBUG常用命令的使用方法2.熟悉汇编源程序编辑、汇编、连接和调试过程3.练习汇编源程序编写二、实验内容及步骤(一)学习DEBUG常用命令的使用方法1.进入DEBUG;2.用DEBUG的R命令查看、改变CPU寄存器的内容;a)用R命令查看各寄存器的内容并纪录;b)用R命令修改寄存器BX、SI、BP的值。
3.用DEBUG的D命令查看内存中的内容(以下内容分别使用不同的D命令);a)用D命令查看从1000:0开始的128个内存单元的内容并纪录;b)用D命令查看从2000:8开始的128个内存单元的内容并纪录;c)用D命令查看从3000:0开始的10个内存单元的内容并纪录;4.用DEBUG的E命令改写内存中的内容;用E命令将内存1000:0—1000:9单元中的内容改写为0、1、2、3、4、5、6、7、8、9,并进行验证。
5.用DEBUG的U命令将内存中的机器指令翻译成汇编指令;用E命令从1000:0单元开始写入如下机器码,然后用U命令将内存中的机器指令翻译成汇编指令,并分析实验结果各部分的含义。
机器码对应的汇编指令b80100 mov ax,0001b90200 mov cx,000201c8 add ax,cx6.用DEBUG的T命令执行机器指令;用T命令单步执行上题程序段的每条指令并纪录结果。
7.用DEBUG的A命令以汇编指令的格式在内存中写入机器指令用A命令将下面的程序段写入内存,用U命令翻译成机器指令,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。
MOV AX,4E20HADD AX,1416HMOV BX,2000HADD AX,BXMOV BX,AXADD AX,BXMOV AX,001AHMOV BX,0026HADD AL,BLADD AH,BLADD BH,ALMOV AH,0ADD AL,BLADD AL,9CH(二)掌握汇编程序编辑、汇编、连接及调试的方法设首地址为BUFFER的内存缓冲区中有20H个字节数据,试将数据区中的正数(包括0)存放至起始地址为PLUS的缓冲区,负数存入起始地址为MINUS的缓冲区。
汇编语言实验报告

汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。
2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。
4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。
4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。
4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。
5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。
希望对你有所帮助!。
汇编实验报告(适合初学者)

汇编实验报告(适合初学者)汇编语言程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。
2.掌握简单汇编语言程序的设计方法。
3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。
二、实验内容根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。
1.若X、Y、R、W是存放8位带符号数字节单元的地址,Z是16位字单元的地址。
试编写汇编程序,完成Z<-((W-X)/5-Y)某(R+2)①.程序算法流程图。
开始初始化AL=(W-X)AL=(W-X)/5CL=(W-X)/5-YAL=(R+2)Z=((W-X)/5-Y)某(R+2)结束②.源程序清单。
DATASEGMENTXDB1H;数据定义YDB0HRDB3HWDB6HZDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;段寄存器定义MOVAL,WSUBAL,X;求(W-X)CBW;字节转换为字MOVCL,5IDIVCL;(W-X)/5MOVCL,ALMOVAL,Y;(W-X)/5-YSUBCL,ALMOVAL,RADDAL,2;(R+2)IMULCL;((W-X)/5-Y)某(R+2)MOV[Z],AXADDAL,30H;输出结果MOVDL,AL;MOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART③.程序运行结果。
④.调试过程中遇到的问题和解决的方法。
还未能实现动态的输入数据,对指令的不熟悉,以至于在程序中经常性出错,得掌握固定的程序功能。
2.试编写一个程序,测试数是否是奇数。
如该数是奇数,则把DL的第0位置1,否则将该位置0。
①.程序算法流程图。
开始AL=XAL右移一位得CF否CF==1是DL与000000001B相或DL与11111110B相与结束②.源程序清单。
DATASEGMENTXDB9H;数据定义DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;段寄存器定义MOVAL,XSHR AL,1;利用右移一位得到cf值,JB判断 JB NEXT;为1则为奇数ANDDL,11111110B;偶数DL第一个数置为0JMPEXITNEXT:ORDL,000000001B;奇数DL第一个数置为1EXIT:MOVAH,4CHINT21HCODEENDSENDSTART③.程序运行结果。
汇编实验报告

汇编实验报告一、实验目的本次汇编实验的主要目的是深入理解计算机底层的工作原理,掌握汇编语言的基本语法和编程技巧,能够运用汇编语言编写简单的程序来实现特定的功能。
通过实践操作,提高对计算机体系结构的认识,培养解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 Windows 10,汇编语言编译器为MASM 615。
三、实验内容(一)数据传送与算术运算1、编写程序实现将两个 16 位的整数相加,并将结果存储在指定的内存单元中。
2、实现数据在不同寄存器和内存单元之间的传送。
(二)逻辑运算与移位操作1、对给定的两个字节数据进行逻辑与、或、异或操作,并观察结果。
2、进行移位操作,包括左移和右移,理解移位对数据的影响。
(三)循环与分支结构1、利用循环结构计算 1 到 100 的整数之和。
2、根据给定的条件,使用分支结构实现不同的操作。
(四)子程序调用1、编写一个子程序,实现两个数的乘法运算。
2、在主程序中调用该子程序,并输出结果。
四、实验步骤(一)数据传送与算术运算1、打开 MASM 编译器,新建一个汇编源文件。
2、使用`MOV` 指令进行数据传送,将两个整数分别存储在寄存器`AX` 和`BX` 中。
3、使用`ADD` 指令将两个数相加,结果存储在`CX` 寄存器中。
4、最后,使用`MOV` 指令将结果存储到指定的内存单元。
(二)逻辑运算与移位操作1、在源文件中定义两个字节变量,并初始化其值。
2、使用逻辑运算指令(如`AND`、`OR`、`XOR`)对这两个变量进行操作。
3、使用移位指令(如`SHL`、`SHR`)对变量进行移位,并观察结果。
(三)循环与分支结构1、对于循环结构,使用`LOOP` 指令实现从 1 到 100 的累加。
2、在分支结构中,根据给定的条件(如比较两个数的大小),使用`JZ`、`JL` 等指令执行不同的分支操作。
(四)子程序调用1、定义一个子程序,使用参数传递的方式接收两个数,并进行乘法运算。
汇编实验报告

汇编实验报告概述:本次实验主要通过汇编语言的学习和实践,加深对汇编语言的理解并掌握其基本操作和使用方法。
我们使用了x86汇编语言,以及相关的工具和环境。
一、实验背景汇编语言是计算机底层的一种编程语言,通过对计算机底层指令的直接操作,可以实现对硬件的控制。
汇编语言是学习高级编程语言的基础,也是了解计算机运行机理的关键。
二、实验目的1. 理解汇编语言的基本原理和特点;2. 掌握汇编语言的基本指令和语法;3. 学会使用汇编语言进行简单的程序设计和调试。
三、实验环境和工具1. 操作系统:Windows 10;2. 开发工具:MASM(Microsoft Macro Assembler);3. 测试工具:DOSBox。
四、实验过程1. 安装和配置实验环境首先,我们需要安装和配置MASM和DOSBox。
MASM是一款由微软开发的汇编语言开发工具,通过它可以将汇编语言代码转化为可执行文件。
DOSBox是一个模拟DOS环境的工具,能够在现代操作系统上运行旧版的DOS程序。
2. 学习和练习基本指令接下来,我们通过学习和练习基本指令,来掌握汇编语言的基本用法。
我们开始学习如何在汇编语言中定义和初始化变量,以及如何进行算术运算和逻辑运算。
同时,我们还学习了如何使用循环和条件语句。
3. 编写和运行简单程序在掌握了基本指令之后,我们开始编写一些简单的程序,并通过MASM将其转化为可执行文件。
我们编写了一个通过计算两个数的和来演示算术运算的程序,并使用DOSBox来运行这个程序,观察其运行结果。
4. 调试和优化程序在运行程序的过程中,我们发现了一些问题和bug。
我们使用调试工具对程序进行调试,通过逐步执行代码并观察变量的值来发现问题所在。
我们找到了一个变量定义错误的bug,并进行了修复。
此外,我们还通过代码优化来提高程序的性能和效率。
五、实验结果和分析经过一系列的实验和练习,我们成功地掌握了汇编语言的基本操作和使用方法。
我们能够编写简单的汇编程序,并通过MASM将其转化为可执行文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机组成与汇编语言(实验报告)内容: 实验一、六、七、八院系专业:计算机学院计算机科学与技术姓名:xxxxxxxxx学号:*******xxxxx完成时间:2012年12月1日计算机组成与汇编语言实验报告printf("输入的二进制数不正确!!");break;}}}if(a[15]=='1')s++;for(i=1;i<16;i++){if(a[15-i]=='1')s+=(1<<i);}printf("二进制: ");puts(a);printf("对应的十进制为: ");printf("%d\n",s);}程序1运行结果:实验情况与体会:运行过程中出现过不能判断是否输错的情况以及权位判断有误等情况,经过思考和修改后修改正确,说明理解好二进制与十进制之间的转换过程很重要。
编程过程中主要碰到的问题是,不够十六位的时候要在前面补零。
转换方法主要是除二求余的方法。
注:篇幅不够,可以另外附页。
计算机组成与汇编语言实验报告姓名xxxx 学号2011004xxxx 计分专业软件工程班级xxxxx 实验日期2012年 12 月 1日实验名称实验六分支结构程序设计实验目的●熟悉有符号定点数的表示。
●掌握原码、补码、反码之间的相互转换程序设计。
实验内容说明:该程序中X=23,Y=45,他们之差的绝对值为22,用16进制表示为0016H,即图中显示的结果2.调试程序2:DATA SEGMENTADD AL, 07HLP4: ADD AL, 30H ;将低四位转化为相应的ASCII码并以字符形式输MOV DL, ALMOV AH, 2INT 21HMOV AH, 4CHINT 21HCODE ENDSEND START上机运行该程序并检查运行结果是否正确。
上机实验过程:说明:求出三个数里面的最大数73;3. 编写程序1:编程实现从键盘输入一位数字,判断其奇偶性,并在屏幕上输出一个标志,若为奇数,则输出1,否则输出0。
程序源代码:code segmentassume cs:codestart:mov ah,01h ;调用dos中断1#子功能输入字符int 21h ;al<-输入一位数字clc ;cf清0rcr al,1 ;al最低位移入cfjnc evn ;最后一位是0说明是偶数mov al,31h ;奇数al=1的ascii 码jmp dispevn: mov al,30h ;偶数,al<- 1的ascii码disp: mov ah,02h ;dos 中断的2#子功能,输出字符;mov dl,0ah ;output \n;int 21h;mov dl,0dh ;output enter;int 21hmov dl,al ;out flag wordint 21hmov ah,4ch ;return dosint 21hcode endsend start说明:输入4,为偶数则输出0,即上图的40.输入5,为奇数则输出1即上图的51;4. 编写程序2:编程实现任意给定X值(-128<=X<=127),求符号函数Y的值,存放于内存单元。
5X-3 当X>0Y= 0 当X=02X 当X<0源程序如下:DATA SEGMENTX DB ?Y DB ?INPUT DB 'INPUT A NUMBER:','$'DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV DX, OFFSET INPUT;取INPUT的首地址MOV AH, 9 ;实现键盘的输出说明:输入9,则输出2A(十六进制)即4*9-3=42(十进制);5. 将编写好的程序3输入、编译、连接并运行。
程序3清单DATA SEGMENTJMP EXITNT3: MOV AX, A ;若A、B同为偶数,则不变 MOV BX, BMOV A, AXMOV B, BXEXIT: MOV AH, 4CHINT 21HCODE ENDSEND START程序3运行结果:说明:A,B两个数都为3,都为奇数,故加1.成4,结果如上图。
实验情况与体会:在此次实验中,可以说是我第一次接触到真正编写汇编实验,尽管刚开始写程序时会有指令不熟悉的情况或者指令运用不灵活的情况虽然程序的算法不难,但对于初学者来说,把思路理得顺畅还得花点时间好好琢磨。
这让我觉得汇编是一门新的计算机语言,要想更好地掌握,还得自己多补不足,多花时间学习。
计算机组成与汇编语言实验报告姓名xxxxx 学号2011004xxxxx 计分专业软件工程班级xxxxx 实验日期2012年 12 月 1日实验名称实验七循环结程序设计实验目的●加深对循环结构的理解。
●掌握循环程序的设计方法。
●进一步熟悉汇编语言程序的汇编、连接及调试技术。
实验内容1.调试程序1:统计字型变量X中1的个数,存储于字节变量Y中。
源程序如下:DATA SEGMENTX DW 63HY DB ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS:DATA START: MOV AX, DATAMOV DS, AXMOV AX, XMOV BL, 0MOV CX, 16AGAIN: ROL AX, 1JNC NEXTINC BLNEXT: LOOP AGAINMOV Y, BLEXIT: MOV AX, 4C00HINT 21HCODE ENDSEND START上机运行该程序并检查运行结果是否正确。
上机实验过程:通过实验测试,程序一运行结果为4,正确。
2. 调试程序2:DATA SEGMENTARRAY DB 34,56,0,58,79,0,0,28,98HCOUNT EQU $-ARRAYDATA ENDSCODE SEGMENTASSUME CS: CODE, DS:DATA START: MOV AX, DATAMOV DS, AXMOV CX, COUNTMOV BX, -1AGAIN: INC BXCMP ARRAY[BX], 0LOOPNZ AGAINJE OKMOV DL, ‘N’JMP SHOWOK: MOV DL, BLOR DL, 30HCMP DL, 39HJBE SHOWADD DL, 7SHOW: MOV AH, 2INT 21HEXIT: MOV AX, 4C00HINT 21HCODE ENDSEND START上机运行该程序,查看其显示结果,并说明程序实现什么功能。
上机运行该程序,查看运行结果为2,程序实现:查找数组中值为0的位置。
3.编写程序1:编程计算从1到100的和。
将编写好的程序输入、汇编、连接并运行。
源程序为:DATA SEGMENTX DW 0DATA ENDSCODE SEGMENTASSUME CS: CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,100MOV BX,0BEGIN: INC BXADD X,BXLOOP BEGINMOV AH,4CHINT 21HCODE ENDSEND START程序结果如上图:13BA(十六进制)=5050(十进制);4.设内存中以BUFFER为首地址的缓冲区中有若干个以非压缩BCD码形式存放的十进制数,并以符号$结束。
它的值可能是0~9中的任意一个。
编程将这些十进制数顺序显示在屏幕上。
源程序为:DATA SEGMENTBUFFER DB 1,2,3,4,5,6,7,8,9,'$'DATA ENDSSTACK SEGMENT STACKSKTOP DB 40H DUP(?)SKSIZE EQU $-OFFSET SKTOPSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKBEGIN: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,SKSIZE结果如上图;5.编写程序3:画出流程图,并编程计算S=1+2×3+3×4+4×5+……+N×(N+1),直到N大于200为止,并将结果由屏幕上显示出来。
将编写好的程序输入、汇编、连接并运行。
流程图:开始程序结果如上图:4D6F(十六进制)=19823(十进制);实验情况与体会:本次实验过程依然遇到很多问题,比如输入程序时,单引号必须用英文状态下的单引号,根据提示修改即可解决。
有时候是语句的类型不匹配等等。
当循环次数确定时用计数循环,次数不确定时用条件控制循环。
计数控制循环程序要注意循环次数的设置;控制循环程序要设置一个变量,使变量在一个状态下时进行循环,而在另一个状态下时则跳出循环。
注:篇幅不够,可以另外附页。
计算机组成与汇编语言实验报告RETDISP_CRLF ENDPCSEG ENDSEND START运行结果:说明:如图输入123后,显示出1232、编写8_1_1源程序如下:DATA SEGMENTARRAY DB 34H,26H,0FAH,0A5H,8,72H,65H,0C1H,0FEH,70HCOUNT EQU $-ARRAYRESULT DB ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV BX, OFFSET ARRAY ;BX←数组的偏移地址 MOV CX, COUNT ;CX←数组的元素个数CALL CHECKSUM ;调用求和过程MOV RESULT, AL ;处理出口参数MOV AH, 4CHINT 21H;子程序 CHECKSUM;功能:求数组元素的校验和;入口:BX←数组元素的偏移地址;出口: 校验和运算结果CHECKSUM PROCXOR AL, AL ;累加器清0SUM: ADD AL, [BX] ;求和INC BX ;指向下一个字节LOOP SUM ;循环求和RETCHECKSUM ENDPCODE ENDSEND START运行结果:结果说明(校验和):07H3.编写8_1_2源程序如下:DATA SEGMENTARRAY DB 34H,26H,0FAH,0A5H,8,72H,65H,0C1H,0FEH,70HCOUNT EQU $-ARRAYLEN DB ?POP BXPOP AXRETCHECKSUM ENDPCODE ENDSEND START运行结果:结果说明:数组长度0AH,数组偏移地址:00,数组校验和:07H4.编写8_1_3源程序如下:STACK SEGMENT STACKDB 100 DUP(0)STACK ENDSDATA SEGMENTARRAY DB 34H,26H,0FAH,0A5H,8,72H,65H,0C1H,0FEH,70HCOUNT EQU $-ARRAYRESULT DB ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATA,SS:STACKSTART: MOV AX, DATACHECKSUM ENDPCODE ENDSEND START运行结果:结果说明:07H5. 将编写好的程序2输入、汇编、连接并运行。