Red de conocimiento informático - Conocimiento sistemático - Pregunta sobre programación ensambladora Uso de estructura de subrutina, 10 números sin signo de 8 bits a partir de la unidad MEM

Pregunta sobre programación ensambladora Uso de estructura de subrutina, 10 números sin signo de 8 bits a partir de la unidad MEM

; Este programa fue compilado bajo el entorno integrado MASMPlus 1.2, depurado y ejecutado correctamente.

Segmento de código

Supongamos CS:Code,DS:Code

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

; Función: Mostrar la cadena de la dirección especificada (Str_Addr)

; Entrada:

p>;

; Str_Addr=Dirección de cadena (debe estar en el segmento de datos)

Uso: Salida Str_Addr

; Ejemplo de uso: Salida PromptStr

Salida MACRO Str_Addr

lea dx,Str_Addr

mov ah,9

int 21h

EndM

- -------------------------------------------------- ------------- de Los N números sin signo de 8 bits que comienzan desde la unidad MEM se ordenan en orden descendente

; Parámetros de entrada: ds:SI=dirección de matriz, CX; =número de elementos de la matriz

Bubbling Proc Near

push es

push si

push di

push cx

push ax

push ds

pop es

dec cx ;Número de bucles exteriores

cld

@@Escaneo: push cx ;Guardar el bucle externo en la pila Número de veces

push si ;Empuja la dirección de la matriz a la pila

@@Comparar: mov di,si ;La dirección del elemento de matriz actual se asigna al registro de índice de destino para el intercambio

@@Compare: mov di,si ;La dirección del elemento de matriz actual se asigna al registro de índice de destino para el intercambio

p>

lodsb ;Lee el elemento de la matriz actual en el acumulador

cmp al,[si] ;Compara el elemento de la matriz actual con el siguiente elemento de la matriz adyacente

jae @@NextOne ;Si es mayor o igual a, no intercambie datos, procese el siguiente elemento de la matriz

xchg al,[si] ;Si es menor que, intercambie elementos de la matriz

stosb ;Guardar el valor numérico más pequeño

@@NextOne: bucle @@Compare ;Procesar el siguiente elemento de la matriz

pop si ;Extraer la dirección de la matriz de la pila

pop cx ;Número de bucles externos que salen de la pila

loop @@Scanning siguiente comparación

pop ax

pop cx

pop di

pop si

pop es

ret

Bubbling EndP

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

MEM db 12,56,253,200,10,99,78,75,63,100

N equ $-MEM

Presione_Key db 7,13,10,13,10,'The completado Presione cualquier tecla para salir...$'

Inicio: push cs

pop ds

mov cx,N ;Número de elementos de la matriz

p>

lea si,MEM ;dirección de matriz

llamada burbujeante

------------------------- - ------------

Exit_Proc: Salida Press_Key indica que la operación se completó, presione cualquier tecla para finalizar el programa

mov ah,1

int 21h

mov ah,4ch ;Finalizar programa

int 21h

Código FINALIZA

FINALIZAR Inicio ; La recopilación termina aquí

p>