8086 programa para invertir una string

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:

  1. Crear una string
  2. Atravesar la cuerda
  3. Empuje los caracteres en la pila
  4. Contar el número de caracteres
  5. Cargue la dirección inicial de la string
  6. POP el carácter superior de la pila hasta que el conteo no sea igual a cero
  7. Pon el personaje y reduce el conteo y aumenta la dirección.
  8. Continúe hasta que el conteo sea mayor que cero
  9. Cargue la dirección efectiva de la string en dx usando el comando LEA
  10. Imprime la string llamando a la interrupción con 9H en AH
  11. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *