汇编第3次上机实验报告
汇编语言上机实验内容

实验一上机操作一、实验目的掌握汇编语言程序编辑、汇编、连接、运行以及利用DEBUG调试程序的方法。
二、实验设备PC机及相应的软件。
三、实验内容及步骤1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。
2、利用DEBUG进行程序调试,掌握常用命令的使用方法,观察运行结果。
3、汇编语言上机操作,见图1-1 汇编语言上机操作流程。
上机操作过程:开始输入cmd 确认后显示:C:\Documents and setting\Administrator>-输入 cd c:\masm 后显示:c:\masm>-c:\masm>EDIT ABC.asmc:\masm>MASM ABC;若有语法错,回EDIT下改该程序c:\masm>LINK ABC;若有错,回EDIT下改程序c:\masm>ABC若运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。
c:\masm>DEBUG ABC.exe手写源程序图 1-1 汇编语言上机操作流程汇编语言程序举例例1:将BL寄存器的内容按二进制形式显示出来。
设:(BL)=01010011B分析:采用2号功能调用,分别输出30 31 30 31 30 30 31 31显示:01010011参考程序:CODE SEGMENTASSUME CS: CODESTART:MOV CX ,8 ;显示字符个数为8MOV BL ,53HNEXT:SHL BL ,1 ;将显示位移至CF中JC ONE ;CF=1?MOV DL ,30H ;CF=0,将0的ASCII放在DL中JMP EXITONE:MOV DL ,31H ;CF=1,将1的ASCII放在DL中EXIT:MOV AH ,2INT 21H ;调用DOS功能显示DEC CX ;循环次数减1JNZ NEXT ;判断是否结束MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START上机操作:c:\masm>EDIT ShowBL.asm ;编辑源程序c:\masm>MASM ShowBL ;汇编成ShowBL.objMicrosoft (R) Macro Assembler Version 5.10Copyright (C) Microsoft Corp 1981,1988. All rights reserved.48912 + 447243 Bytes symbol space free0 Warning Errors0 Severe Errorsc:\masm>LINK ShowBL ;连接成ShowBL.exeMicrosoft (R) Overlay Linker Version 3.61Copyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segmentc:\masm>ShowBL ;装载并执行ShowBL.exe 01010011 ;屏幕显示c:\masm>-在DEBUG下查看ShowBL.exe的装入情况:c:\masm>DEBUG ShowBL.exe- R ;查看当前寄存器内容AX=0000 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B51 ES=0B51 SS=0B61 CS=0B61 IP=0000 NV UP EI PL NZ NA PO NC B353 MOV BL,53- U CS:0 ;查看程序0B61:0000 B353 MOV BL,530B61:0002 B90800 MOV CX,00080B61:0005 D0E3 SHL BL,10B61:0007 7205 JB 000E…….0B61:0017 B44C MOV AH,4C0B61:0019 CD21 INT 21…….-G ;执行程序01010011Program terminated normally-例2:将某段中的字符串“Hello!”传送到另一段中。
汇编语言程序设计上机实验报告(实验三)-循环程序设计

2、学习应用了循环指令并了解了其特点:
A、循环指令不影响标志位
B、其功能为使寄存器CX的值减1,如果结果不等于0,则循环
至标号,否则顺序执行。
程序1:
data segment
input1 db ' please input your numbers:',0dh,0ah,'$'
input2 db 'the binary number is :',0dh,0ah,'$'
input3 db ' your data is wrong,please input again:',0dh,0ah,'$'
enter db 0dh,0ah,'$'
data ends
code segment
汇编语言程序设计上机实验报告(实验三)
一、实验题目、内容及要求:
题目:循环程序设计
内容:编写一程序,要求从键盘接收一个4位十六进制数,在终端上显示与它等值的二进制数。
要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。本实验要求在EDIT下编写完整的汇编语言程并生成可执行文件运行。
or bl,al
jmp Again
remind:mov ah,09h
lea dx, input3
int 21h
jmp back
stmov:mov ah,09h
lea dx,enter
int 21h
lea dx, input2
int 21h
mov cx,10h
clc
loopst:mov al,30h
汇编上机实验报告心得体会

