汇编实验报告
汇编语言实验7实验报告

汇编语言实验7实验报告一、实验目的本次实验旨在通过汇编语言编写程序,实现对字符串的操作和输出。
二、实验内容1. 编写一个汇编程序,要求从键盘输入一个字符串,并将其逆序输出到屏幕上;2. 编写一个汇编程序,要求从键盘输入两个字符串,并将它们拼接起来后输出到屏幕上。
三、实验过程1. 字符串逆序输出程序首先,需要从键盘输入一个字符串。
为了方便起见,我们可以先规定字符串的最大长度为100。
接着,我们需要定义两个变量:```buffer db 100 ; 用于存储输入的字符串length dw ? ; 存储输入的字符串长度```其中,db代表定义字节型变量,dw代表定义双字节型变量。
然后,我们需要使用INT 21H中断来读取用户输入的字符串。
具体而言,我们可以使用下面这段代码:```mov ah, 0Ah ; 设置INT 21H功能号为0Ahmov dx, offset buffer ; 将buffer的地址传给DX寄存器int 21h ; 调用INT 21H中断```该代码会将用户输入的字符串存储在buffer中,并且将其长度存储在length变量中。
接着,我们需要将该字符串逆序输出到屏幕上。
为了实现这个功能,我们可以使用栈来存储字符串中的每个字符,并逐个弹出来输出。
具体而言,我们可以使用下面这段代码:```mov si, offset buffer + 1 ; 将si寄存器指向字符串的第一个字符mov cx, length ; 将cx寄存器设置为字符串长度dec cx ; 字符串长度需要减1reverse:push byte ptr [si] ; 将当前字符压入栈中inc si ; 指向下一个字符loop reverse ; 循环直到所有字符都被压入栈中mov ah, 02h ; 设置INT 21H功能号为02h,表示输出一个字符print:pop dx ; 弹出栈顶元素int 21h ; 输出该字符loop print ; 循环直到所有字符都被弹出并输出完毕```2. 字符串拼接程序首先,需要从键盘输入两个字符串。
《汇编语言》实验报告

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

单片机汇编实验报告1. 实验目的本实验旨在通过编写单片机汇编程序,掌握单片机的基本操作,理解汇编语言和单片机的工作原理。
2. 实验器材•STC89C52单片机开发板•串口线•电脑3. 实验原理单片机是一种集成了处理器、存储器、输入输出设备等功能的微型计算机系统。
通过编写汇编语言程序,可以利用单片机的内部寄存器和外部接口,实现各种功能。
4. 实验步骤步骤一:准备工作1.将STC89C52单片机开发板与电脑通过串口线连接。
2.打开开发板电源,确保电源工作正常。
步骤二:编写汇编程序1.打开汇编语言编辑器,例如Keil C51。
2.创建一个新的汇编语言项目,命名为“experiment.asm”。
3.编写汇编程序,实现所需的功能。
例如,可以编写一个简单的程序,使LED灯闪烁。
步骤三:编译和烧录程序1.选择适当的编译选项,将汇编程序编译为二进制文件。
2.将生成的二进制文件烧录到单片机中。
可以使用烧录软件或者编程器完成这一步骤。
步骤四:连接外部电路1.根据需要,连接外部电路到单片机的GPIO引脚。
例如,如果需要控制LED灯,可以将LED的阳极连接到单片机的某个输出引脚,将LED的阴极连接到单片机的地。
步骤五:运行实验1.将开发板连接到电源,确保电源正常工作。
2.按下开发板上的复位按钮,使单片机开始执行程序。
3.观察实验现象,并记录下实验结果。
5. 实验结果与分析通过以上步骤,我们成功编写并烧录了一个简单的汇编程序到单片机中。
在运行实验时,LED灯按照程序的要求进行闪烁。
这表明我们的实验设计和编程是正确的。
6. 实验总结在本次实验中,我们通过编写汇编程序,学习了单片机的基本操作和工作原理。
通过实际操作,我们更好地理解了汇编语言的编写和单片机的工作方式。
同时,我们还学会了使用烧录软件将程序烧录到单片机中,并通过外部电路观察实验结果。
7. 实验改进在以后的实验中,我们可以尝试更复杂的功能,例如通过单片机控制电机或者LCD显示屏等。
汇编语言实验报告_6

青岛理工大学课程实验报告
课程名称汇编语言程序设计班级实验日期
2013.11.3
姓名学号实验成绩
实验
名称
子程序
实验目的及要求1.掌握子程序设计相关指令和伪指令的使用方法
2.掌握子程序设计方法, 特别是参数传递方法
3.掌握主程序和子程序之间的调用关系和调用方法
4.熟悉循环和子程序结合应用解答问题的思路
实验环境1.命令行方式
2.MASM.EXE LINK.EXE DEBUG.EXE
实验内容1.设DATA1开始的内存单元中, 存放着一串带符号字数据, 要求采用冒泡排序算法(Bubble Sort)按照从小到大的顺序排序并将排好序的数据存在DATA1开始的单元。
然后在显示器输出排好序的数据, 中间用’,’隔开。
2.输出数据使用子程序方式。
算法描述及实验步骤步骤:
(1)设置数据段地址
(2)设置堆栈段地址
(3)设置堆栈指针
(4)调用9号功能, 输出一个提示性字符串。
(5)循环进入子程序, 输出原始数据。
(6)在子程序内循环输出每一位的十进制数字。
(7)主程序进行内外循环, 进行冒泡排序。
(8)再一次调用子程序输出排序后的结果。
调试过程及实验结果调试过程:
(2)(1)在输出时, 调用DOS 9号功能, 并不是只要语句MOV AH,09H
(3)它是存在入口条件的, 入口条件:DS:DX=输出字符缓冲区首地址。
所以前面必须加上MOV DX,OFFSET NOTE1。
(4)汇编语言是不会再输出汉字的。
(5)子程序结束时一定要有RET
(6)冒泡排序也遇到一些困难。
调试结果:。
汇编语言实验报告

汇编语言实验报告
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③.程序运行结果。
实验报告范文模板【汇编】

篇一例一定量分析实验报告格式(以草酸中h2c2o4 含量的测定为例)实验题目:草酸中h2c2o4 含量的测定实验目的:学习naoh 标准溶液的配制、标定及有关仪器的使用;学习碱式滴定管的使用,练习滴定操作。
实验原理:h2c2o4 为有机弱酸,其ka1=5.9 x 10-2 , ka2=6.4 x 10-5。
常量组分分析时cka1 > 10-8 , cka2> 10-8 , ka1/ka2 < 105,可在水溶液中一次性滴定其两步离解的h+:h2c2o4+2naoh===na2c2o4+2h2o 计量点ph 值8.4 左右,可用酚酞为指示剂。
naoh 标准溶液采用间接配制法获得,以邻苯二甲酸氢钾标定:-cook-cooh+naoh===-cook-coona+h2o此反应计量点ph 值9.1 左右,同样可用酚酞为指示剂。
实验方法:一、naoh 标准溶液的配制与标定用台式天平称取naoh1g于100ml烧杯中,加50ml蒸馏水,搅拌使其溶解。
移入500ml试剂瓶中,再加200ml蒸馏水,摇匀。
准确称取0.4~0.5g 邻苯二甲酸氢钾三份,分别置于250ml 锥形瓶中,力口20~30ml蒸馏水溶解,再加1~2滴0.2%酚酞指示剂,用naoh 标准溶液滴定至溶液呈微红色,半分钟不褪色即为终点。
二、h2c2o4含量测定准确称取0.5g左右草酸试样,置于小烧杯中,加20ml蒸馏水溶解,然后定量地转入100ml容量瓶中,用蒸馏水稀释至刻度,摇匀。
用20ml移液管移取试样溶液于锥形瓶中,加酚酞指示剂1~2滴,用naoh 标准溶液滴定至溶液呈微红色,半分钟不褪色即为终点。
平行做三次。
实验数据记录与处理:一、naoh 标准溶液的标定实验编号123备注mkhc8h4o4/g 始读数终读数结果vnaoh/ml 始读数终读数结果cnaoh/mol • 1-1naoh/mol • l-1结果的相对平均偏差二、h2c2o4含量测定实验编号123 备注cnaoh/mol • l-1m样/gv 样/ml20.0020.0020.00vnaoh/ml 始读数终读数结果3 h2c2o4h2c2o4结果的相对平均偏差实验结果与讨论:(1)(2) (3)……结论:例二合成实验报告格式实验题目:溴乙烷的合成实验目的:1 .学习从醇制备溴乙烷的原理和方法2.巩固蒸馏的操作技术和学习分液漏斗的使用。
汇编实验报告

