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

38 Pav. Betarpiško adresavimo komandos formatas: db – duomenų baitas; dbh – duomenų vyresnysis baitas; dbl – duomenų jaunesnysis baitas;

Po mnemo kodo rašomi komandos operandai, naudojant šiuos sutartinius žymenis:

  • R, R1, R2 – 8 skilčių registrai (A, B, C, D, E, H, L) ;

  • RP – 16 skilčių registrų pora (BC, DE, HL, kai kuriose komandose PSW, SP);

  • RPH, RPL – registrų poros vyresnysis registras (B, D, H) ir – jaunesnysis registras (C, E, L);

  • M – atminties ląstelė (pseudoregistras), kurios adresas nurodytas HL registrų poroje;

  • D8 – 8 skilčių duomenų baitas;

  • D16 – 16 skilčių (2 baitų) duomenys;

  • D16H, D16L – vyresnysis ir jaunesnysis duomenų baitai;

  • ADR – 16 skilčių (2 baitų adresas);

  • ADRH, ADRL – vyresnysis ir jaunesnysis adreso baitai;

  • PORT – 8 skilčių (1 baito) porto adresas;

  • M[ ] – atminties ląstelė, kurios adresas nurodytas laužtiniuose skliaustuose;

Duomenų perkėlimo kryptis žymima rodyklėmis:

  • “←” – vienpusė;

  • “↔” – dvipusė.

Pagal funkcinę paskirtį komandų sistemos komandas galima suskirstyti į grupes:

  1. Duomenų perdavimo (perkėlimo) ir dėklo atminties komandos.

  2. Aritmetinės ir loginės komandos.

  3. Valdymo perdavimo (nukreipimo) komandos.

  4. Paprogramių komandos.

  5. Įvesties ir išvesties bei specialiosios komandos.

18. Duomenų perkėlimo (perdavimo) ir dėklo (steko) atminties komandos

Šios grupės komandos skirtos duomenims perduoti tarp registrų, tarp registrų ir atminties, duomenims įrašyti į registrus, programos skaitiklio PC turiniui pakeisti bei dėklo atminčiai valdyti. Grupėje yra 18 bazinių komandų. Komandų sąrašas pateiktas 1 lentelėje. Šios komandos yra dažniausiai naudojamos programose (sudaro apie 45 % visų komandų). Jos požymių nekeičia, išskyrus vieną komandą (POP PSW), kuri iš dėklo atminties perkelia 2 duomenų baitus į PSW.

MOV, MVI, LDA, STA, LDAX, STAX komandose naudojami baitiniai duomenys (DB), o kitose duomenų žodžiai (DW) – 2 baitai.

1 Lentelė. Duomenų perdavimo ir dėklo (steko) atminties komandos

Eil.

Nr.

Komandos

mnemonika

Baitai

Komandos

komentaras

1.

MOV R1, R2

1

R1 ← R2

2.

MOV R, M

1

R ← M[HL]

3

MOV M, R

1

M[HL] ← R

4.

MVI R, D8

2

R ← D8

5.

MVI M, D8

2

M[HL] ← D8

6.

LXI RP, D16

3

RPH ← D16H, RPL ← D16L

7.

LDA ADR

3

A ← M[ADR]

8.

STA ADR

3

M[ADR] ← A

9.

LDAX RP

1

A ← M[RP]

10.

STAX RP

1

M[RP] ← A

11.

LHLD ADR

3

L ← M[ADR], H ← M[ADR+1]

12.

SHLD ADR

3

M[ADR] ← L, M[ADR+1] ← H

13.

XCHG

1

HL ↔ DE

14.

PCHL

1

PC ← HL, PC=PC+1

15.

PUSH RP

1

M[SP-1] ← RPH, M[SP-2] ← RPL

16.

POP RP

POP PSW

1

1

RPL ← M[SP], RPH ← M[SP+1],

SP ← SP+1

17.

XTHL

1

L ↔ M[SP], H ↔ M[SP+1]

18.

SPHL

1

SP ← HL

Duomenų baito perdavimą tarp registrų vykdo MOV R1, R2 komanda, naudodama tiesioginį registrų adresavimą, nurodant komandos baite šalia OK ir OP (registrų R1 ir R2 kodus).

