Vienkāršas 8086 asamblejas valodu programmas ar skaidrojumu

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Montāžas līmeņa programmēšana ir ļoti svarīga zemam līmenim iegultā sistēma dizains tiek izmantots, lai piekļūtu procesora instrukcijām, lai manipulētu ar aparatūru. Tā ir primitīvākā mašīnas līmeņa valoda, ko izmanto, lai izveidotu efektīvu kodu, kas patērē mazāk pulksteņa ciklu un aizņem mazāk atmiņas, salīdzinot ar augsta līmeņa programmēšanas valoda . Tā ir pilnīga uz aparatūru orientēta programmēšanas valoda, lai rakstītu programmu, un programmētājam ir jāzina iegultā aparatūra. Šeit mēs piedāvājam montāžas līmeņa programmēšanas 8086 pamatus.

Asamblejas līmeņa programmēšana 8086

Asamblejas līmeņa programmēšana 8086



Asamblejas līmeņa programmēšana 8086

The montāžas programmēšanas valoda ir zema līmeņa valoda, kas izstrādāta, izmantojot mnemotehniku. Mikrokontrolieris vai mikroprocesors var saprast tikai bināro valodu, piemēram, 0 vai 1, tāpēc montētājs konvertēšanas valodu pārvērš binārā valodā un glabā tajā atmiņu, lai veiktu uzdevumus. Pirms programmas rakstīšanas iegultajiem dizaineriem jābūt pietiekamām zināšanām par noteiktu kontroliera vai procesora aparatūru, tāpēc vispirms mums bija jāzina 8086 procesora aparatūra.


Procesora aparatūra

Procesora aparatūra



8086 Procesora arhitektūra

8086 ir procesors, kas ir pārstāvēts visām perifērijas ierīcēm, piemēram, sērijveida kopnei, RAM un ROM, I / O ierīcēm utt., Kuras visas ir ārēji savienotas ar CPU, izmantojot sistēmas kopni. 8086 mikroprocesoram ir CISC balstīta arhitektūra , un tam ir tādas perifērijas ierīces kā 32 I / O, Seriālā komunikācija , atmiņas un skaitītāji / taimeri . Mikroprocesoram ir nepieciešama programma, lai veiktu darbības, kuru lasīšanai un funkciju saglabāšanai nepieciešama atmiņa.

8086 Procesora arhitektūra

8086 Procesora arhitektūra

Montāžas līmeņa programmēšana 8086 ir balstīta uz atmiņas reģistriem. Reģistrs ir galvenā programmas sastāvdaļa mikroprocesori un kontrolieri kas atrodas atmiņā, kas nodrošina ātrāku datu vākšanas un uzglabāšanas veidu. Ja mēs vēlamies manipulēt ar datiem ar procesoru vai kontrolieri, veicot reizināšanu, saskaitīšanu utt., Mēs to nevaram izdarīt tieši atmiņā, kur datu apstrādei un glabāšanai ir nepieciešami reģistri. 8086 mikroprocesors satur dažāda veida reģistrus, kurus var klasificēt atbilstoši to instrukcijām, piemēram,

Vispārējas nozīmes reģistri : 8086 CPU sastāv no 8 vispārējas nozīmes reģistriem, un katram reģistram ir savs nosaukums, kā parādīts attēlā, piemēram, AX, BX, CX, DX, SI, DI, BP, SP. Tie visi ir 16 bitu reģistri, kur četri reģistri ir sadalīti divās daļās, piemēram, AX, BX, CX un DX, ko galvenokārt izmanto numuru glabāšanai.

Īpaša mērķa reģistri : 8086 CPU sastāv no 2 īpašiem funkciju reģistriem, piemēram, IP un karodziņu reģistriem. IP reģistrs norāda uz pašreizējo izpildes instrukciju un vienmēr strādā, lai apkopotu CS segmentu reģistru. Karogu reģistru galvenā funkcija ir modificēt procesora darbības pēc tam, kad mehāniskās funkcijas ir pabeigtas, un mēs nevaram tieši piekļūt
Segmentu reģistri: 8086 CPU sastāv no 4 segmentu reģistriem, piemēram, CS, DS, ES, SS, kurus galvenokārt izmanto, lai visus datus varētu uzglabāt segmentu reģistros, un mēs varam piekļūt atmiņas blokam, izmantojot segmentu reģistrus.


Vienkāršas montāžas valodas programmas 8086

Montāžas valodas programmēšanā 8086 ir daži noteikumi, piemēram,

  • Montāžas līmenis programmēšana 8086 kods jāraksta ar lielajiem burtiem
  • Pēc etiķetēm jābūt ar kolu, piemēram: label:
  • Visām etiķetēm un simboliem jāsākas ar burtu
  • Visi komentāri ir rakstīti ar mazajiem burtiem
  • Programmas pēdējā rinda jāpabeidz ar END direktīvu

