标签:
程序要求:
先输入一个数n(0<n<=100),再输入n个无符号数K(0<=K<=65535),找出这n个数的最大值并输出
测试实例保证输入每个数之后,都会以回车结束
代码:
1 ;程序要求:先输入一个数n(0<n<=100),再输入n个无符号数K(0<=K<=65535),找出这n个数的最大值并输出 2 ;实例保证输入的每个数都以回车结束 3 4 STACK SEGMENT STACK ‘STACK‘ 5 STAK DW 256 DUP(?) 6 STACK ENDS 7 8 DATA SEGMENT 9 MAX_NUM DW ? 10 DATA ENDS 11 12 CODE SEGMENT 13 ASSUME CS:CODE,DS:DATA,SS:STACK 14 MAIN PROC 15 START: MOV AX,DATA 16 MOV DS,AX 17 CALL INPUT 18 MOV CX,BX ;循环次数为BX,赋值给CX 19 XOR AX,AX ;AX置0,保存最大值 20 NEXT_L: CALL INPUT 21 CMP AX,BX 22 JA JUMP 23 MOV AX,BX 24 JUMP: LOOP NEXT_L 25 MOV MAX_NUM,AX 26 MOV BX,MAX_NUM 27 CALL OUTPUT 28 MOV AH,4CH 29 INT 21H 30 MAIN ENDP 31 32 INPUT PROC ;入口参数:无 出口参数:BX(因此不能超过65535) 33 PUSH AX 34 PUSH CX 35 PUSH DX 36 PUSH SI ;保存乘数 37 XOR BX,BX 38 XOR CX,CX 39 XOR DX,DX 40 MOV SI,10 41 NEXT: MOV AH,01 42 INT 21H ;接收键盘的数字 43 CMP AL,0DH ;判断是否是回车 44 JZ DONE ;JZ:等于则跳转 45 CMP AL,‘0‘ 46 JB ERROR1 ;JB:小于则跳转 47 CMP AL,‘9‘ 48 JA ERROR1 ;JA:大于则跳转 49 SUB AL,30H ;将ASCII码字符变为对应的数字 50 MOV CL,AL 51 MOV AX,BX 52 MUL SI 53 ADD AX,CX 54 MOV BX,AX 55 JMP NEXT ;继续接收下一个数据 56 ERROR1: MOV BX,0FFFFH 57 JMP EXIT 58 DONE: MOV DL,0AH 59 MOV AH,02 60 INT 21H ;输出回车 61 MOV DL,0DH 62 MOV AH,02 63 INT 21H 64 EXIT: POP SI 65 POP DX 66 POP CX 67 POP AX 68 RET ;子程序返回 69 INPUT ENDP 70 71 OUTPUT PROC NEAR ;入口参数:BX 出口参数:无 72 PUSH AX ;保护寄存器 73 PUSH BX 74 PUSH CX 75 PUSH DX 76 PUSH SI 77 MOV SI,10 ;SI中是除数 78 XOR CX,CX 79 MOV AX,BX ;入口参数在BX中 80 NEXT1: MOV DX,0 ;DX存放余数,清零 81 DIV SI ;AX和DX组成的32位除以16位的SI,商保存在AX中,余数保存在DX中 82 PUSH DX 83 INC CX ;CX++,CX记录有多少位 84 CMP AX,0 85 JNZ NEXT1 ;JNZ 不等于则跳转 86 OUTP: POP DX ;余数出栈 87 ADD DL,30H 88 MOV AH,2 89 INT 21H 90 LOOP OUTP 91 POP SI ;恢复寄存器 92 POP DX 93 POP CX 94 POP BX 95 POP AX 96 RET ;子程序返回 97 OUTPUT ENDP 98 CODE ENDS 99 END START
标签:
原文地址:http://www.cnblogs.com/ruo-yu/p/4445476.html