Paprastos 8086 asamblėjos kalbos programos su paaiškinimu

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Surinkimo lygio programavimas yra labai svarbus žemam lygiui integruota sistema dizainas naudojamas norint pasiekti procesoriaus instrukcijas, kad būtų galima manipuliuoti aparatine įranga. Tai yra pati primityviausia mašininio lygio kalba, naudojama norint sukurti efektyvų kodą, kuris sunaudoja mažiau laikrodžio ciklų ir užima mažiau atminties, palyginti su aukšto lygio programavimo kalba . Programavimui rašyti programuotojas turi žinoti apie įterptą aparatinę įrangą. Čia pateikiame surinkimo lygio programavimo 8086 pagrindus.

Surinkimo lygio programavimas 8086

Surinkimo lygio programavimas 8086



Surinkimo lygio programavimas 8086

The surinkimo programavimo kalba yra žemo lygio kalba, kuri sukurta naudojant mnemoniką. Mikrovaldiklis arba mikroprocesorius gali suprasti tik dvejetainę kalbą, pvz., 0 arba 1, todėl surinkėjas konvertuoja surinkimo kalbą į dvejetainę kalbą ir saugo ją atmintyje užduotims atlikti. Prieš rašydami programą, įterptieji dizaineriai turi turėti pakankamai žinių apie tam tikrą valdiklio ar procesoriaus techninę įrangą, todėl pirmiausia turėjome žinoti 8086 procesoriaus aparatūrą.


Procesoriaus aparatinė įranga

Procesoriaus aparatinė įranga



8086 procesoriaus architektūra

8086 yra procesorius, kuris atstovauja visiems periferiniams įrenginiams, tokiems kaip nuoseklioji magistralė, RAM ir ROM, I / O įrenginiai ir pan., Kurie visi yra išoriškai prijungti prie procesoriaus naudojant sistemos magistralę. 8086 mikroprocesorius turi CISC architektūra ir turi periferinius įrenginius, tokius kaip 32 įvestys / išvestys, Serijinis bendravimas , prisiminimai ir skaitikliai / laikmačiai . Mikroprocesoriui reikalinga programa, kad būtų galima atlikti veiksmus, kuriems reikia atminties, kad būtų galima skaityti ir išsaugoti funkcijas.

8086 procesoriaus architektūra

8086 procesoriaus architektūra

Surinkimo lygio programavimas 8086 pagrįstas atminties registrais. Registras yra pagrindinė mikroprocesoriai ir valdikliai kurios yra atmintyje, kuri suteikia galimybę greičiau rinkti ir saugoti duomenis. Jei norime manipuliuoti duomenimis procesoriuje ar valdiklyje, daugindami, pridėdami ir pan., Negalime to padaryti tiesiogiai atmintyje, kur reikalingi registrai duomenims apdoroti ir laikyti. 8086 mikroprocesoriuje yra įvairių rūšių registrai, kuriuos galima klasifikuoti pagal jų nurodymus, pvz

Bendrosios paskirties registrai : 8086 procesorių sudarė 8 bendrosios paskirties registrai ir kiekvienas registras turi savo pavadinimą, kaip parodyta paveikslėlyje, pvz., AX, BX, CX, DX, SI, DI, BP, SP. Tai visi 16 bitų registrai, kuriuose keturi registrai yra padalyti į dvi dalis, tokias kaip AX, BX, CX ir DX, kurie daugiausia naudojami skaičiams laikyti.

Specialios paskirties registrai : 8086 procesorius sudarė 2 specialių funkcijų registrus, tokius kaip IP ir vėliavų registrai. IP registras nurodo dabartinę vykdymo instrukciją ir visada dirba rinkdamas CS segmentų registrą. Pagrindinė vėliavos registrų funkcija yra modifikuoti procesoriaus operacijas baigus mechanines funkcijas ir mes negalime tiesiogiai prieiti
Segmentų registrai: 8086 procesorių sudarė 4 segmentų registrai, tokie kaip CS, DS, ES, SS, kurie daugiausia naudojami norint išsaugoti bet kokius duomenis segmentų registruose, ir mes galime pasiekti atminties bloką naudodami segmentų registrus.


Paprastos surinkimo kalbos programos 8086

Surinkimo kalbos programavimas 8086 turi keletą taisyklių, tokių kaip

  • Surinkimo lygis programavimas 8086 kodas turi būti parašytas didžiosiomis raidėmis
  • Po etikečių turi būti dvitaškis, pavyzdžiui: label:
  • Visos etiketės ir simboliai turi prasidėti raide
  • Visi komentarai rašomi mažosiomis raidėmis
  • Paskutinė programos eilutė turi būti baigta END direktyva