8086 procesoriem ir divas citas instrukcijas, kā piekļūt datiem, piemēram, WORD PTR - vārds (divi baiti), BYTE PTR - baits.

Op-kods un operands

Op-kods un operands

Op kods: Viena opcija tiek izsaukta kā op kods, kuru CPU var izpildīt. Šeit “MOV” instrukciju sauc par op-kodu.

Operandi: Viengabala datus sauc par operandiem, kurus var vadīt ar op-kodu. Piemērs: atņemšanas darbību veic operandi, kurus atņem operands.
Sintakse: SUB b, c

8086 mikroprocesoru montāžas valodu programmas

Uzrakstiet programmu rakstzīmes lasīšanai no tastatūras

MOV ah, 1h // tastatūras ievades apakšprogramma
INT 21h // rakstzīmju ievade
// rakstzīme tiek saglabāta al
MOV c, al // kopēt rakstzīmi no alto c

Uzrakstiet programmu rakstzīmes lasīšanai un parādīšanai

MOV ah, 1h // tastatūras ievades apakšprogramma
INT 21h // rakstzīmi lasīt al
MOV dl, al // kopēt rakstzīmi uz dl
MOV ah, 2h // rakstzīmju izvades apakšprogramma
INT 21h // attēlot rakstzīmi dl

Rakstiet programmu, izmantojot vispārējas nozīmes reģistrus

ORG 100 stundas
MOV AL, VAR1 // pārbaudiet VAR1 vērtību, pārvietojot to uz AL.
LEA BX, VAR1 // iegūt VAR1 adresi BX.
MOV BYTE PTR [BX], 44 h // modificēt VAR1 saturu.
MOV AL, VAR1 // pārbaudiet VAR1 vērtību, pārvietojot to uz AL.
PA LABI
VAR1 DB 22h
BEIGT

Uzrakstiet virknes parādīšanas programmu, izmantojot bibliotēkas funkcijas

iekļaut emu8086.inc // Makro deklarācija
ORG 100 stundas
IESPIEDT “Sveika pasaule!”
GOTOKSIJA 10, 5
PUTC 65 // 65 - ASCII kods “A”
PUTC “B”
RET // atgriezties operētājsistēmā.
END // direktīva, lai apturētu kompilatoru.

Aritmētiskās un loģiskās instrukcijas

8086 aritmētiskās un loģiskās vienības procesi ir sadalīti trīs grupās, piemēram, saskaitīšanas, dalīšanas un pieauguma operācijās. Lielākā daļa Aritmētiskās un loģiskās instrukcijas ietekmēt procesora statusa reģistru.

Montāžas valodas programmēšana 8086 mnemotika ir op-koda formā, piemēram, MOV, MUL, JMP un tā tālāk, ko izmanto darbību veikšanai. Montāžas valodas programmēšana 8086 piemēri

Papildinājums
ORG0000h
MOV DX, # 07H // pārvietojiet vērtību 7 uz reģistru AX //
MOV AX, # 09H // pārvietojiet vērtību 9 uz akumulatoru AX //
Pievienojiet AX, 00H // pievienojiet CX vērtību ar R0 vērtību un saglabājiet rezultātu AX //
BEIGT
Reizināšana
ORG0000h
MOV DX, # 04H // pārvietojiet vērtību 4 uz reģistru DX //
MOV AX, # 08H // pārvietojiet vērtību 8 uz akumulatoru AX //
MUL AX, 06H // Reizināts rezultāts tiek saglabāts akumulatorā AX //
BEIGT
Atņemšana
ORG 0000h
MOV DX, # 02H // pārvietojiet vērtību 2, lai reģistrētu DX //
MOV AX, # 08H // pārvietojiet vērtību 8 uz akumulatoru AX //
SUBB AX, 09H // Rezultāta vērtība tiek saglabāta akumulatorā A X //
BEIGT
Nodaļa
ORG 0000h
MOV DX, # 08H // pārvietojiet vērtību 3, lai reģistrētu DX //
MOV AX, # 19H // pārvietojiet vērtību 5 uz akumulatoru AX //
DIV AX, 08H // galīgā vērtība tiek saglabāta akumulatorā AX //
BEIGT

Tāpēc tas viss attiecas uz montāžas līmeņa programmēšanas 8086, 8086 procesora arhitektūras vienkāršām piemēru programmām 8086 procesoriem, aritmētisko un loģisko instrukciju. Turklāt, ja jums ir kādi jautājumi par šo rakstu vai elektronikas projektiem, varat sazināties ar mums, komentējot zemāk esošajā komentāru sadaļā.