汇编实验报告一、实验目的本次汇编实验的主要目的是深入理解计算机底层的工作原理,掌握汇编语言的基本语法和编程技巧,能够运用汇编语言编写简单的程序来实现特定的功能。
通过实践操作,提高对计算机体系结构的认识,培养解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 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、定义一个子程序,使用参数传递的方式接收两个数,并进行乘法运算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
院系:计算机科学学院专业:计算机科学与技术年级: 2011级课程名称:80X86汇编语言程序设计学号:姓名:指导教师:2013年 06 月 10 日;*****************************************************************************;功能:计算成绩总分和平均分;作者:;日期:;****************************************************************************** .386.model flat;------------------------------------------------------------------------------ ExitProcess proto near32 stdcall,dwexitcode:dword;------------------------------------------------------------------------------ Include io.hCr equ 0dh ;回车Lf equ 0ah ;换行;------------------------------------------------------------------------------ .stack 4096 ;预留4096字节的堆栈;------------------------------------------------------------------------------ .DATA ;数据保留区prompt1 byte “please input the first score1:”,0prompt2 byte “please input the second score2:”,0prompt3 byte “please input the third score3:”,0prompt4 byte “please input the fouth score4:”,0out1 byte “the sum is:”sumstr byte 6 dup(?).cr.Lfout2 byte “the average is:”averstr byte 6 dup(?).cr.Lfsum word 0average word ?numstr byte 20 dup(?);------------------------------------------------------------------------------ .code_start:L1:output prompt1input numstr,10ayio numstrcmp ax,0JL L1cmp ax,100JG L1add sum,axL2:output prompt2input numstr,10ayio numstrcmp ax,0JL L2cmp ax,100JG L2add sum,axL3:output prompt4input numstr,10ayio numstrcmp ax,0JL L3cmp ax,100JG L3add sum,axL4:output prompt4 input numstr,10 ayio numstrcmp ax,0JL L4cmp ax,100JG L4add sum,axmov ax,sumitoa sumstr,ax mov bL,4idiv bLmov ah,0itoa avestr,ax output out1 output out2 public _start end;*****************************************************************************;功能:分类统计字符个数;作者:;日期:2013.05.12;****************************************************************************** .386.model flatExitProcess proto near32 stdcall, dwexitcode:dwordINCLUDE io.hcr EQU 0dhlf EQU 0ah.STACK 4096.DATAprompt1 BYTE cr,lf,lf,"Please enter the string(<80).",cr,lf,lfBYTE "The string is:",0stringIn BYTE 1 DUP (?)charLabel BYTE cr,lf,"The number of char is:"char BYTE 16 DUP (?)BYTE cr,lf,0numberLabel BYTE cr,lf,"The number of number is:"number BYTE 16 DUP (?)BYTE cr,lf,0otherLabel BYTE cr,lf,"The number of other is:"other BYTE 16 DUP (?)BYTE cr,lf,0.CODE_start: output prompt1 ;提示输入字符mov ax,0mov bx,0mov cx,0begin:input stringIn,1 ;输入字符cmp stringIn,0dhje forOut ;是回车则结束程序cmp stringIn,0dhjb forOther ;ASCII码值小于0dh则其他字符数加1cmp stringIn,2fhjbe forOther ;ASCII码值小于或等于2fh则其他字符数加1 cmp stringIn,39hjbe forNumber ;ASCII码值小于或等于39h则数字数加1 cmp stringIn,40hjbe forOther;ASCII码值小于或等于40h则其他字符数加1cmp stringIn,5ahjbe forChar ;ASCII码值小于或等于5ah则字母数加1 cmp stringIn,60hjbe forOther ;ASCII码值小于或等于60h则其他字符数加1cmp stringIn,7ahjbe forChar ;ASCII码值小于或等于7ah则字母数加1 jmp forOther ;其他字符数加1forOther: ;其他字符数加1,回到循环开始inc axjmp beginforNumber: ;数字数加1,回到循环开始inc bxjmp beginforChar: ;字母数加1,回到循环开始inc cxjmp beginforOut:itoa other,axoutput otherLabel ;输出其他字符数itoa number,bxoutput numberLabel ;输出数字数itoa char,cxoutput charLabel ;输出字母数INVOKE ExitProcess,0 ;退出程序,返回0 PUBLIC _startEND组内分工(可选)无实验结果分析及心得体会运行结果:Please enter the string(<80).The string is:fhhsj*/656()+422=The number of char is:5The number of number is:6The number of other is:6心得体会:成绩评定教师签名:2013年月日流程图:代码:;*************************************************************************** ; 求毕达哥拉斯三角形的边; Author:; Date:;**************************************************************************** .386.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD;---------------------------------------------------------------------------- INCLUDE io.hcr EQU 0dh ;回车Lf EQU 0ah ;换行;---------------------------------------------------------------------------- .STACK 4096 ;预留4096字节的堆栈;---------------------------------------------------------------------------- .DATASum1 WORD ?Sum2 WORD ?flag BYTE ?num1 WORD ?num2 WORD ?prompt1 BYTE "please input a number: ",0prompt2 BYTE "The result is: ",cr,lfBYTE " A B C ",cr,lf,0prompt3 BYTE "Sorry, this triangle doesn't exist.",0count1 BYTE 6 DUP (? )count2 BYTE 6 DUP (? )count3 BYTE 6 DUP (? )BYTE cr, lf, 0.CODE_start:output prompt1 ;提示输入一个数input count3,6atoi count3 ;转换为整型mov bx,ax ;将输入的数拷贝到bx中mul ax ;求输入数的平方mov num1,ax ;将所求结果保存到num1中mov sum1,1 ;将1赋值给sum1mov flag,0 ;将0赋给flagfor1: inc sum1 ;sum1加1cmp sum1,bx ;比较sum1和输入的数的大小jae result ;如果大于等于则跳到resultmov ax,sum1 ;将sum1赋给axmul ax ;求出sum1的平方mov num2,axmov cx,bxsub cx,sum1 ;将cx减去sum1的值保存到cx中mov sum2,cx ;将cx赋给sum2for2: inc sum2 ;做加法运算,与1相加赋值给sum2 mov ax,sum2 ;将sum2赋给axcmp ax,bx ;比较ax和bx的大小jae for1 ;如果大于等于则跳到for1mul ax ;求出sum2的平方add ax,num2 ;求出sum1的平方加上sum2的平方赋给axcmp ax,num1 ;比较ax 和num1的大小jne for2 ;如果不等于则跳到 for2进行循环mov flag,1 ;如果等于,则将1赋给标记号flag itoa count3,bx ;将整数转换为ASCII码itoa count2,sum1itoa count1,sum2output count1 ;输出所得结果jmp for1 ;跳到for1进行循环result:cmp flag,1jne none ;如果不相等,则跳到nonejmp endfilenone:output prompt3endfile:INVOKE ExitProcess, 0 ;退出程序,并返回0PUBLIC _startEND;***************************************************************************** ;功能:数组排序;作者:;日期:2013.05.12;****************************************************************************** .386.model flat;------------------------------------------------------------------------------ ExitProcess proto near32 stdcall,dwexitcode:dword;------------------------------------------------------------------------------ Include io.h ;header file for input/outputCr equ 0dh ;carriage return characterLf equ 0ah ;line feed;------------------------------------------------------------------------------ .stack 4096 ;reserve 4096_byte stack;------------------------------------------------------------------------------ .DATA ;reserve storage for dataprompt1 BYTE "Please entry 10 numbers:",cr,Lf,0prompt2 BYTE "Number : ",0number DWORD 20 dup(?) ,0array DWORD 20 dup(?),0prompt3 BYTE "Now the range is : " ,0.CODE_start:output prompt1 ;提示输入10个数据lea ebx,arraymov ecx,numbers ;将元素拷贝到ecx寄存器inNum:output prompt2input number,20 ;输入数据元素atod number ;将数据转换为整型mov [ebx] ,eaxadd ebx, 4 ;进行加法运算,并将结果存储在ebx中loop inNum ;进行inNum循环output prompt3 ;输出结果mov ecx, numberscycle1:mov dx,0lea ebx,arraycycle2:inc dx ;做加法运算,源操作数为1 cmp dx,numbers ;比较dx与numbers的大小jnl cycle3 ;不小于则转移到cycle3mov ax,[ebx]cmp ax,[ebx+4]jg exchange ;大于则转移add ebx,4jmp cycle2exchange:xchg [ebx+4],axmov [ebx],axadd ebx,4jmp cycle2 ;跳转到cycle2cycle3:loop cycle1 ;循环cycle1mov eax,0lea ebx,arraymov ecx,numbersforout:mov eax,[ebx]dtoa number,eax ;将eax转换成ASCII码,并存入number中add ebx,4output [number+6]loop forout ;进行forout循环,输出结果INVOKE ExitProcess, 0 ;退出程序,并返回0 PUBLIC _startEND组内分工(可选)无实验结果分析及心得体会运行结果:Please entry 10 numbers:Number :-5Number :6Number :8Number :1Number :-11Number :3Number :2Number :8Number :-4Number :-6Now the range is :-11 -6 -5 -4 1 2 3 6 8 8心得体会:成绩评定教师签名:2013年月日_Start: mov ax,datamov ds,axmov es,axlea dx,msg1mov ah,09hint 21hlea dx,string1mov ah,0ahint 21hxor bx,bx ;进行bx与bx的异或运算 mov bl,string1+1lea dx,msg3mov ah,09hint 21hlea dx,msg2mov ah,09hint 21hlea dx,string2mov ah,0ahint 21hlea dx,msg3mov ah,09hint 21hcmp bl,string2+1 ;比较bl与string2+1大小ja lop1 ;若bl大于string2+1则转移到lop1 jb lop2 ;若bl小于string2+1则转移到lop2jmp lop3 ;跳转到lop3lop1: mov cl,string2+1jmp lop3lop2: mov cl,string1+1jmp lop3lop3: mov cl,blcldlea di,string2+2lea si,string1+2repz cmpsbja mat1jb mat2jz mat3mat1: mov result,“No Match”lea dx,resultmov ah,09hint 21hjmp exitmat2: mov result,“No Match” lea dx,resultmov ah,09hint 21hjmp exitmat3: mov result,“Match”lea dx,resultmov ah,09hint 21hjmp exitexit: mov ah,4chint 21hcode endsend start程序流程图:;***************************************************************************** ;功能:比较两个字符串;作者:;日期:;****************************************************************************** .386.model flat;------------------------------------------------------------------------------ ExitProcess proto near32 stdcall,dwexitcode:dword;------------------------------------------------------------------------------ Include io.h ;header file for input/outputCr equ 0dh ;carriage return characterLf equ 0ah ;line feed;------------------------------------------------------------------------------ .stack 4096 ;reserve 4096_byte stack;------------------------------------------------------------------------------ STACKSG segment stack 's'dw 64 dup('ST')STACKSG endsDATA segmentBUFFER DB 6,?,6 DUP(?) ;输入缓冲区,定义长度为6,预留实际输入字符个数的计数单元DECN DW ? ;十进制数,预留实际输入字符个数的计数单元OUTPUT DB 16 DUP('0'),'$' ;输出缓冲区,长度为16PRINT DB 'Input the integer: ','$' ;打印提示信息,必须以'$'结尾CRLF DB 0DH,0AH,'$';0DH为回车符,0AH为换行符DATA endsCODE segmentassume cs:CODE,ds:DATA,ss:STACKSG,ES:NOTHINGMAIN proc farmov ax, DATA ;DATA是立即数,不能直接送段寄存器dsmov ds, axmov ah, 9 ;功能号9表示输出字符串,打印提示信息lea dx, PRINTint 21hmov ah, 0AH ;输入十进制数串lea dx, BUFFERint 21hmov ah, 9 ;输出回车换行符lea dx, CRLFint 21hmov cl, BUFFER + 1 ;cl中为输入十进制整数串的实际长度,si指向字符串首字母xor ch, chlea si, BUFFER+2call EXCH_ASC ;将十进制ASC转换为十进制数并保存到ax中mov DECN, ax ;将所得的十进制数存入DECNlea di, OUTPUT+15 ;将OUTPUT 的最后一个字符的偏移量送至dicall DEC_ASC ;将十进制数装换为二进制数,并转换为ASClea dx, OUTPUT ;输出结果call DISPmov ax, 4C00Hint 21hMAIN endpEXCH_ASC procxor ax, ax ;清零ax寄存器jcxz M2 ;测试cx寄存器的内容,cx为十进制字串的长度,cx为0的时候转M2M1: mov bx, 10 ;设置进制为10mul bx ;ax乘以10mov bl, [si] ;将si指向的字符放入bl寄存器inc sisub bx, 30H ;将每一位的ASCII码值减去30H,变成十进制值add ax, bxloop M1 ;loop一次cx减少1M2: retEXCH_ASC endpDEC_ASC procmov bx, 2mov ax, DECNC2: cmp ax, 0jz c3mov dx, 0div bxor dl, 30H ;转换为ASCIImov [di], dldec dijmp short C2C3: retDEC_ASC endpDISP procmov ah, 9int 21hretDISP endpCODE endsend MAIN。