8086 procesoriai turi dvi kitas prieigos prie duomenų instrukcijas, pvz., WORD PTR - žodžiu (du baitai), BYTE PTR - baitą.

„Op-Code“ ir „Operand“

„Op-Code“ ir „Operand“

Op kodas: Viena instrukcija vadinama op-kodu, kurį gali vykdyti centrinis procesorius. Čia „MOV“ instrukcija vadinama op-kodu.

Operandai: Vieno gabalo duomenys vadinami operandais, kuriuos galima valdyti naudojant op-kodą. Pavyzdžiui, atimties operaciją atlieka operandai, atimami iš operando.
Sintaksė: B, c

8086 mikroprocesoriaus surinkimo kalbos programos

Parašykite programą, kaip perskaityti simbolį iš klaviatūros

MOV ah, 1h // klaviatūros įvesties paprogramė
INT 21h // simbolių įvestis
// simbolis saugomas al
MOV c, al // nukopijuokite simbolį iš alto c

Parašykite simbolio skaitymo ir rodymo programą

MOV ah, 1h // klaviatūros įvesties paprogramė
INT 21h // perskaityti simbolį į al
MOV dl, al // nukopijuokite simbolį į dl
MOV ah, 2h // simbolių išvesties paprogramė
INT 21h // rodyti simbolį dl

Parašykite programą naudodami bendrosios paskirties registrus

ORG 100h
MOV AL, VAR1 // patikrinkite VAR1 reikšmę perkeldami ją į AL.
LEA BX, VAR1 // gauti VAR1 adresą BX.
MOV BYTE PTR [BX], 44h // modifikuoti VAR1 turinį.
MOV AL, VAR1 // patikrinkite VAR1 reikšmę perkeldami ją į AL.
TEISĖ
VAR1 DB 22val
GALAS

Parašykite eilutės atvaizdavimo programą naudodami bibliotekos funkcijas

įtraukti emu8086.inc // Makro deklaracija
ORG 100h
SPAUSDINKITE „Sveikas pasauli!“
GOTOKSI 10, 5
PUTC 65 // 65 - „A“ ASCII kodas
PUTC „B“
RET // grįžti į operacinę sistemą.
END // direktyva sustabdyti kompiliatorių.

Aritmetikos ir logikos instrukcijos

8086 aritmetinio ir loginio vieneto procesai buvo suskirstyti į tris grupes, tokias kaip pridėjimo, dalijimo ir prieaugio operacijos. Dauguma Aritmetikos ir logikos instrukcijos paveikti procesoriaus būsenos registrą.

Surinkimo kalbos programavimas 8086 mnemonika yra op-kodo pavidalu, pavyzdžiui, MOV, MUL, JMP ir kt., Kurie naudojami operacijoms atlikti. Surinkimo kalbos programavimas 8086 pavyzdžiai

Papildymas
ORG0000h
MOV DX, # 07H // perkelkite 7 reikšmę į registrą AX //
MOV AX, # 09H // perkelkite 9 reikšmę į akumuliatorių AX //
Pridėkite AX, 00H // pridėkite CX reikšmę su R0 verte ir išsaugokite rezultatą AX //
GALAS
Dauginimas
ORG0000h
MOV DX, # 04H // 4 reikšmę perkelkite į registrą DX //
MOV AX, # 08H // perkelkite 8 reikšmę į akumuliatorių AX //
MUL AX, 06H // Padaugintas rezultatas saugomas akumuliatoriaus AX //
GALAS
Atimtis
ORG 0000h
MOV DX, # 02H // perkelkite 2 reikšmę, kad užregistruotumėte DX //
MOV AX, # 08H // perkelkite 8 reikšmę į akumuliatorių AX //
SUBB AX, 09H // Rezultato vertė saugoma akumuliatoriuje A X //
GALAS
Skyrius
ORG 0000h
MOV DX, # 08H // perkelkite 3 reikšmę, kad užregistruotumėte DX //
MOV AX, # 19H // 5 reikšmę perkelkite į akumuliatorių AX //
DIV AX, 08H // galutinė vertė saugoma akumuliatoriuje AX //
GALAS

Todėl visa tai yra surinkimo lygio programavimo 8086, 8086 procesoriaus architektūros paprastos pavyzdinės programos, skirtos 8086 procesoriams, aritmetikos ir logikos instrukcijos. Be to, jei turite klausimų dėl šio straipsnio ar elektronikos projektų, galite susisiekti su mumis komentuodami toliau pateiktame komentarų skyriuje.