Problema: dada una string, tenemos que invertir la string e imprimir la string invertida.
Ejemplos:
Input: String : "This is a sample string" Output: gnirts elpmas a si sihT Input: String : "Geeks for Geeks" Output: skeeG rof skeeG
Explicación:
- Crear una string
- Atravesar la cuerda
- Empuje los caracteres en la pila
- Contar el número de caracteres
- Cargue la dirección inicial de la string
- POP el carácter superior de la pila hasta que el conteo no sea igual a cero
- Pon el personaje y reduce el conteo y aumenta la dirección.
- Continúe hasta que el conteo sea mayor que cero
- Cargue la dirección efectiva de la string en dx usando el comando LEA
- Imprime la string llamando a la interrupción con 9H en AH
- La string debe terminar con el signo ‘$’
Programa:
CPP
.MODEL SMALL .STACK 100H .DATA ; The string to be printed STRING DB 'This is a sample string', '$' .CODE MAIN PROC FAR MOV AX,@DATA MOV DS,AX ; call reverse function CALL REVERSE ; load address of the string LEA DX,STRING ; output the string ; loaded in dx MOV AH, 09H INT 21H ; interrupt to exit MOV AH, 4CH INT 21H MAIN ENDP REVERSE PROC ; load the offset of ; the string MOV SI, OFFSET STRING ; count of characters of the; ;string MOV CX, 0H LOOP1: ; compare if this is; ;the last character MOV AX, [SI] CMP AL, '$' JE LABEL1 ; else push it in the; ;stack PUSH [SI] ; increment the pointer; ;and count INC SI INC CX JMP LOOP1 LABEL1: ; again load the starting; ;address of the string MOV SI, OFFSET STRING LOOP2: ;if count not equal to zero CMP CX,0 JE EXIT ; pop the top of stack POP DX ; make dh, 0 XOR DH, DH ; put the character of the; ;reversed string MOV [SI], DX ; increment si and; ;decrement count INC SI DEC CX JMP LOOP2 EXIT: ; add $ to the end of string MOV [SI],'$ ' RET REVERSE ENDP END MAIN
Producción:
gnirts elpmas a si sihT
Nota: El programa no se puede ejecutar en un editor en línea, use MASM para ejecutar el programa y use dos box para ejecutar MASM, puede usar cualquier emulador 8086 para ejecutar el programa.
Publicación traducida automáticamente
Artículo escrito por andrew1234 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA