|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> Computer Programspråk >> Content

    Mikroprocessor 8085 programkod för palindrom?

    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

    ```

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man kompilerar en fil i TASM
    ·Vad är teckenkoden
    ·Prolog Programming Tutorial
    ·Hjälp med Turbo Pascal 7.0
    ·Hur konvertera ett Word till ett heltal
    ·Hur man redigerar en WAB
    ·När användes datorprogrammeringsspråket Visual C fö…
    ·Hur man drar ett flödesschema för CSS Hierarki
    ·Skillnader mellan Länkar & Buttons Rollover
    ·Hur kan vi minska MPI
    Utvalda artiklarna
    ·Hur är en Gaussisk Sannolikhet anordning som används
    ·Datatyper i VB6
    ·Hur man gör Spaces in mellan flera strängar i Python
    ·Hur man gör en Array i C som innehåller flera sträng…
    ·Hur att bearbeta en kryssruta Med PHP
    ·Inaktivera Magiska Quotes i PHP
    ·Hur man beräknar en checksumma i VB
    ·Hur man utvecklar en testplan
    ·Vad är IndexError i Python
    ·Konvertera en ByteArray OutputStream till en InputStrea…
    Copyright © Dator Kunskap https://www.dator.xyz