汇编语言程序设计第一次上机作业1.从键盘上接受一个字符,找出他的前导字符和后继字符,按顺序显示这三个字符。
寄存器分配: AL :存输入值x DL :输出显示 流程图:如右图所示 DA TA SEGMENTA DB 0DA TA ENDSSTACK SEGMENT STACKDB 200 DUP(0) STACK ENDSCODE SEGMENT ASSUME DS:DA TA,SS:STACK,CS:CODE S: MOV AX,DA TAMOV DS,AX MOV AH,1INT 21H INC AL MOV DL,AL MOV AH,2 INT 21HDEC ALMOV DL,AL MOV AH,2 INT 21H DEC AL MOV DL,AL MOV AH,2 INT 21H CODE ENDS END S2.从键盘上输入一个数字字符,如不是,显示‘not odd ’,否则显示‘odd ’。
寄存器分配: AL :存输入值x DL :输出显示流程图:如右图所示 程序代码如下:DA TA SEGMENT A DB 0BUF DB,'NOT ODD$' EA DB,'ODD$' DA TA ENDSSTACK SEGMENT STACK DB 200 DUP(0) STACK ENDSCODE SEGMENTASSUME DS:DA TA,SS:STACK,CS:CODE S: MOV AX,DA TA MOV DS,AX MOV AH,1 INT 21H CMP AL,'0' JNGE B CMP AL,'9' JGE B LEA DX,EA MOV AH,9 INT 21H JMP CB: LEA DX,BUF MOV AH,9 INT 21HC: MOV AH,4CH INT 21H CODE ENDS END S第二次上机作业1.将以H为首地址的字节存储区中的技能被3整除又能被13整除的无符号整数的个数(假定<=9)显示出来;同时对应的显示它们分别对应的地址偏移量。
汇编上机实验报告

汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。
实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。
程序运行正常,输出结果与预期一致。
实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
第三次汇编上机作业

微机原理上机实验报告(三)
班级:学号:姓名:
实验目的
(1)掌握比较指令、转移指令在分支程序设计中的使用方法。
(2)掌握分支结构程序的组成。
(3)掌握分支程序的设计、调试方法。
(4)熟悉DOS软中断及系统功能调用。
实验内容
从键盘上输入0-10之间的三个数字,比较其大小,完成三个数从大到小排序。
数的输入写了一个过程,把输入的三个数分别存入缓冲区。
输出显示也写了一个过程,先显示提示,然后按照从大到小的顺序输入显示缓冲区的三个数字。
提示:1.请用字母按键上方的键盘输入数字(不要使用键盘右侧的小键盘键入),以防程序运行错误。
2.输入的三个数字,分别放入AL、BL和CL中。
实验要求
请画出该分支程序排序过程的流程图,并且完善空白部分的源程序并补充分号后面的注释内容。
实验数据及结果
1.该分支程序排序过程的流程图
2.完整的程序源代码以及补充分号后面的注释内容:
3.程序输入数值以及运行程序后显示的结果:
实验过程中所遇到的问题及解决办法。
汇编语言程序上机实验

设置断点
在需要调试的代码行设置断点,以便在程 序运行时暂停执行。
分析程序的输出结果
运行可执行文件
在实验环境中运行可执行文件,观察 程序的输出结果。
分析结果
根据程序的输出结果,分析程序的逻 辑和功能是否正确实现。如果输出结 果与预期不符,检查源代码和调试过 程,找出问题所在并进行修正。
04
实验内容
根据实验需求选择合适的硬件设备是实验成功的关键,需要 考虑设备的性能、兼容性和可扩展性等因素。
03
实验步骤
编写汇编语言源代码
确定实验题目和要求
根据实验指导书的要求,明确实验目的和任务,确定需要编写的 汇编语言程序。
编写代码
使用汇编语言编写源代码,实现程序的功能。注意语法和指令的 正确性,确保程序逻辑正确。
编写一个简单的汇编语言程序
总结词
了解汇编语言的基本语法和结构
详细描述
编写一个简单的汇编语言程序,如输出“Hello, World!”的程序,了解汇编语言的指令、寄存器、数据和程序结 构等基本概念。
实现一个简单的计算器程序
总结词
掌握汇编语言的算术运算指令
详细描述
编写一个可以进行加、减、乘、除运 算的简单计算器程序,通过汇编语言 的算术指令实现。
了解汇编语言程序的 基本结构,如程序头、 数据段、代码段等。
熟悉子程序和中断服 务程序的编写和使用。
掌握汇编语言程序的 流程控制结构,如顺 序、分支、循环等。
掌握汇编语言的程序调试方法
熟悉汇编语言程序的调试工具, 如调试器、反汇编器等。
掌握调试工具的基本使用方法, 如设置断点、单步执行、查看 寄存器值等。
调试程序并运行可执行文件
打开调试器
微机原理汇编语言的上机过程 实验报告

