码迷,mamicode.com
首页 > 编程语言 > 详细

03_汇编语言(n个数找最大值)

时间:2015-04-21 22:00:38      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

程序要求:

  先输入一个数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

 

03_汇编语言(n个数找最大值)

标签:

原文地址:http://www.cnblogs.com/ruo-yu/p/4445476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!