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

程序要求:

  先输入一个数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
时间: 2024-08-10 21:29:10

03_汇编语言(n个数找最大值)的相关文章

C#实战--三个数找最大值(4种方法)

using System; using System.Collections.Generic; using System.Linq; using System.Text; /* * 编一个程序 * 从键盘上输入三个数 * 用三元运算符(? :)把最大数找出来. */ namespace PI { class Program { static void Main(string[] args) { Int32 var_a, var_b, var_c,max; var_a = int.Parse(Co

找最大值算法(面试题)

/*找最大值算法 * 1.假设第一个数为最大值 * int max = arr[0]; * 2.遍历剩余元素,用剩余元素与max对比,若剩余元素大于max,则修改max值为较大的 * for(int i=1;i<arr.length;i++){ * if(arr[i]>max){ * max=arr[i]; * } * } * */ import java.util.Arrays; public class MaxOfArray { public static void main(String

三数中找最大值

static void Main11三数中找最大值(string[] args) { //1.输入三个数,找出最大的输出 Console.WriteLine("请输入第一个数"); int a = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入第二个数"); int b = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("

&lt;15&gt;【掌握】一维数组的存储方式+【掌握】一维数组长度计算方法+【了解】一维数组元素地址+【掌握】一维数组长度计算方法 +【掌握】一维数组的越界问题+【掌握】应用:找最大值

[掌握]一维数组的存储方式 存储方式: 1)分配一块连续的存储空间 2)数组名称代表数组的首地址,从首地址开始,依此存入数组的第一个,第二个...第n个元素 3)每个元素占用相同的字节数(取决于数组类型) 4)元素之间的地址说连续. [了解]一维数组元素地址 #include <stdio.h> int main(int argc, const char * argv[]) { //定义两个数组 int x[]={1,2}; char ca[5]={'a','B','C','D','E'};

Greedy Sequence(主席树-区间小于每个数的最大值)

You're given a permutation aaa of length nnn (1≤n≤1051 \le n \le 10^51≤n≤105). For each i∈[1,n]i \in [1,n]i∈[1,n], construct a sequence sis_isi? by the following rules: si[1]=is_i[1]=isi?[1]=i; The length of sis_isi? is nnn, and for each j∈[2,n]j \in

求N!末尾的0的个数--找规律+递归

0\'s Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 计算整数n!(n的阶乘)末尾有多少个0. 输入 第一行输入一个数T代表测试数据个数(T<=20).接下来T行每行1个数代表n(0<=n< 2^31). 输出 对于每个测试数据输n!末尾有多少个0,每行输出一个结果. 示例输入 3 1 5 10 示例输出 0 1 2 提示 中国海洋大学第三届"朗讯杯"编程比赛高级组试题 声明(摘抄至某前辈)--

简单代码 //输入三个数求最大值.

static void Main(){  //输入三个数求最大值.    string answar = "y";  while (answar=="y"||answar=="Y")  {    int x,y,z,max;   Console.WriteLine("请输入第一个数:");   x = int.Parse(Console.ReadLine());   Console.WriteLine("请输入第二个

四个数求最大值

/* ============================================================================ Name : max4.c Author : zhangsan Version : Copyright : Your copyright notice Description : 四个数求最大值 ========================================================================

在四个数中找最大值和最大值

// // Copyright (C) 2014软件1班 // All rights reseved. // 作 者:A36 黄阿德 // 完成日期:2014年12月4日 // // 问题描述:创建一个程序找四个数的最小值和最大值,然后输出 // 输入描述:输入四个实数 // 输出描述:两个数,最小值和最大值 // using System; using System.Collections.Generic; using System.Linq; using System.Text; using