Se necesita urgentemente un programa en lenguaje ensamblador
La instrucción 8086 se usa para agregar clasificación y se usa este compilador.
/masmplus/ es muy fácil de usar. Cree un proyecto y seleccione DOS.
Es. hay algo que no sé sobre hola yo
.model small
.stack 200h
.data
dwBig dw 0; dirección de búfer en mayúsculas
dwSmall dw 0; dirección de búfer en letras minúsculas
dwNumber dw 0; dirección de búfer de números
dwOther dw 0; >
szMsg db 'XkGjMc9 8-7*6/5(2)h!F~A?z', 13, 10, 13, 10, '$'; leer caracteres de cadena
szBuffBig db 100 dup (0); búfer en mayúsculas
szEnter1 db 13, 10
szBuffSmall db 100 dup (0); búfer en minúsculas
szEnter2 db 13, 10);
szBuffNumber db 100 dup (0); Búfer numérico
szEnter3 db 13, 10
szBuffOther db 100 dup (0); >
szEnter4 db 13,10,'$'
.CODE
;gt;gt;gt;gt;gt;gt;gt;gt ;gt;gt; gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt ;gt;gt; gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;
;La subrutina de clasificación toma el parámetro si y la dirección de caracteres de la cadena a ordenar p>
_PaiXu proc
push si
push di
push bx
mov di, si
xor al, al
@@:
inc di
cmp BYTE ptr [di-1], al
jnz @B ; Obtiene el final de la cadena (el final es cero)
mov cx, di
sub cx, si
dec cx
p>dec cx ; obtiene el número de clasificación
mov dx, cx
mov bx, si
@loop2: ; p>
push cx
mov si, bx
mov cx, dx
@loop1: ;
mov al, BYTE ptr [si]
cmp al, BYTE ptr [si 1]
jbe @Small; swap
xchg al, BYTE ptr [si 1]
mov BYTE ptr [si], al; ordenar de pequeño a grande
@Small: p>
inc si
bucle @loop1
pop cx
bucle @loop2
pop bx
pop di
pop si
ret
_PaiXu endp
;gt;gt;gt;gt;gt;gt; gt;gt;gt;gt;gt; gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt; gt;gt;gt;gt;gt; gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;
INICIO:
mov hacha ,@data
mov ds, ax
lea dx, szMsg
mov ah, 9
int 21h; personaje
lea ax, szBuffBig
mov dwBig, ax
lea ax, szBuffSmall
mov dwSmall, ax
lea ax, szBuffNumber p>
mov dwNumber, ax
lea ax, szBuffOther
mov dwOther, ax; almacena la dirección de cada búfer
lea si, szMsg; establece la cadena que se leerá como dirección de origen
mov cx, 25; establece la longitud de la cadena leída (número de bytes)
cld ; Establecer el indicador DF en cero
@Search:
lodsb; almacena el contenido del byte de la dirección señalada por si en al
cmp al, 30h. ; 0
jb @Next1; saltar si es menor que
cmp al, 39h
ja @Next1; p> inc dwNumber p>
mov di, dwNumber
mov BYTE ptr [di-1], al si el número está almacenado en el búfer de números
jmp; @ret
@Next1:
cmp al, 41h; A
jb @Next2
cmp al, 5ah; p>
ja @ Next2
inc dwBig
mov di, dwBig
mov BYTE ptr [di-1], al; letra mayúscula,
Poner en el búfer de letras mayúsculas
jmp @ret
@Next2:
cmp al, 61h
jb @Next3
p>cmp al, 7ah; z
ja @Next3
inc dwSmall
mov di, dwSmall
mov BYTE ptr [di-1], al; si es una letra minúscula, guárdela en el búfer de letras minúsculas
jmp @ret
@Next3:
inc dwOther
mov di, dwOther
mov BYTE ptr [di-1], al; otros caracteres se almacenan
@ret:
loop @ Search; CX no es cero (la búsqueda de caracteres de cadena no se ha completado) e inicia la siguiente búsqueda
lea si, szBuffSmall
llama a _PaiXu
lea si, szBuffNumber
llamar a _PaiXu
lea si, szBuffBig
llamar a _PaiXu
lea si, szBuffOther
llamar a _PaiXu; ordenar
lea dx, szBuffBig; mostrar caracteres de cadena clasificados
mov ah, 9
int 21h
; pausa, cualquier tecla apagada
mov ah, 1
int 21h
mov ah, 4ch end, puedes modificar al para configurar el código de retorno;
int 21h
FIN INICIO