| Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> Computer Programmeringsspråk >> Content
    Mikroprosessor 8085 programkode for palindrom?
    Her er et mulig 8085-monteringsprogram for å sjekke om en gitt streng er et palindrom:

    ```montering

    ORG 100H

    ; Definer konstanter

    STRLEN EQU 10

    NULL_BYTE EQU 0

    ; Definer minneplasseringer

    ORIGINAL:equ 02H

    STRING_LOCATION:equ 03H

    STRING_LENGTH:equ 04H

    ; Definer registerbruk

    A:ekv 0; Akkumulator

    B:ekv 1; Indirekte minne

    C:ekv 2; Bær register

    D:ekv 3; Dataregister

    E:ekv 4; Indeksregister

    H:ekv 5; Høyt register med 16-bits verdi

    L:ekv 6; Lavt register med 16-bits verdi

    M:ekv 7; Stabelpeker

    P:ekv 8; Programstatusord

    ; Definer flagg

    NULL:bit 0,P; Null flagg

    SIGN:bit 1,P; Skilt flagg

    PARITET:bit 2,P; Paritetsflagg

    BÆRE:bit 4,P; Bær flagg

    ; Hovedprogrammet starter her

    HOVED:

    ; Initialiser data

    XCHG H,L; Bytt ut H- og L-registre

    MVI E,STRING_LENGTH; Sett E til lengden på strengen

    MOV H,E; Kopier lengden til H

    MVI L,NULL_BYTE; Initialiser L med null-byten

    SHLD ORIGIN; Lagre lengden på ORIGIN-adressen

    MVI E,STRLEN; Sett E til maksimal lengde på strengen

    MOV D,STRLEN; Kopier maksimal lengde til D

    LOOP1:

    XTHL; Bytt H- og L-registre for å laste fra en minneadresse

    MVI M,0; Initialiser minneplassering med en nullbyte

    INCR M; Øk minnepekeren

    DCRE D; Reduser strenglengden

    NZ LOOP1; Fortsett til strenglengden når 0

    MVI E,STRLEN; Sett E til maksimal lengde på strengen

    MOV D,STRLEN; Kopier maksimal lengde til D

    READ_STRING:

    IN 0,A; Les et tegn fra tastaturet

    MOV H,A; Lagre karakteren i H

    XTHL; Bytt H- og L-registre for å laste fra en minneadresse

    MVI M,0; Initialiser minneplassering med en nullbyte

    LHLD ORIGIN; Last opp opprinnelsesadressen fra minnet

    INCR M; Øk minnepekeren

    MOV L,A; Lagre karakteren i L

    SHLD ORIGIN; Lagre adressen til neste tegn i minnet

    DCRE D; Reduser strenglengden

    NZ READ_STRING; Fortsett til strenglengden når 0

    ; Funksjon for å sjekke om en streng er et palindrom

    IS_PALINDROME:

    ; Lagre registre

    SKYV H

    SKYV D

    ; Løkke gjennom halve strengen

    LHLD ORIGIN; Last opp opprinnelsesadressen fra minnet

    MOV H,L; Kopier den lave byten til adressen til H

    ADD HL; Øk adressen

    MOV L,H; Kopier den høye byten til adressen til L

    MOV D,L; Kopier den høye byten til adressen til D

    PAPPA D; Doble adressen

    XCHG H,D; Bytt H- og D-registre

    MOV H,A; Lagre det siste tegnet i H

    DCRE E; Reduser strenglengden

    LOOP_PAL:

    LHLD ORIGIN; Last opp opprinnelsesadressen fra minnet

    MOV L,H; Kopier den lave byten til adressen til L

    PAPPA D; Doble adressen

    XTHL; Bytt H- og L-registre for å laste fra en minneadresse

    KPI M; Sammenlign tegnet på gjeldende adresse med det siste tegnet

    PUSH PSW; Lagre statusflaggene

    ANI NULL; Sjekk om tegnene er like

    POP PSW; Gjenopprett statusflaggene

    JZ NOT_PALINDROME; Hvis lik, fortsett

    XCHG H,D; Bytt H- og D-registre

    MOV H,A; Lagre neste karakter i H

    DCRE E; Reduser strenglengden

    NZ LOOP_PAL; Fortsett til slutten av strengen

    POP D

    POP H

    ; Slutt på funksjon

    RET

    NOT_PALINDROME:

    CMP E,0; Sjekk om strenglengden er 0

    JZ PAL_DONE; Hvis 0, er strengen et palindrom

    POP D

    POP H

    ; Funksjon for å skrive ut en streng

    PRINT_STRING:

    ; Lagre registre

    SKYV D

    LOOP_PRINT:

    LHLD ORIGIN; Last opp opprinnelsesadressen fra minnet

    UT 0,A; Skriv ut tegnet på gjeldende adresse

    XTHL; Bytt H- og L-registre for å laste fra en minneadresse

    CPI NULL_BYTE; Sjekk om tegnet er en nullbyte

    POP D

    RETNZ

    ; Funksjon for å skrive ut en melding som indikerer at strengen er et palindrom

    PRINT_PALINDROME:

    MOV E,STR_PALINDROME; Flytt meldingsadressen til E-registeret

    RING PRINT_STRING; Ring PRINT_STRING-funksjonen

    ; Funksjon for å skrive ut en melding som indikerer at strengen ikke er et palindrom

    PRINT_NOT_PALINDROME:

    MOV E,STR_NOT_PALINDROME; Flytt meldingsadressen til E-registeret

    RING PRINT_STRING; Ring PRINT_STRING-funksjonen

    ; Skriv ut resultatet av palindromsjekken

    MVI A,'$'; Skriv ut et dollartegn for å skille resultatet

    UT 0,A; Skriv ut dollartegnet

    CMP E,0; Sjekk om strengen er et palindrom

    JZ PRINT_PALINDROME; Hvis 0, skriv ut palindrommeldingen

    RING PRINT_NOT_PALINDROME; Ellers skriver du ut meldingen ikke palindrom

    ; Skriv ut et nytt linjetegn

    UT 0,CRLF

    ; Stopp programmet

    HLT

    ; Strenger som skal skrives ut

    STR_PALINDROME:DB '$Strengen er et palindrom$'

    STR_NOT_PALINDROME:DB '$Strengen er ikke et palindrom$'

    CRLF:DB ODH,OAH,0; Vognretur og linjemating

    ; Slutt på programmet

    ```

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan lage en Pålogging & Response Side 
    ·Hvordan Tell NaN i MATLAB 
    ·Avansert SAS sertifisering testspørsmål 
    ·Reglene for dataflyt diagrammer 
    ·Hvordan skrive kode for å lage en sirkel klasse 
    ·Hvordan skrive enkle algoritmer 
    ·Hva Format er Silverlight 
    ·Den viktige rollen av Computer Science i hverdagen 
    ·Hvordan convolve en funksjon i MATLAB 
    ·Hvordan lage programmer for Razr -telefoner 
      Anbefalte artikler
    ·PHP Developer Lønn Range 
    ·HTML- kode for bakgrunn Høydepunkter 
    ·Hvordan du vil sortere etternavnene Alfabetisk i Python…
    ·Slik konverterer desimaler til Binary for VBA 
    ·Hva er fordelene med Adobe Cold Fusion 
    ·Hvordan Kast Vis Parameter på Android 
    ·Hvordan endre bakgrunnen i et tekstfelt hjelp Jigloo & …
    ·Hvordan finne den korteste lengden på en streng i Pyth…
    ·Hvordan endre markøren i en tekstboks 
    ·Slik konverterer en tekstboks til et nummer i Visual Ba…
    Copyright ©  Datamaskin  http://www.datamaskin.biz/