80x86 汇编语言编程:排序与显示

来源:互联网 发布:mv -r linux 编辑:程序博客网 时间:2024/06/05 17:21


编写完整的汇编语言源程序。


对任意给定的十个无符号数按由大到小排序,并把排序结果在显示器上显示。


要求用简化的段定义结构,采用子程序设计方法。谢谢 急求 !!!


题目链接:http://zhidao.baidu.com/question/583620100


做而论道编程如下:   2013-08-22 10:53 



.MODEL   SMALL

.STACK   200H


.DATA

    NUM1 DW   123, 12666, 1, 8, 3, 38, 28, 83, 178, 12


.CODE

START:

    MOV   AX, @DATA

    MOV   DS, AX


    LEA   SI, NUM1

    MOV   DI, 506H     ;显示屏的偏移地址

    MOV   CX, 10       ;数据段的10个数据

    CALL  DISP


    LEA   SI, NUM1

    MOV   CX, 10       ;数据段的10个数据

    CALL  SORT


    LEA   SI, NUM1

    MOV   DI, 646H     ;显示屏的偏移地址

    MOV   CX, 10       ;数据段的10个数据

    CALL  DISP


    MOV   AX, 4C00H

    INT   21H

;-----------------------------------

SORT:

    DEC   CX

S0: PUSH  CX

    MOV   DI, SI

S1: MOV   AX, [DI]

    CMP   AX, [DI + 2]

    JB    S2

    XCHG  AX, [DI + 2]

    MOV   [DI], AX

S2: ADD   DI, 2

    LOOP  S1

    POP   CX

    LOOP  S0

    RET

;-----------------------------------

DISP:

    PUSH  CX     

    CALL  DTOC         ;调用函数,在显示屏显示

    ADD   SI, 2

    ADD   DI, 2        ;指向下一个显示位置

    POP   CX

    LOOP  DISP

    RET

;-----------------------------------

DTOC:

    MOV   AX, [SI]

    MOV   BX, 10

    MOV   CX, 0

D_LOOP1:

    SUB   DX, DX       ;DX清零

    DIV   BX

    PUSH  DX

    INC   CX

    CMP   AX, 0

    JNZ   D_LOOP1

    MOV   AH, 2

D_LOOP2:

    POP   DX

    CALL  SHOW_STR     ;调用显示子程序

    LOOP  D_LOOP2

    RET

;-----------------------------------

SHOW_STR:              ;显示

    MOV   BX, 0B800H

    MOV   ES, BX

    ADD   DX, 4A30H    ;化为ASCII码

    MOV   ES:[DI], DX

    ADD   DI, 2        ;指向下一个显示位置

    RET

;-----------------------------------

END   START



本程序使用了简化的段定义结构,子程序设计方法。



做而论道编写的程序,可以满足题目的要求。


但是,做而论道所写的显示部分,有些特别。


提问者不太理解,所以,也就一直不采纳答案。


0 0
原创粉丝点击