当前位置:编程学习 > 汇编语言 >>

汇编语言程序设计 几个数找最大的一个

答案:;动态输入五个数,冒泡排序,输出 DATAS SEGMENT MESS1 DB 'Pealse input five numbers:$' MESS2 DB 0AH,0DH,'Frome minor to maximum:$' X DW 5 DUP(?) Y DW ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV AH,9 MOV DX,OFFSET MESS1 INT 21H MOV CX,5 ;可输入五个数 LEA SI,X LET0: MOV BX,0 LET1: ;输入十进制数,空格结束一个数的输入,保存到BX MOV AH,1 INT 21H SUB AL,30H JL LET2 CMP AL,9H JG LET2 CBW XCHG AX,BX MOV DX,10 MUL DX XCHG AX,BX ADD BX,AX JMP LET1 MOV AH,4CH INT 21H LET2: MOV [SI],BX ;把BX中的数存入X存储单元 ADD SI,2 LOOP LET0 MOV CX,5 ;冒泡排序 DEC CX LOOP1: PUSH CX ;保存外循环次数 LEA SI,X LOOP2: MOV AX,[SI] CMP AX,[SI+2] JLE NEXT ;升序 XCHG AX,[SI+2] ;交换 MOV [SI],AX NEXT:ADD SI,2 ;SI指向下一个数 LOOP LOOP2 POP CX LOOP LOOP1 MOV AH,9 ;输出排好序的十进制数 MOV DX,OFFSET MESS2 INT 21H LEA SI,X MOV BX,0 MOV CX,5 LET3: MOV BX,[SI] ;取出X中的数存入BX中 MOV Y,CX ;保护CX,保证循环五次,输出五个数字 MOV AX,BX MOV CX,0 MOV BX,10 LET4: MOV DX,0 INC CX IDIV BX ;商存入AX,余数存入DX PUSH DX ;保存余数 CMP AX,0 JNZ LET4 LET5: POP AX ;取出余数,放入AX ADD AX,0030H MOV DL,AL MOV AH,2 INT 21H LOOP LET5 MOV AH,2 MOV DL,' ' INT 21H ADD SI,2 MOV CX,Y LOOP LET3 MOV AH,4CH INT 21H CODES ENDS END START

上一个:在汇编语言程序中,用于指示汇编程序如何汇编的指令是什么?
下一个:基于汇编语言的万年历程序

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,