Assembly 在x86 MASM中将代码转换为过程

Assembly 在x86 MASM中将代码转换为过程,assembly,procedure,masm,Assembly,Procedure,Masm,我有一个x86 MASM汇编语言的程序,可以对数组进行排序。但是,我想将其转换为一个过程,以便能够将其用于多个阵列。你能帮我把这些代码转换成程序吗?另外,在这个过程中,您能否告诉我如何将排序后的数组打印到黑屏上(这是我想要的功能,但由于缺乏汇编语言知识而无法实现) 将该过程视为一段可调用的代码(blackbox),其中包含文档化的输入、输出和功能。决定您的过程应该如何接受输入参数(调用约定),创建文档,然后编写代码,并辅以指令RET(使其可调用)。如果代码中使用了PUSH和POP指令,请确保保持

我有一个x86 MASM汇编语言的程序,可以对数组进行排序。但是,我想将其转换为一个过程,以便能够将其用于多个阵列。你能帮我把这些代码转换成程序吗?另外,在这个过程中,您能否告诉我如何将排序后的数组打印到黑屏上(这是我想要的功能,但由于缺乏汇编语言知识而无法实现)


将该过程视为一段可调用的代码(blackbox),其中包含文档化的输入、输出和功能。决定您的过程应该如何接受输入参数(调用约定),创建文档,然后编写代码,并辅以指令RET(使其可调用)。如果代码中使用了PUSH和POP指令,请确保保持堆栈平衡

BubbleSort: ; Procedure to sort an array of double-words.
; Input:  EDI is pointer to the unsorted array of DWORDs.
;         EBX is number of DWORDs in the input array.
; Output: The array is sorted in descending order.
;         EAX,EBX,ECX,EDX,ESI are clobbered.
 OuterLoop: ; sorting the array in descending order
        mov esi,edi
        mov ecx, ebx       
    InnerLoop:
        Lodsd
        mov edx, [esi]
        cmp eax, edx
        jl Skip
        mov [esi], eax  ; Swap neighbouring DWORDs.
        mov [esi-4], edx 
    Skip:
        dec ecx
        jnz InnerLoop
        dec ebx
        jnz OuterLoop
        RET 
示例性调用您的过程:

mov edi, offset arrayD 
mov ebx,5
CALL BubleSort

谢谢您的输入,但是您知道如何在此过程中将数组的内容打印到屏幕上吗?P/s编辑:没关系,我已经弄明白了,谢谢你的输入!
mov edi, offset arrayD 
mov ebx,5
CALL BubleSort