Red de conocimiento informático - Conocimiento del nombre de dominio - Se necesita urgentemente un programa en lenguaje ensamblador

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

_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:

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

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

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

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