微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。
实验原理及操作步骤一、上机环境❖要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程❖汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序❖用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
❖无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编❖用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
❖汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。
❖汇编过程如下:❖在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。
❖此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。
Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。
如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。
此时,需要进行修改,然后再进行汇编。
❖如此进行,直至汇编无错误,得到目标文件为止。
3.连接❖汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
汇编实验报告

汇编实验报告一、实验目的本次汇编实验的主要目的是深入理解计算机底层的工作原理,掌握汇编语言的基本语法和编程技巧,能够运用汇编语言编写简单的程序来实现特定的功能。
通过实践操作,提高对计算机体系结构的认识,培养解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 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)。
第三次上机实验报告时间:2013/4/26,18:30-21:30地点:南一楼803室实验人员:王涛一、题目输入一组有符号字数据。
对该组数进行排序,按照从大到小的顺序以用户指定的进制形式输出排序后的结果。
运行时:Please input numbers:123 0 -100 -50 300 25↙Output Format (1: decimal; 2 :hex; 3: Octal) : 1↙300,123,25,0,-50,-100运行时:Please input numbers:123 0 -100 -50 300 25 ↙Output Format (1: decimal; 2 :hex; 3: Octal ) : 2↙12CH,7BH,19H,-32H,-64H二、要求:(1) 画出程序流程图,给出寄存器、存储单元的分配方法,子程序的功能、入口参数及出口参数(对于各个子程序,也要说明其寄存器、存储单元的分配情况。
在流程图中也列出相应子程序的名称)。
(2) “数字串到字数据的转换”用子程序实现。
要求:该子程序只实现一个数字串的转换。
对于多个数字串,要多次调用该子程序。
(可以借鉴教材中的示例,注意每个模块前都应该加上“.386”)。
对于非数字串,以及超过一个字大小的数字串应给出提示。
(3)“排序”使用子程序实现。
(4) “数值数据到串的转换”用子程序实现。
要求该子程序只实现一个数值数据的转换。
(5) 输入时,数字串之间的分割符可以是一个空格,也可以是一个标点符号(如逗号),数字串前可有一个正号或负号。
输出时,数字串之间的分割符号为一个逗号加上一个空格。
(6) 观察执行CALL指令时,堆栈的变化,以及IP、CS的变化。
(7) 掌握跟踪进入子程序的方法。
(8) 定义宏并使用宏指令,观察宏扩展后的结果。
(9) 采用模块化程序的方法设计该程序。
(10)写下必要的设计文档可以帮助我们理清思路,减少写程序时的错误;(11)同学们可以相互讨论算法思想,理清思路;(12)可以先不用子程序来实现程序的功能,然后再改写成子程序,最后拆分到不同模块;(13)在源程序中加上适当的注释。
三、寄存器和存储单元分配和说明AX——中间寄存器。
BX——往ARR字存储区送数指针,初值为ARR。
CX——作以逗号分隔的一个十进制数字串长度计数器,初值为0。
DX——按系统功能调用的规定使用。
DI——往BUF字节存储区送输入的字符指针,初值为BUF。
SI——调用F10T2子模块的入口参数,作从BUF区取字符指针。
BUF——输入缓冲区首址。
ARR——经转换得到的二进制数组存储区首址。
COUNT——ARR存储区中数组元素个数计数器,初值为0。
SIGN——输入字符串处理结束标志,1—处理结束,0—处理未结束。
四、程序流程图子模块F2TN流程图:五、源代码NAME MAINEXTRN F10T2:NEAR ,F2T10:NEAR ,QUEUE:NEARIF1INCLUDE MACRO.LIB ;将宏汇编在第一次扫描时加入一起回汇编ENDIF.386DA TA SEGMENT USE16 PARA PUBLIC 'DATA'BUF D B 8 DUP(0) ;输入一个十进制数字串存储区ARR DB 32 DUP(0) ;转换后的二进制数组存储区SIGN DB 0 ;标记是否输入完0:未输完,1:输完COUNT DW 0 ;转换后的二进制数组元素个数计数器ERROR DB 'IS ILLEGAL DIGIT!$'INPUT1 DB 'Please Input Numbers:$'INPUT2 DB 'Output Format (1:decimal; 2:hex; 3:Octal):$'DA TA ENDSSTACK0 <200 DUP(0)>CODE SEGMENT USE16 PARA PUBLIC 'CODE'ASSUME DS:DA TA, ES:DATA, CS:CODE, SS:STACKSTART: MOV AX, DATAMOV DS, AXMOV ES, AXLEA B X, ARR ;数组首址ARR->BXMOV COUNT, 0MOV SIGN, 0WRITE INPUT1BEG: LEA D I, BUF ;数字串存储区首址MOV CX, 0NEXT0: MOV AH, 1INT 21HCMP AL, ' ' ;输入数字用空格分隔JE DIGITCMP AL, 0DH ;判断是否为回车符JNE PCMP COUNT, 0JE EXITINC SIGN ;已全部输完,标识置1JMP DIGIT ;转digit调用F10T2子模块P: STOSBINC CXJMP NEXT0DIGIT: LEA S I, BUFMOV DX, 16CALL F10T2 ;调用F10T2子模块CMP SI, -1 ;判断是否有非法字符和溢出,转到ERR处JE ERRMOV [BX], AXADD BX, 2INC COUNTCMP SIGN, 1JE END0JMP BEGEND0: MOV CX, COUNTLEA S I, ARRMOV BP, 1 ;对有符号数置1CALL QUEUE ;调用QUEUE排序模块CRLF ;换行WRITE INPUT2 ;输出提示信息,MOV AH, 1 ;选择输出格式INT 21HSUB A L, '1'XOR AH, AHMOV CX, AXCRLF ;换行MOV BX, COUNT ;LEA S I, ARR ;待输出数组的首址送SIOUT2: MOV AX, [SI] ;取出一个待输出的数送到AXADD SI, 2MOV DX, 16CALL F2TN ;调用F2TN子模块,将AX按用户指定格式输出OUT1 ' ' ;输出用空格分隔DEC BXJNE OUT2 ;未输完,转到OUT2继续JMP EXIT ;输完,到EXIT结束ERR: CRLFWRITE ERROR ;对非法操作输出错误提示EXIT: MOV AH, 4CHINT 21HCODE ENDSEND STARTNAME F10T2;功能:将十进制ASCII码转换成有符号的二进制数AX/EAX,可转换的16位数范围是-32767~+32767;入口参数:; SI——指向待转换的十进制ASCII码存储区首址; CX——存放该十进制ASCII码串的长度;出口参数:; EBX——中间寄存器; SIGN——正负数标记PUBLIC F10T2.386DA TA SEGMENT USE16 PARA PUBLIC 'DATA' SIGN DB ?DA TA ENDSCODE SEGMENT USE16 PARA PUBLIC 'CODE' ASSUME CS:CODE, DS:DA TAF10T2 PROCPUSH EBXMOV EAX, 0MOV SIGN, 0MOV BL, [SI]CMP BL, '+'JE F10CMP BL, '-'JNE NEXT2MOV SIGN, 1F10: DEC CXJZ ERRNEXT1: INC SIMOV BL, [SI]NEXT2: CMP BL, '0'JB ERRCMP BL, '9'JA ERRSUB B L, 30HMOVZX EBX, BLIMUL EAX, 10JO ERRADD EAX, EBXJO ERRJS ERRJC ERRDEC CXJNZ NEXT1CMP DX, 16JNE PP0CMP EAX, 7FFFHJA ERRPP0: CMP SIGN, 1JNE QQNEG EAXQQ: POP EBXRETERR: MOV SI, -1JMP QQF10T2 ENDPCODE ENDSENDNAME F2TN;功能:将AX/EAX中有符号二进制数换成N进制数,N有用户指定;入口参数:; AX/EAX——存放待转换二进制数; CX——存放用户要求的进制数的序号;出口参数:; BUF——; FROMAT——存放对用户输入要求转换的进制数; EAX——存放待转换的二进制数; EBX——存放要转换的进制数; SI——存放待转换的N进制数ASCII码数字串的字节缓冲区首址; DI——存放各种进制数内容区的首址; CX——N进制数计数器(在RADIX子程序中使用); EDX——按除法指令和系统功能调用的规定使用PUBLIC F2TN.386DA TA SEGMENT USE16 PARA PUBLIC 'DATA'BUF D B 12 DUP(?)FORMAT DB 10,16,8DA TA ENDSCODE SEGMENT USE16 PARA PUBLIC 'CODE' ASSUME CS:CODE, DS:DATAF2TN PROCPUSH EBXPUSH SIPUSH DILEA S I, BUFMOVSX EAX, AXOR EAX, EAXJNS PLUSNEG EAXMOV BYTE PTR [SI], '-'INC SIPLUS: LEA D I, OFFSET FORMA TADD DI, CXMOV BL, [DI]MOVZX EBX, BLCALL RADIXMOV BYTE PTR [SI], '$'LEA D X, BUFMOV AH, 9INT 21HPOP DIPOP SIPOP EBXRETF2TN ENDPRADIX PROCPUSH CXPUSH EDXXOR CX, CXLOP1: XOR EDX, EDXDIV EBXPUSH DXINC CXOR EAX, EAXJNZ LOP1LOP2: POP AXCMP AL, 10JB L1ADD AL, 7L1: ADD AL, 30HMOV [SI], ALINC SILOOP LOP2POP EDXPOP CXRETRADIX ENDPCODE ENDSENDNAME QUEUE;功能:将一组16位的有或无符号二进制数按从大到小顺序排列后存储在原来的区域,用冒泡排序;入口参数:; SI——从数组存储区取数指针,初值为该存储区首址; CX——待排序的数组元素个数; BP——有无符号排序的标识(BP=1为有符号数排序);所用寄存器:; DI——中间寄存器; AX——存放待比较数; DX——内循环计数器,CX为外循环计数器PUBLIC QUEUECODE SEGMENT USE16 PARA PUBLIC 'CODE' ASSUME CS:CODEQUEUE PROCPUSH AXPUSH DXPUSH DIMOV DI, SIDEC CX ;外循环计数器QU1: MOV DX, CX ;内循环计数器MOV SI, DIQU2: MOV AX, [SI]CMP BP, 0JE NOCMP AX, [SI+2] ;如果前一个数大于后一个数,则不交换JG NOXCHXCH: XCHG [SI+2], AXMOV [SI], AXNOXCH: ADD SI, 2DEC DXJNE QU2LOOP QU1POP DIPOP DXPOP AXRETNO: CMP AX, [SI+2]JBE NOXCHJMP XCHQUEUE ENDPCODE ENDSEND; MACRO.LIBWRITE MACRO ALEA D X,AMOV AH,9INT 21HENDMCRLF MACROMOV AH,2MOV DL,0AHINT 21HMOV DL,0DHINT 21HENDMOUT1 MACRO AMOV DL,AMOV AH,2INT 21HENDMSTACK0 MACRO ASTACK SEGMENT USE16 PARA STACK 'STACK'DB ASTACK ENDSENDM六、实验步骤1. 使用编辑程序TXT.EXE录入各个模块代码,存盘文件名分别为MAIN.ASM,F2TN.ASM,F10T2.ASM,QUEUE.ASM。