Ensamblador - Números capicúas o palíndromos en Ensamblador

 
Vista:
sin imagen de perfil

Números capicúas o palíndromos en Ensamblador

Publicado por Ernesto (1 intervención) el 17/03/2022 02:41:53
Buenos días, tardes o noches, quisiera saber si alguien tiene un programa para emulador de ensamblador o ensamblador para determinar si un número es capicúa o no, necesito realizarlo pronto, gracias por su tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

palíndromos en Ensamblador

Publicado por jose manuel (1 intervención) el 31/03/2023 17:30:58
name "palindromo"
include 'emu8086.inc'
org 100h

jmp inicio()
palabra db 50h dup(?)
aux1 db 0
aux2 dw 0

msj1:
primero db 'Ingrese palabra: '
lz = $ - cod
db 06h, '$'
exito:
exitomsj db 'La palabra ingresada es palindrome.'
lz = $ - cod
db 06h,'$'
fallo:
fallomsj db 'La palabra ingresada no es palindrome.'
lz = $ - cod
db 06h,'$'

inicio():
mov ah,9
mov dx,offset primero
int 21h

mov bl,0dh ;esigamos la tecla enter
mov si,00d ;inicio del contador del string
mov ah,1

lectura():
int 21h ;lectura del caracter
mov palabra[si],al ;almacenamos en el vector string
inc si ;incremento variable SI
cmp al,bl ;comparamos el caracter ingresado con el ENTER
jne lectura()

mov di,si
dec di ;la variable si se pasa en dos posiciones, ya que almacena
dec di ; el enter y el retorno de carro!!!, por esod ecremento dos veces

mov si,00d

mov aux2,di ;almacenamos el largo en una variable

compara():

mov al,palabra[si]
cmp palabra[di],al ;si son distintos de inmediato no son palindromes!
jne no_palindromo()

cmp si,aux2
je palindromo()

inc si
dec di

jmp compara()

no_palindromo():
mov aux1,1
jmp imprime()
mensaje1():
;mov ah,0eh
mov al,0ah
int 10h

mov dx,offset fallomsj
mov ah,9
int 21h
jmp fin()

palindromo():
jmp imprime()
mensaje2():
;mov ah,0eh
mov al,0ah
int 10h

mov dx,offset exitomsj
mov ah,9
int 21h
jmp fin()

imprime():
mov di,aux2
mov ah,0eh
mov al,0ah
int 10h
mov si,-01d
for():
mov ah,0eh
inc si
mov al,palabra[si]
int 10h
cmp si,di
jne for()

mov al,aux1 ;truco para saber donde debe volver!!
cmp al,1
je mensaje1() ;vuelve donde corresponda!!
jmp mensaje2()


fin():


ret


end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar