Programação  
 
Rede de conhecimento computador >> Programação >> Programação De Computador Idiomas >> Content
Código do programa do microprocessador 8085 para palíndromo?
Aqui está um possível programa assembly 8085 para verificar se uma determinada string é um palíndromo:
```montagem
OR 100H

; Definir constantes
ESTRELA EQU 10
NULL_BYTE EQ 0

; Definir locais de memória
ORIGEM:equ 02H
STRING_LOCATION:equi 03H
STRING_LENGTH:igual a 04H

; Definir uso de registro
A:equ 0; Acumulador
B:equ 1; Memória indireta
C:equ 2; Registro de transporte
D:equ 3; Registro de dados
E:equ 4; Registro de índice
H:equ 5; Registro alto de valor de 16 bits
L:equ6; Registro baixo de valor de 16 bits
M:equ 7; Ponteiro de pilha
P:equ 8; Palavra de status do programa

; Definir sinalizadores
ZERO:bit 0,P; Bandeira zero
SINAL:bit 1,P; Assinar bandeira
PARIDADE:bit 2,P; Bandeira de paridade
CARREGAR:bit 4,P; Carregar bandeira

; O programa principal começa aqui
PRINCIPAL:

; Inicializar dados
XCHGH,L; Trocar registros H e L
MVI E,STRING_LENGTH; Defina E como o comprimento da string
MOV H,E; Copie o comprimento para H
MVI L,NULL_BYTE; Inicialize L com o byte nulo
ORIGEM DO SHLD; Armazene o comprimento no endereço ORIGIN

MVI E,STRLEN; Defina E para o comprimento máximo da string
MOV D,STRLEN; Copie o comprimento máximo para D
LAÇO1:
XTHL; Troque os registradores H e L para carregar de um endereço de memória
MVI M,0; Inicialize o local da memória com um byte nulo
INCRM; Incrementar ponteiro de memória
DCRE D; Diminuir o comprimento da string
LOOP1 da Nova Zelândia; Continue até que o comprimento da string chegue a 0

MVI E,STRLEN; Defina E para o comprimento máximo da string
MOV D,STRLEN; Copie o comprimento máximo para D
LEIA_STRING:
EM 0,A; Ler um caractere do teclado
MOV H,A; Armazene o caractere em H
XTHL; Troque os registradores H e L para carregar de um endereço de memória
MVI M,0; Inicialize o local da memória com um byte nulo
ORIGEM LHLD; Carregue o endereço de origem da memória
INCRM; Incrementar ponteiro de memória
MOV L,A; Armazene o caractere em L
ORIGEM DO SHLD; Armazene o endereço do próximo caractere na memória
DCRE D; Diminuir o comprimento da string
Nova Zelândia READ_STRING; Continue até que o comprimento da string chegue a 0

; Função para verificar se uma string é um palíndromo
IS_PALINDROME:

; Salvar registros
PRESSIONE H
PRESSIONE D

; Passe pela metade da corda
ORIGEM LHLD; Carregue o endereço de origem da memória
MOV H,L; Copie o byte inferior do endereço para H
ADICIONAR HL; Incrementar o endereço
MOV L,H; Copie o byte alto do endereço para L
MOV D,L; Copie o byte alto do endereço para D
PAI D; Duplique o endereço
XCHGH,D; Trocar registros H e D
MOV H,A; Armazene o último caractere em H
DCREE; Diminuir o comprimento da string

LOOP_PAL:
ORIGEM LHLD; Carregue o endereço de origem da memória
MOV L,H; Copie o byte inferior do endereço para L
PAI D; Duplique o endereço
XTHL; Troque os registradores H e L para carregar de um endereço de memória
IPCM; Compare o caractere do endereço atual com o último caractere
PRESSIONE PSW; Salve os sinalizadores de status
ANI ZERO; Verifique se os caracteres são iguais
POP PSW; Restaure os sinalizadores de status
JZ NOT_PALINDROME; Se igual, continue
XCHGH,D; Trocar registros H e D
MOV H,A; Armazene o próximo caractere em H
DCREE; Diminuir o comprimento da string
Nova Zelândia LOOP_PAL; Continue até o final da string
POP-D
POP-H

; Fim da função
RET

NOT_PALINDROME:
CMP E,0; Verifique se o comprimento da string é 0
JZ PAL_DONE; Se 0, a string é um palíndromo
POP-D
POP-H

; Função para imprimir uma string
IMPRIMIR_STRING:

; Salvar registros
PRESSIONE D

LOOP_PRINT:
ORIGEM LHLD; Carregue o endereço de origem da memória
FORA 0,A; Imprima o caractere no endereço atual
XTHL; Troque os registradores H e L para carregar de um endereço de memória
IPC NULL_BYTE; Verifique se o caractere é um byte nulo
POP-D
RETNZ

; Função para imprimir uma mensagem indicando que a string é um palíndromo
PRINT_PALINDROME:
MOV E,STR_PALINDROME; Mova o endereço da mensagem para o registro E
CHAMAR PRINT_STRING; Chame a função PRINT_STRING

; Função para imprimir uma mensagem indicando que a string não é um palíndromo
PRINT_NOT_PALINDROME:
MOV E,STR_NOT_PALINDROME; Mova o endereço da mensagem para o registro E
CHAMAR PRINT_STRING; Chame a função PRINT_STRING

; Imprima o resultado da verificação do palíndromo
MVIA,'$'; Imprima um cifrão para separar o resultado
FORA 0,A; Imprima o cifrão
CMP E,0; Verifique se a string é um palíndromo
JZ PRINT_PALINDROME; Se 0, imprima a mensagem do palíndromo
CHAMAR PRINT_NOT_PALINDROME; Caso contrário, imprima a mensagem não palíndromo

; Imprimir um caractere de nova linha
FORA 0,CRLF

; Interrompa o programa
ELH

; Strings para imprimir
STR_PALINDROME:DB '$A string é um palíndromo$'
STR_NOT_PALINDROME:DB '$A string não é um palíndromo$'
CRLF:BD ODH,OAH,0; Retorno de carro e alimentação de linha

; Fim do programa
```

Anterior :

Próximo :
  Os artigos relacionados
·Como fazer referência a uma planilha em VBA 
·Como substituir um STRG Com um STRG Lower 
·Como calcular o máximo Abertas cursores 
·Qual é o significado de conversão de valor e Cordas 
·Como mudar o estilo de bala Usando programação HTML 
·Como criar e Funções de Dados Atualização 
·Como adicionar dependências a um Serviço 
·Quem inventou Programação de Computadores 
·Quais são as funções de Alerton VLC 
·Como faço para converter String para Data no Oracle 
  Artigos em destaque
·Como criar um fluxograma Visual Logic 
·Como iniciar o interpretador Python 
·Como converter Windows.Forms.TextBox para Integer 
·Como construir um Switcher idioma em PHP e JavaScript 
·Objetivo Questionamento em C Programação 
·Como realçar uma coluna em JavaScript 
·Como escrever código para criar uma classe Circle 
·Como usar um mouse em seus programas QBasic 
·Como Chegar Sair Estado em Python 
·Como editar uma página da Web 
Cop e direita © Rede de conhecimento computador http://ptcomputador.com Todos os Direitos Reservados