⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.txt

📁 微机实验二
💻 TXT
字号:
2.有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。

   编程要求及提示:

   [1] 参加排序的数据及个数由学生自己定义。

   [2] 要将排序前的数组和排序后的数组在屏幕上显示出来。

   [3] 实验步骤同内容一。

流程图:

       见图 2.

程序如下:

STACK   SEGMENT STACK

        DB 256 DUP(?)

STACK   ENDS

DATA    SEGMENT

DATA1   DW 4031H,3859H,0245H,1111H,0A231H,0FFFFH

STRING1 DB 'Original numbers:',0DH,0AH,'$'

STRING2 DB 'The numbers from large to small:',0DH,0AH,'$'

DATA    ENDS

CODE    SEGMENT

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

START:  MOV AX,DATA

        MOV DS,AX

        MOV ES,AX

        MOV AX,STACK

        MOV SS,AX

        LEA DX,STRING1                  ;显示人机交互提示

        MOV AH,09H

        INT 21H

        MOV CX,6    

        LEA SI,DATA1                    ;显示初始数据

L1:     MOV AX,[SI]

        ADD SI,2

        CALL DISPAX

        CALL DISPCR

        LOOP L1

        MOV CX,5

        LEA SI,DATA1

        ADD SI,10                       ;指针指向最后一个数据

LP1:    PUSH CX

        PUSH SI

LP2:    MOV AX,[SI]                     ;数据排序

        CMP AX,[SI-2]

        JBE NOXCHG  

        XCHG AX,[SI-2]                  ;交换操作

        MOV [SI],AX

NOXCHG: DEC SI                          ;不需排序时继续

        DEC SI

        LOOP LP2

        POP SI

        POP CX

        LOOP LP1

        LEA DX,STRING2                  ;显示字符串

        MOV AH,09H

        INT 21H

        MOV CX,6                        ;显示排好序后数据   

        LEA SI,DATA1

L2:     MOV AX,[SI]

        ADD SI,2

        CALL DISPAX

        CALL DISPCR

        LOOP L2

        MOV AH,4CH

        INT 21H

DISPAL  PROC                            ;显示AL内容子程序

        PUSH AX

        PUSH CX

        PUSH DX

    PUSH AX

        MOV CL,4                        ;处理高位十六进制数

        SHR AL,CL

        CALL CHANG

        MOV AH,02H

        MOV DL,AL

        INT 21H                         ;显示一位字符

POP AX  

        AND AX,0FH                      ;处理低位十六进制数

        CALL CHANG

        MOV AH,02H

        MOV DL,AL

        INT 21H

        POP DX

        POP CX

        POP AX

        RET

DISPAL  ENDP

CHANG   PROC                            ;十六进制数转换为ASCII码

        CMP AL,10

        JNGE CHANG1

        ADD AL,7

CHANG1: ADD AL,30H

        RET

CHANG   ENDP    

DISPAX  PROC                            ;显示AX内容子程序

        XCHG AL,AH

        CALL DISPAL

        XCHG AH,AL

        CALL DISPAL

        RET

DISPAX  ENDP

DISPCR  PROC                            ;回车换行子程序

        PUSH AX

        PUSH DX

        MOV AH,2

        MOV DL,0AH

        INT 21H

        MOV AH,2

        MOV DL,0DH

        INT 21H

        POP DX

        POP AX

        RET

DISPCR  ENDP

CODE    ENDS

        END START


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -