Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPVI_Spausdinti2003M.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.88 Mб
Скачать

6 Lentelė. Kreipimosi į paprogrames ir grįžimo komandos

Eil.

Nr.

Komandos

mnemonika

Baitai

Komandos

komentaras

1.

CALL ADR

3

M[SP] ← PC, PC ← ADR, besąlygiškai

2.

CNZ ADR

3

M[SP] ← PC, PC ← ADR, kai Z=0

3

CZ ADR

3

M[SP] ← PC, PC ← ADR, kai Z=1

4.

CNC ADR

3

M[SP] ← PC, PC ← ADR, kai CY=0

5.

CC ADR

3

M[SP] ← PC, PC ← ADR, kai CY=1

6.

CPO ADR

3

M[SP] ← PC, PC ← ADR, kai P=0

7.

CPE ADR

3

M[SP] ← PC, PC ← ADR, kai P=1

8.

CP ADR

3

M[SP] ← PC, PC ← ADR, kai S=0

9.

CM ADR

3

M[SP] ← PC, PC ← ADR, kai S=1

10.

RET

1

PC ← M[SP], besąlygiškai

11.

RNZ

1

PC ← M[SP], kai Z=0

12

RZ

1

PC ← M[SP], kai Z=1

13.

RNC

1

PC ← M[SP], kai CY=0

14.

RC

1

PC ← M[SP], kai CY=1

15.

RPO

1

PC ← M[SP], kai P=0

16.

RPE

1

PC ← M[SP], kai P=1

17.

RP

1

PC ← M[SP], kai S=0

18.

RM

1

PC ← M[SP], kai S=1

Grįžimo iš paprogramių komandų veiksmai yra vienodi – grįžimo adreso (įsiminto dėklo atmintyje PC turinio) rašymas į PC. Sąlyginėms grįžimo komandoms galioja tos pačios sąlygos, kaip ir kreipimosi į paprogrames bei valdymo perdavimo komandoms.

Šios grupės CALL ir RET komandų tipinio panaudojimo pavyzdys atrodo taip:

LXI SP, D16 ;SP ß D16, SP pradinis nustatymas, D16 – 2 baitų TOS adresas

. . . . . . . . ;pagrindinė programa

M1: CALL MP ;M[SP] ß PC = M2, PC ß MP (paprogramės vardas, adresas)

M2: . . . . . . . . ;pagrindinė programa

MP: PUSH PSW ;M[SP] ß PSW (paprogramės pradžia)

PUSH BC ;M[SP] ß BC

PUSH DE ;M[SP] ß DE

PUSH HL ;M[SP] ß HL

. . . . . . . . ;paprogramės turinys (kūnas)

POP HL ;HL ß M[SP]

POP DE ;DE ß M[SP]

POP BC ;BC ß M[SP]

POP PSW ;PSW ß M[SP]

MG: RET ;PC ß M[SP], PC = M2 (paprogramės

pabaiga)

Prieš pradedant kreiptis į paprogramę (es), LXI SP, D16 (SPHL) komanda nustatomas dėklo atminties rodiklis, kuris rodo dėklo viršūnės (TOS) adresą. Paprastai dėklo atminties pradžia yra didžiausias galimas atminties lauko adresas (pvz., FFFFH). M1: programos vietoje vykdoma kreipimosi į paprogramę komandą, t.y. į dėklo atmintį, pradedant adresu SP–1, įrašomas PC turinys, kuris lygus M2: adresui (grįžimo adresui). Po to į PC įrašomas MP (paprogramės pradžios adresas, nurodytas jos komandoje, kaip 2 –asis ir 3 – asis baitai). Pereinama į paprogramės pradžią (MP programos vietą). Paprogramėje, PUSH PSW, PUSH BC, PUSH DE, PUSH HL komandomis mikroprocesoriaus registrų turinys (kontekstas) įsimenamas dėklo atmintyje. Toliau vykdomos komandos, įrašytos paprogramės turinyje (kūne). Čia, gali būti atliekamos bet kokios komandos, pagal tą patį scenarijų pereinama į kitas paprogrames, naudojamos PUSH, POP komandos, pastarųjų skaičius turi būti vienodas. Prieš baigiant darbą paprogramėje, POP HL, POP DE, POP BC, POP PSW komandomis atvirkščia tvarka MP registrų turinys (kontekstas) atstatomas, skaitant duomenis iš dėklo atminties. Paprogramės gale (MG programos vietoje) vykdoma RET (grįžimo) komanda, kuri iš dėklo atminties 2 baitus perkelia į PC. Šie duomenys yra M2 grįžimo adresas. Pereinama į M2 programos vietą ir pradedama vykdyti šioje vietoje įrašytą komandą.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]