Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Programový kód mikroprocesora 8085 pre palindróm?

Tu je možný program zostavy 8085 na kontrolu, či daný reťazec je palindróm:

```montáž

ORG 100H

; Definujte konštanty

STRLEN EQU 10

NULL_BYTE EQU 0

; Definujte miesta v pamäti

ORIGIN:ekv 02H

STRING_LOCATION:ekv 03H

STRING_LENGTH:ekv 04H

; Definujte použitie registra

A:ekv 0; Akumulátor

B:ekv 1; Nepriama pamäť

C:ekv 2; Noste register

D:ekv 3; Register údajov

E:ekv 4; Indexový register

H:ekv 5; Vysoký register 16-bitovej hodnoty

L:ekv 6; Nízky register 16-bitovej hodnoty

M:ekv 7; Ukazovateľ zásobníka

P:ekv 8; Stavové slovo programu

; Definujte vlajky

NULA:bit 0,P; Nulová vlajka

SIGN:bit 1,P; Podpísať vlajku

PARITY:bit 2,P; Vlajka parity

PRENOS:bit 4,P; Nosiť vlajku

; Hlavný program začína tu

HLAVNÉ:

; Inicializujte údaje

XCHG H,L; Výmena registrov H a L

MVI E, STRING_DĹŽKA; Nastavte E na dĺžku reťazca

MOV H,E; Skopírujte dĺžku do H

MVI L,NULL_BYTE; Inicializujte L s nulovým bajtom

SHLD ORIGIN; Dĺžku uložte na adresu ORIGIN

MVI E,STRLEN; Nastavte E na maximálnu dĺžku reťazca

MOV D,STRLEN; Skopírujte maximálnu dĺžku do D

LOOP1:

XTHL; Zameňte registre H a L na načítanie z adresy pamäte

MVI M,0; Inicializujte pamäťové miesto s nulovým bajtom

INCR M; Ukazovateľ prírastku pamäte

DCRE D; Znížte dĺžku reťazca

NZ LOOP1; Pokračujte, kým dĺžka reťazca nedosiahne 0

MVI E,STRLEN; Nastavte E na maximálnu dĺžku reťazca

MOV D,STRLEN; Skopírujte maximálnu dĺžku do D

READ_STRING:

IN 0,A; Prečítajte si znak z klávesnice

MOV H,A; Uložte postavu do H

XTHL; Zameňte registre H a L na načítanie z adresy pamäte

MVI M,0; Inicializujte pamäťové miesto s nulovým bajtom

LHLD ORIGIN; Načítajte pôvodnú adresu z pamäte

INCR M; Ukazovateľ prírastku pamäte

MOV L,A; Uložte postavu do L

SHLD ORIGIN; Uložte adresu nasledujúceho znaku do pamäte

DCRE D; Znížte dĺžku reťazca

NZ READ_STRING; Pokračujte, kým dĺžka reťazca nedosiahne 0

; Funkcia na kontrolu, či je reťazec palindróm

IS_PALINDROME:

; Uložiť registre

PUSH H

STLAČIŤ D

; Prevlečte polovicu šnúrky

LHLD ORIGIN; Načítajte pôvodnú adresu z pamäte

MOV H,L; Skopírujte spodný bajt adresy do H

PRIDAŤ HL; Zvýšte adresu

MOV L,H; Skopírujte vysoký bajt adresy do L

MOV D,L; Skopírujte vysoký bajt adresy do D

DAD D; Zdvojnásobte adresu

XCHG H,D; Vymeňte registre H a D

MOV H,A; Uložte posledný znak do H

DCRE E; Znížte dĺžku reťazca

LOOP_PAL:

LHLD ORIGIN; Načítajte pôvodnú adresu z pamäte

MOV L,H; Skopírujte spodný bajt adresy do L

DAD D; Zdvojnásobte adresu

XTHL; Zameňte registre H a L na načítanie z adresy pamäte

CPI M; Porovnajte znak na aktuálnej adrese s posledným znakom

PUSH PSW; Uložte príznaky stavu

ANI NULA; Skontrolujte, či sú znaky rovnaké

POP PSW; Obnovte stavové príznaky

JZ NOT_PALINDROME; Ak je rovnaký, pokračujte

XCHG H,D; Vymeňte registre H a D

MOV H,A; Uložte ďalší znak do H

DCRE E; Znížte dĺžku reťazca

NZ LOOP_PAL; Pokračujte až do konca šnúrky

POP D

POP H

; Koniec funkcie

RET

NOT_PALINDROME:

CMP E,0; Skontrolujte, či je dĺžka reťazca 0

JZ PAL_DONE; Ak je 0, reťazec je palindróm

POP D

POP H

; Funkcia na tlač reťazca

PRINT_STRING:

; Uložiť registre

STLAČIŤ D

LOOP_PRINT:

LHLD ORIGIN; Načítajte pôvodnú adresu z pamäte

OUT 0,A; Vytlačte znak na aktuálnej adrese

XTHL; Zameňte registre H a L na načítanie z adresy pamäte

CPI NULL_BYTE; Skontrolujte, či je znak prázdnym bajtom

POP D

RETNZ

; Funkcia na vytlačenie správy označujúcej, že reťazec je palindróm

PRINT_PALINDROME:

MOV E,STR_PALINDROME; Presuňte adresu správy do registra E

CALL PRINT_STRING; Zavolajte funkciu PRINT_STRING

; Funkcia na vytlačenie správy označujúcej, že reťazec nie je palindróm

PRINT_NOT_PALINDROME:

MOV E,STR_NOT_PALINDROME; Presuňte adresu správy do registra E

CALL PRINT_STRING; Zavolajte funkciu PRINT_STRING

; Vytlačte výsledok kontroly palindrómu

MVI A,'$'; Vytlačte znak dolára na oddelenie výsledku

OUT 0,A; Vytlačte znak dolára

CMP E,0; Skontrolujte, či je reťazec palindróm

JZ PRINT_PALINDROME; Ak je 0, vytlačte správu palindrómu

CALL PRINT_NOT_PALINDROME; V opačnom prípade vytlačte správu nie je palindróm

; Vytlačte znak nového riadku

OUT 0,CRLF

; Zastavte program

HLT

; Reťazce na tlač

STR_PALINDROME:DB '$Reťazec je palindróm$'

STR_NOT_PALINDROME:DB '$Reťazec nie je palindróm$'

CRLF:DB ODH,OAH,0; Vrátenie vozíka a posuv riadku

; Koniec programu

```

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené