| Hjem | Hardware | Netværk | Programmering | software | Fejlfinding | systemer | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringssprog
  • Delphi programmering
  • Java programmering
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl programmering
  • Python Programming
  • Ruby Programming
  • Visual Basics Programmering
  •  
    Computer Viden >> Programmering >> Computer Programmeringssprog >> Content
    Mikroprocessor 8085 programkode til palindrom?
    Her er et muligt 8085 monteringsprogram til at kontrollere, om en given streng er et palindrom:

    ``` samling

    ORG 100H

    ; Definer konstanter

    STRLEN EQU 10

    NULL_BYTE EQU 0

    ; Definer hukommelsesplaceringer

    OPRINDELSE:equ 02H

    STRING_LOCATION:lign. 03H

    STRING_LENGTH:lig 04H

    ; Definer registerbrug

    A:lig 0; Akkumulator

    B:lign. 1; Indirekte hukommelse

    C:ækv2; Medbring register

    D:ækv 3; Dataregister

    E:ækv 4; Indeksregister

    H:ækv 5; Højt register med 16-bit værdi

    L:lig 6; Lavt register med 16-bit værdi

    M:ækv 7; Stack pointer

    P:lig 8; Programstatusord

    ; Definer flag

    NUL:bit 0,P; Nul flag

    SIGN:bit 1,P; Tegn flag

    PARITET:bit 2,P; Paritetsflag

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

    ; Hovedprogrammet starter her

    HOVED:

    ; Initialiser data

    XCHG H,L; Byt H- og L-registre

    MVI E,STRING_LENGTH; Indstil E til længden af ​​strengen

    MOV H,E; Kopier længden til H

    MVI L,NULL_BYTE; Initialiser L med null-byten

    SHLD OPRINDELSE; Gem længden på ORIGIN-adressen

    MVI E,STRLEN; Indstil E til den maksimale længde af strengen

    MOV D,STRLEN; Kopier den maksimale længde til D

    LOOP1:

    XTHL; Skift H- og L-registre for at indlæse fra en hukommelsesadresse

    MVI M,0; Initialiser hukommelsesplacering med en null-byte

    INCR M; Øg hukommelsesmarkøren

    DCRE D; Formindsk strenglængden

    NZ LOOP1; Fortsæt indtil strenglængden når 0

    MVI E,STRLEN; Indstil E til den maksimale længde af strengen

    MOV D,STRLEN; Kopier den maksimale længde til D

    READ_STRING:

    IN 0,A; Læs et tegn fra tastaturet

    MOV H,A; Gem karakteren i H

    XTHL; Skift H- og L-registre for at indlæse fra en hukommelsesadresse

    MVI M,0; Initialiser hukommelsesplacering med en null-byte

    LHLD OPRINDELSE; Indlæs oprindelsesadressen fra hukommelsen

    INCR M; Øg hukommelsesmarkøren

    MOV L,A; Gem karakteren i L

    SHLD OPRINDELSE; Gem adressen på det næste tegn i hukommelsen

    DCRE D; Formindsk strenglængden

    NZ READ_STRING; Fortsæt indtil strenglængden når 0

    ; Funktion til at kontrollere, om en streng er et palindrom

    IS_PALINDROME:

    ; Gem registre

    SKUB H

    SKUB D

    ; Løkke gennem halvdelen af ​​strengen

    LHLD OPRINDELSE; Indlæs oprindelsesadressen fra hukommelsen

    MOV H,L; Kopiér den lave byte af adressen til H

    TILFØJ HL; Forøg adressen

    MOV L,H; Kopiér den høje byte af adressen til L

    MOV D,L; Kopiér den høje byte af adressen til D

    FAR D; Dobbelt adresse

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

    MOV H,A; Gem det sidste tegn i H

    DCRE E; Formindsk strenglængden

    LOOP_PAL:

    LHLD OPRINDELSE; Indlæs oprindelsesadressen fra hukommelsen

    MOV L,H; Kopiér den lave byte af adressen til L

    FAR D; Dobbelt adresse

    XTHL; Skift H- og L-registre for at indlæse fra en hukommelsesadresse

    CPI M; Sammenlign tegnet på den aktuelle adresse med det sidste tegn

    PUSH PSW; Gem statusflag

    ANI NUL; Tjek om tegnene er ens

    POP PSW; Gendan statusflag

    JZ NOT_PALINDROME; Hvis lige, fortsæt

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

    MOV H,A; Gem det næste tegn i H

    DCRE E; Formindsk strenglængden

    NZ LOOP_PAL; Fortsæt indtil slutningen af ​​strengen

    POP D

    POP H

    ; Slut på funktion

    RET

    NOT_PALINDROME:

    CMP E,0; Tjek om strengens længde er 0

    JZ PAL_DONE; Hvis 0, er strengen et palindrom

    POP D

    POP H

    ; Funktion til at udskrive en streng

    PRINT_STRING:

    ; Gem registre

    SKUB D

    LOOP_PRINT:

    LHLD OPRINDELSE; Indlæs oprindelsesadressen fra hukommelsen

    UD 0,A; Udskriv tegnet på den aktuelle adresse

    XTHL; Skift H- og L-registre for at indlæse fra en hukommelsesadresse

    CPI NULL_BYTE; Tjek, om tegnet er en nulbyte

    POP D

    RETNZ

    ; Funktion til at udskrive en meddelelse, der angiver, at strengen er et palindrom

    PRINT_PALINDROME:

    MOV E,STR_PALINDROME; Flyt meddelelsesadressen til E-registret

    RING PRINT_STRING; Kald PRINT_STRING-funktionen

    ; Funktion til at udskrive en meddelelse, der angiver, at strengen ikke er et palindrom

    PRINT_NOT_PALINDROME:

    MOV E,STR_NOT_PALINDROME; Flyt meddelelsesadressen til E-registret

    RING PRINT_STRING; Kald PRINT_STRING-funktionen

    ; Udskriv resultatet af palindromkontrollen

    MVI A,'$'; Udskriv et dollartegn for at adskille resultatet

    UD 0,A; Udskriv dollartegnet

    CMP E,0; Tjek om strengen er et palindrom

    JZ PRINT_PALINDROME; Hvis 0, udskriv palindrommeddelelsen

    RING PRINT_NOT_PALINDROME; Ellers udskriv ikke palindrom-meddelelsen

    ; Udskriv et nyt linjetegn

    UD 0,CRLF

    ; Stop programmet

    HLT

    ; Strenge til udskrivning

    STR_PALINDROME:DB '$Strengen er et palindrom$'

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

    CRLF:DB ODH,OAH,0; Vognretur og linjetilførsel

    ; Slut på programmet

    ```

    Forrige :

    næste :
      Relaterede artikler
    ·Forskelle mellem bibliotek Funktion & brugerdefineret f…
    ·Vise dig forskellige typer skrifttyper med alle bogstav…
    ·Sådan Adskil en event handler i jQuery 
    ·Sådan bruges Device - Mapper Multipath 
    ·Hvordan man kompilerer SWC 
    ·Sådan ændres et PanelView 
    ·Hvordan man kompilerer Notesblok i Programmører 
    ·Hvordan laver pauser i en Turbo Pascal 7 
    ·Sådan bruges DataGrid for redigering og sletning 
    ·Sådan redigeres en række i GridView 
      Anbefalede Artikler
    ·Sådan sammenkæde en streng med en variabel i JavaScri…
    ·Sådan Indsæt en Decimal i PHP MySQL 
    ·Hvordan til profil Perl Programmer 
    ·Sådan Vise Kolonne Beskrivelse i SQL 
    ·Hvordan man laver en animation ved hjælp af Java 
    ·Sjove ting at gøre med Visual Basic 
    ·Sådan tilføjes en MSG Block 
    ·Sådan Batch Indsæt en PHP fil i MySQL 
    ·Sådan Læs SQL Fra Visual C 
    ·Sådan kører en Python script fra en Shell 
    Copyright © Computer Viden https://www.computerdk.com