编写一个汇编语言程序,实现先输入一个0-100的数N,然后输入N个数,以回车结束每个数字并显示在屏幕上,再将未排序前和从小到大排序后的结果显示在屏幕上。实验结果应达到如下的一个界面: 本次汇编语言程序设计要求的是对n个数进行排序,首先我们要定义程序结果的那些字符串以及这个n个数的一个数组。同时我们应该设置一个堆栈段来实现数的显示。 接着我们可是程序的正式开始部分,我们通过9号调用来输出我们所要展示的字符串,然后用换行符来换行,接着我们输入数字n,循环输入数字的每一位并显示出来,然后将数字n保存在cx里面。这其中应该通过1号调用程序来实现数字的回显。 然后我们要从低位到高位,把数字n进行压栈操作,保留这个数字的一个顺序之后再出栈来显示出这个数字n。再通过把数字n放在cx里面,可以作为后面循环输入n个数字的一个loop的次数。 接着我们通过输入n个data并保存在数组array里面。data的输入和输出和前面的n是一样的道理。最后我们通过冒泡排序对这个顺序来重排,而冒泡排序采用的是是书上的例题的程序,使用的是一种双重循环的方法。 最后我们再通过排序后的这样一个数组输出,输出的方法也是和前面的方法是大致相同的。
实验内容

实验过程
实验结果演示:

附上代码:
DATAS SEGMENT  S1 db 'How many data to input?(less than equal to 100)','$'  S2 db 'Input ','$'  S3 db ' data,press[Enter] after input each data.','$'  S4 db 'Before sorting:','$'  S5 db 'After sorted:','$'  array dw 100 dup(?)  DATAS ENDS  STACKS SEGMENT      stack db 100h dup(?) STACKS ENDS  CODES SEGMENT     ASSUME CS:CODES,DS:DATAS,SS:STACKS START:     MOV AX,DATAS     MOV DS,AX     XOR CX,CX     MOV DX,OFFSET S1     MOV AH,09H     INT 21H;9号调用 输出字符串S1          MOV DL,0AH;换行符     MOV AH,02H;2号调用 DL等于输出字符  INT 21H  MOV DL,10   L1:;(循环)输入数字n并显示 数字n保存在CX(可以loop)  MOV AH,1;1号调用 键盘输入回显 AL=输入字符  INT 21H  CMP AL,0DH;与回车比较(0AH是换行)  je L2;回车则跳L2  SUB AL,30H  AND AX,00FFH;AH清0 AL不变  MOV BX,AX  MOV AX,CX  MUL DL;8位乘法 AX<- AL*DL 十位数乘10   ADD AX,BX;十位加个位  MOV CX,AX;先把n保存到CX AX用来调用  CMP BL,0DH  JNZ L1    L2:  MOV DL,0AH  MOV AH,02H;2号调用 DL等于输出字符  INT 21H  MOV DX,OFFSET S2;  MOV AH,09H  INT 21H;9号调用 输出字符串S2  MOV AX,CX    MOV BH,10  MOV BL,0  XOR DX,DX  L3:;从低位到高位 把n压栈  DIV BH;AL<-AX/BH AH<-AX%BH  MOV DL,AH  ADD DX,30H  PUSH DX  INC BL;BL计数n的位数  AND AX,00FFH  CMP AL,0  JNZ L3   L4:;输出n  POP DX  MOV AH,02H;二号调用显示n  INT 21H  DEC BL  CMP BL,0  JNZ L4    MOV DX,OFFSET S3  MOV AH,09H  INT 21H  MOV DL,0AH  MOV AH,02H  INT 21H    MOV SI,0  MOV DI,10  XOR DX,DX   L6:;(循环)输入一个data  MOV AH,01H  INT 21H  CMP AL,0DH  JE L7  SUB AL,30H  AND AX,00FFH  MOV BX,AX  MOV AX,DX  MUL DI  ADD AX,BX  MOV DX,AX  CMP BL,0DH  JNE L6   L7:;输入n个data保存在数组内  MOV array[SI],DX  ADD SI,2  MOV DL,0AH  MOV AH,02H  INT 21H  XOR DX,DX  LOOP L6    MOV DX,OFFSET S4  MOV AH,09H;输出S4  INT 21H  SHR SI,1;SI/2  MOV CX,SI  MOV SI,0   L8:  MOV AX,array[SI]  MOV BH,10   MOV BL,0  XOR DX,DX   L9:;把1个data(循环)压栈,BL计数位数  DIV BH;AL<-AX/BH AH<-AX%BH  mov DL,AH  ADD DX,30H  PUSH DX  INC BL  AND AX,00FFH  CMP AL,0  JNZ L9   L10:;把一个data(循环)出栈  POP DX  MOV AH,02H  INT 21H  DEC BL  CMP BL,0  JNZ L10    MOV DL,32  MOV AH,02H  INT 21H  ADD SI,2  LOOP L8    MOV DL,0AH  MOV AH,02H  INT 21H   sort:;冒泡排序  SHR SI,1  MOV DX,SI  MOV CX,SI  DEC CX loop1:     mov di,cx     mov bx,0 loop2:     mov ax,array[bx]     cmp ax,array[bx+2]     jle continue     xchg ax,array[bx+2]     mov array[bx],ax continue:     add bx,2     loop loop2     mov cx,di     loop loop1    MOV CX,DX  MOV SI,0  MOV DX,OFFSET S5  MOV AH,09H  INT 21H   L11:;排序后输出  MOV AX,array[SI]  MOV BH,10  MOV BL,0  XOR DX,DX L12:  DIV BH  MOV DL,AH  ADD DX,30H  PUSH DX  INC BL  AND AX,00FFH  CMP AL,0  JNZ L12 L13:  POP DX  MOV AH,2  INT 21H  DEC BL  CMP BL,0  JNZ L13  MOV DL,32  MOV AH,02H  INT 21H  ADD SI,2  LOOP L11           MOV AH,4CH     INT 21H CODES ENDS     END START 
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)