Problema: escriba un programa 8086 para verificar si una string dada es palíndromo o no.
Ejemplos:
Input String: "abba" Output: String is palindrome Input String: "abbca" Output: String is not palindrome
Explicación:
- Crear una string
- Recorrer hasta el final de la cuerda
- Obtenga la dirección del final de la string, DI
- Cargue la dirección inicial de la string, SI
- Compare el valor almacenado en la dirección
- Incrementa el puntero, SI
- Disminuye el puntero, DI
- Compare nuevamente el valor almacenado en si y di
- Repetir los pasos hasta SI<=DI
- Si todos los caracteres coinciden, la string de impresión es palíndromo; de lo contrario, imprima no palíndromo
Programa:
CPP
.MODEL SMALL .STACK 100H .DATA ; The string to be printed STRING DB 'abba', '$' STRING1 DB 'String is palindrome', '$' STRING2 DB 'String is not palindrome', '$' .CODE MAIN PROC FAR MOV AX, @DATA MOV DS, AX ; check if the string is; ;palindrome or not CALL Palindrome ;interrupt to exit MOV AH, 4CH INT 21H MAIN ENDP Palindrome PROC ; load the starting address ; of the string MOV SI,OFFSET STRING ; traverse to the end of; ;the string LOOP1 : MOV AX, [SI] CMP AL, '$' JE LABEL1 INC SI JMP LOOP1 ;load the starting address; ;of the string LABEL1 : MOV DI,OFFSET STRING DEC SI ; check if the string is palindrome; ;or not LOOP2 : CMP SI, DI JL OUTPUT1 MOV AX,[SI] MOV BX, [DI] CMP AL, BL JNE OUTPUT2 DEC SI INC DI JMP LOOP2 OUTPUT1: ;load address of the string LEA DX,STRING1 ; output the string; ;loaded in dx MOV AH, 09H INT 21H RET OUTPUT2: ;load address of the string LEA DX,STRING2 ; output the string ; loaded in dx MOV AH,09H INT 21H RET Palindrome ENDP END MAIN
Producción:
String is palindrome
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