Här är ett möjligt 8085-monteringsprogram för att kontrollera om en given sträng är en palindrom:
```montering
ORG 100H
; Definiera konstanter
STRLEN EQU 10
NULL_BYTE EQU 0
; Definiera minnesplatser
URSPRUNG:equ 02H
STRING_LOCATION:lik 03H
STRING_LENGTH:ekv. 04H
; Definiera registeranvändning
A:ekv 0; Ackumulator
B:ekv 1; Indirekt minne
C:ekv 2; Bär register
D:ekv 3; Dataregister
E:ekv 4; Indexregister
H:ekv 5; Högt register med 16-bitars värde
L:ekv 6; Lågt register med 16-bitars värde
M:ekv 7; Stackpekare
P:ekv 8; Programstatusord
; Definiera flaggor
NOLL:bit 0,P; Noll flagga
TECKN:bit 1,P; Sign flagga
PARITET:bit 2,P; Paritetsflagga
BÄRA:bit 4,P; Bär flagga
; Huvudprogrammet börjar här
HUVUDSAK:
; Initiera data
XCHG H,L; Byt ut H- och L-register
MVI E,STRING_LENGTH; Ställ in E på strängens längd
MOV H,E; Kopiera längden till H
MVI L,NULL_BYTE; Initiera L med nollbyten
SHLD URSPRUNG; Lagra längden på ORIGIN-adressen
MVI E,STRLEN; Ställ in E på strängens maximala längd
MOV D,STRLEN; Kopiera den maximala längden till D
LOOP1:
XTHL; Byt H- och L-register för att ladda från en minnesadress
MVI M,0; Initiera minnesplatsen med en nollbyte
INCR M; Öka minnespekaren
DCRE D; Minska strängens längd
NZ LOOP1; Fortsätt tills strängens längd når 0
MVI E,STRLEN; Ställ in E på strängens maximala längd
MOV D,STRLEN; Kopiera den maximala längden till D
READ_STRING:
IN 0,A; Läs ett tecken från tangentbordet
MOV H,A; Lagra karaktären i H
XTHL; Byt H- och L-register för att ladda från en minnesadress
MVI M,0; Initiera minnesplatsen med en nollbyte
LHLD URSPRUNG; Ladda ursprungsadressen från minnet
INCR M; Öka minnespekaren
MOV L,A; Lagra karaktären i L
SHLD URSPRUNG; Lagra adressen till nästa tecken i minnet
DCRE D; Minska strängens längd
NZ READ_STRING; Fortsätt tills strängens längd når 0
; Funktion för att kontrollera om en sträng är en palindrom
IS_PALINDROME:
; Spara register
PUSH H
PUSH D
; Slinga genom halva snöret
LHLD URSPRUNG; Ladda ursprungsadressen från minnet
MOV H,L; Kopiera adressens låga byte till H
ADD HL; Öka adressen
MOV L,H; Kopiera adressens höga byte till L
MOV D,L; Kopiera adressens höga byte till D
PAPPA D; Dubbla adressen
XCHG H,D; Byt H- och D-register
MOV H,A; Lagra det sista tecknet i H
DCRE E; Minska strängens längd
LOOP_PAL:
LHLD URSPRUNG; Ladda ursprungsadressen från minnet
MOV L,H; Kopiera adressens låga byte till L
PAPPA D; Dubbla adressen
XTHL; Byt H- och L-register för att ladda från en minnesadress
CPI M; Jämför tecknet på den aktuella adressen med det sista tecknet
PUSH PSW; Spara statusflaggorna
ANI NOLL; Kontrollera om tecknen är lika
POP PSW; Återställ statusflaggorna
JZ NOT_PALINDROME; Om lika, fortsätt
XCHG H,D; Byt H- och D-register
MOV H,A; Lagra nästa tecken i H
DCRE E; Minska strängens längd
NZ LOOP_PAL; Fortsätt till slutet av strängen
POP D
POP H
; Slut på funktion
RÖTA
NOT_PALINDROME:
CMP E,0; Kontrollera om strängens längd är 0
JZ PAL_DONE; Om 0 är strängen ett palindrom
POP D
POP H
; Funktion för att skriva ut en sträng
PRINT_STRING:
; Spara register
PUSH D
LOOP_PRINT:
LHLD URSPRUNG; Ladda ursprungsadressen från minnet
UT 0,A; Skriv ut tecknet på den aktuella adressen
XTHL; Byt H- och L-register för att ladda från en minnesadress
CPI NULL_BYTE; Kontrollera om tecknet är en nollbyte
POP D
RETNZ
; Funktion för att skriva ut ett meddelande som indikerar att strängen är en palindrom
PRINT_PALINDROME:
MOV E,STR_PALINDROME; Flytta meddelandeadressen till E-registret
RING PRINT_STRING; Anropa PRINT_STRING-funktionen
; Funktion för att skriva ut ett meddelande som indikerar att strängen inte är en palindrom
PRINT_NOT_PALINDROME:
MOV E,STR_NOT_PALINDROME; Flytta meddelandeadressen till E-registret
RING PRINT_STRING; Anropa PRINT_STRING-funktionen
; Skriv ut resultatet av palindromkontrollen
MVI A,'$'; Skriv ut ett dollartecken för att separera resultatet
UT 0,A; Skriv ut dollartecknet
CMP E,0; Kontrollera om strängen är en palindrom
JZ PRINT_PALINDROME; Om 0, skriv ut palindrommeddelandet
RING PRINT_NOT_PALINDROME; Annars skriv ut meddelandet inte palindrom
; Skriv ut ett nytt linjetecken
UT 0,CRLF
; Stoppa programmet
HLT
; Strängar att skriva ut
STR_PALINDROME:DB '$Strängen är en palindrom$'
STR_NOT_PALINDROME:DB '$Strängen är inte ett palindrom$'
CRLF:DB ODH,OAH,0; Vagnretur och linjematning
; Slut på programmet
```