MOV R, M ir MOV M, R komandos duomenų baitą perduoda tarp registro ir atminties ląstelės, kurios adresas nurodytas HL registrų poroje (rodo M raidė), naudodamos netiesioginį registrų adresavimą.

MVI R, D8 ir MVI M, D8 komandose betarpiškai įrašius duomenų baitą (D8), jį galima perduoti į registrą (R) arba į atminties ląstelę (M), naudojant atitinkamai tiesioginį ir netiesioginį registrų bei betarpišką adresavimus.

LXI RP, D16 komanda, betarpiškai joje įrašius 16 skilčių (2 baitų) duomenis, juos perkelia į BC, DE, HL registrų poras ir SP registrą. Kaip MVI komanda, taip ir LXI naudoja betarpišką adresavimą.

Duomenų mainams tarp atminties ląstelės ir akumuliatoriaus naudojamos 4 komandos: LDA ADR, STA ADR, LDAX RP, STAX RP. Akumuliatorius įkraunamas duomenų baitu iš atminties ląstelės LDA ADR, LDAX RP komandomis, o iškraunamas atvirkštinėmis STA ADR, STAX RP komandomis, perkeliant baitą į atminties ląstelę. LDA ADR, STA ADR komandose naudojamas tiesioginis adresavimo, o LDAX RP, STAX RP netiesioginis registrų adresavimo būdas. LDAX RP, STAX RP komandose naudojamos tik BC ir DE registrų poros.

Duomenims perduoti, naudojant HL registrų porą, skirtos LHLD ADR, SHLD ADR komandos. LHLD ADR komanda registrų pora HL įkraunama, duomenų žodį perduodant iš atminties, o atvirkštine SHLD ADR komanda ši registrų pora iškraunama, duomenų žodį perkeliant į atmintį. Abiejose komandose taikomas tiesioginis adresavimas.

PUSH RP, POP RP dėklo atminties valdymo komandos organizuoja registrų poros (BC, DE, HL, PSW) turinio rašymą į dėklo atmintį ir skaitymą iš šios atminties į nurodytą RP. Prieš pradedant šias komandas naudoti, būtina nustatyti dėklo atminties rodiklį (dėklo viršūnę) LXI SP, D16 arba SPHL komandomis. Rašant į dėklo atmintį, SP turinys 2 mažėja, o skaitant atvirščiai 2 – auga. Dėklo atminties komandos sukuria patogų mechanizmą MP kontekstui išsaugoti ir atstatyti, naudojant programoje paprogrames ir pertrauktis. PUSH RP, POP RP komandose naudojamas netiesioginis registrų adresavimo būdas.

XCHG ir XTHL komandų pora užtikrina dvipusius duomenų žodžio perdavimus tarp registrų porų DE ir HL bei HL ir dėklo atminties. Antroji komanda (XTHL) leidžia tiesiogiai keisti dėklo atminties viršūnės turinį. Ši komanda ypač patogi, kai paprogramės faktiniams parametrams perduoti naudojama programų atminties sritis, esanti po paprogramės iškvietimo komandos. XTHL komanda užtikrina paprastą parametrų srities pradžios adreso nustatymą paprogramėje, parametrų skaitymą (taikant komandas su M operandu) ir grįžimo adreso į pagrindinę programą modifikavimą. Taip pat komanda naudojama, nustatant bet kurioje programos vietoje programos skaitiklio turinį (žymės adresą), naudojant fiktyvią paprogramės iškvietimo komandą. Paprogramės vardas turi sutapti su žymės pavadinimu, o žymė įrašyta po paprogramės iškvietimo komandos. Žymės vietoje rašoma XTHL komanda, kurią atlikus HL registrų poroje bus įsimintas programos žymės adresas. Šis adresas gali būti naudojamas organizuojant realiatyvųjį adresavimą.

PCHL komanda vykdo perėjimą į programos vietą, kurios adresas nurodytas HL registrų poroje. Ši komanda naudojama, organizuojant perėjimus pagal suskaičiuotą adresą.

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