汇编语言程序设计:从键盘上输入20个有符号数,将他们排序并在屏幕上显示

这篇博客介绍了一个汇编语言程序,用于从键盘接收20个(或更少)有符号整数,对它们进行排序,并在屏幕上显示排序结果。程序首先展示提示信息,然后接收用户输入,检查输入合法性,接着进行数字计数、ASCII到十进制的转换、冒泡排序以及将排序后的二进制数转换为ASCII显示。
摘要由CSDN通过智能技术生成

【源程序】

DATA    SEGMENT

        NOTE0   DB 'Note: The character that separates the integers can be any visible ASCII except ten digits(',27H,'0',27H,'-',27H,'9',27H,').',0DH,0AH,'$'

        NOTE1   DB 0DH,0AH,'==================================================================',0DH,0AH

                DB 'Please input 20 (or less) decimal integers (-32768 to +32767):',0DH,0AH,'$'

        NOTE2   DB 0DH,0AH,'==================================================================',0DH,0AH

                DB 0DH,0AH,'The inputed integers: ','$'

        NOTE3   DB 0DH,0AH,'==================================================================',0DH,0AH

                DB 0DH,0AH,'How many decimal integers? $'

        NOTE4   DB 0DH,0AH,'The sorted result: ',0DH,0AH,'$'

        ERR_STR DB 0DH,0AH,'******************************************************************',0DH,0AH

                DB 'Input error!',0DH,0AH

        CON_STR DB 0DH,0AH,'******************************************************************',0DH,0AH

                DB 0DH,0AH,'Continue? Y or N?','$'

        DEC_STR DB 200                                    ;用来存放输入的原始数据

              DB ?

                DB 150 DUP('$')

        TOTAL   DB 3 DUP('$')                                  ;用来记录输入的数字个数

        DEC_NUM DW 30 DUP(?)                             ;用来存放将输入的ASCII码转换成2进制数以便比较的结果

        OUT_STR DB 150 DUP('$')                              ;存放待输出的字符组信息

DATA    ENDS

 

STACK   SEGMENT STACK

        STT     DB 100 DUP(?)                                 ;堆栈

STACK   ENDS

 

CODE    SEGMENT

MAIN    PROC FAR

        ASSUME CS:CODE,DS:DATA,SS:STACK

START:  MOV      AX,STACK

       MOV      SS,AX

       MOV      AX,DATA

       MOV      DS,AX

;----------------------------------                           输出提示信息

        LEA     DX,NOTE0          

        MOV     AH,09H

        INT     21H

 

DISP0:  LEA     DX,NOTE1

        MOV     AH,09H

        INT     21H

 

        LEA     DX,DEC_STR                             ;将原始数据存入该空间

       MOV      AH,0AH

       INT   21H

 

        MOV     AL,BYTE PTR[DEC_STR+2]                            ;输入合法性的标志:开头是数字或者符号

        CMP     AL ,'0'

        JAE     CMP1

        CMP     AL ,'+'

        JE      DISP2

        CMP     AL ,'-'

        JE      DISP2

        JMP     DISP1

CMP1:   CMP     AL ,'9'

        JBE     DISP2

DISP1:  LEA     DX,ERR_STR

        MOV     AH,09H

        INT     21H

CON_YN: MOV     AH,01H                                      ;程序结束处询问是否需要继续

        INT     21H

        CMP     AL,'Y'

        JE      DISP0

        CMP     AL ,'y'

        JE      DISP0

        CMP     AL ,'N'

        JE      OVER0

好的,我可以帮你解答这个问题。下面是一个示例程序,它可以实现你所需的功能: ```java import java.util.Arrays; import javax.swing.*; public class SortArrayGUI { public static void main(String[] args) { // 创建一个文本框,用于输入组元素 JTextArea inputTextArea = new JTextArea(10, 20); inputTextArea.setLineWrap(true); JScrollPane inputScrollPane = new JScrollPane(inputTextArea); // 创建一个按钮,用于触发排序操作 JButton sortButton = new JButton("Sort"); // 创建一个文本框,用于输出排序结果 JTextArea outputTextArea = new JTextArea(10, 20); outputTextArea.setEditable(false); JScrollPane outputScrollPane = new JScrollPane(outputTextArea); // 创建一个面板,用于放置输入组件和输出组件 JPanel panel = new JPanel(); panel.add(inputScrollPane); panel.add(sortButton); panel.add(outputScrollPane); // 创建一个窗口,用于显示面板 JFrame frame = new JFrame("Sort Array GUI"); frame.setContentPane(panel); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); // 给按钮添加监听器,实现排序操作 sortButton.addActionListener(event -> { // 从文本框中读取输入组元素 String[] inputStrings = inputTextArea.getText().split("\\s+"); int[] inputArray = new int[inputStrings.length]; for (int i = 0; i < inputStrings.length; i++) { inputArray[i] = Integer.parseInt(inputStrings[i]); } // 对组进行排序 Arrays.sort(inputArray); // 将排序结果输出到文本框中 outputTextArea.setText(""); for (int i = 0; i < inputArray.length; i++) { outputTextArea.append(String.format("%d ", inputArray[i])); if ((i + 1) % 4 == 0) { outputTextArea.append("\n"); } } }); } } ``` 这是一个基于 Swing 的 GUI 程序,它包含一个文本框用于输入组元素,一个按钮用于触发排序操作,和一个文本框用于输出排序结果。当用户点击“Sort”按钮时,程序将从输入文本框中读取组元素,对组进行排序,然后将排序结果输出到输出文本框中。排序结果每行显示 4 个,以满足你的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值