Red de conocimientos turísticos - Información sobre alquiler - Para obtener puntuaciones altas, dos programas en lenguaje ensamblador se fusionan en uno, uno es una subrutina del otro

Para obtener puntuaciones altas, dos programas en lenguaje ensamblador se fusionan en uno, uno es una subrutina del otro

; Pruébelo:

suponga cs: código, ds: datos

segmento de datos

msg1 db 'Antes de ordenar:$'

crlf db 0dh, 0ah, '$'

msg2 db 'Después de ordenar: $'

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

BUFSIZE DB 50 Puede escribir hasta 50 caracteres.

ACTLEN DB ? ;El número real de caracteres escritos.

CHARS DB 50 DUP(20H) ;Los caracteres reales escritos se almacenan a partir de este momento.

Los datos finalizan

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

segmento de código

inicio:

mov ax , data

mov ds, ax

mov dx, offset msg1

mov ah, 9

int 21h

MOV DX, OFFSET BUFSIZE; Ingrese la dirección de desplazamiento inicial del búfer para enviar DX

MOV AH, 0AH

INT 21H; al buffer.

p>

/p>

MOV BX, DX envía la primera dirección de la cadena a BX

ADD BX, CX; la última dirección de la cadena.

MOV BYTE PTR [BX] , '$' ; Insertar $ al final de la cadena

;

; INT 21H; Muestra la cadena escrita.

ok:

mov dx, offset crlf

mov ah, 9

int 21h

mov dx, desplazamiento msg2

mov ah, 9

int 21h

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

MOV CX, 15

mov si, caracteres desplazados

s:

push cx

mov di , si

inc di

s1:

mov al, [si]

cmp al, [di]

jb jx

xchg al, [di]

mov [si], al

jx:

inc di

bucle s1

inc si

pop cx

bucle s

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

mov byte ptr [si 1], 24h

mov dx, desplazamiento CHARS

mov ah, 9

int 21h

mov ah, 4ch

int 21h

el código termina

finaliza el inicio