Proste programy języka asemblera 8086 z objaśnieniem

Wypróbuj Nasz Instrument Do Eliminowania Problemów





Programowanie na poziomie zestawu jest bardzo ważne dla niskiego poziomu Wbudowany system design służy do uzyskiwania dostępu do instrukcji procesora w celu manipulowania sprzętem. Jest to najbardziej prymitywny język na poziomie maszyny, używany do tworzenia wydajnego kodu, który zużywa mniej cykli zegara i zajmuje mniej pamięci w porównaniu z język programowania wysokiego poziomu . Jest to kompletny język programowania zorientowany na sprzęt, aby napisać program, którego programista musi znać wbudowany sprzęt. Tutaj zapewniamy podstawy programowania na poziomie asemblera 8086.

Programowanie na poziomie zestawu 8086

Programowanie na poziomie zestawu 8086



Programowanie na poziomie zestawu 8086

Plik język programowania w asemblerze jest językiem niskiego poziomu, który jest rozwijany przy użyciu mnemoników. Mikrokontroler lub mikroprocesor może rozumieć tylko język binarny, taki jak 0 lub 1, dlatego asembler konwertuje język asemblera na język binarny i przechowuje go w pamięci do wykonywania zadań. Przed napisaniem programu wbudowani projektanci muszą mieć wystarczającą wiedzę na temat konkretnego sprzętu kontrolera lub procesora, dlatego najpierw musieliśmy znać sprzęt procesora 8086.


Sprzęt procesora

Sprzęt procesora



Architektura procesora 8086

8086 to procesor, który jest reprezentowany dla wszystkich urządzeń peryferyjnych, takich jak magistrala szeregowa, pamięć RAM i ROM, urządzenia we / wy itp., Które są zewnętrznie podłączone do procesora za pomocą magistrali systemowej. Mikroprocesor 8086 ma Architektura oparta na CISC i ma urządzenia peryferyjne, takie jak 32 wejścia / wyjścia, Komunikacja szeregowa , wspomnienia i liczniki / timery . Mikroprocesor wymaga programu do wykonywania operacji, które wymagają pamięci do odczytu i zapisania funkcji.

Architektura procesora 8086

Architektura procesora 8086

Programowanie na poziomie zespołu 8086 jest oparte na rejestrach pamięci. Rejestr jest główną częścią pliku mikroprocesory i sterowniki które znajdują się w pamięci, która zapewnia szybszy sposób gromadzenia i przechowywania danych. Jeśli chcemy manipulować danymi do procesora lub kontrolera poprzez wykonywanie mnożenia, dodawania itp., Nie możemy tego zrobić bezpośrednio w pamięci, w której potrzebne są rejestry do przetwarzania i przechowywania danych. Mikroprocesor 8086 zawiera różne rodzaje rejestrów, które można klasyfikować zgodnie z ich instrukcjami, takimi jak

Rejestry ogólnego przeznaczenia : Procesor 8086 składa się z 8 rejestrów ogólnego przeznaczenia, a każdy rejestr ma własną nazwę, jak pokazano na rysunku, na przykład AX, BX, CX, DX, SI, DI, BP, SP. Są to wszystkie rejestry 16-bitowe, w których cztery rejestry są podzielone na dwie części, takie jak AX, BX, CX i DX, które są używane głównie do przechowywania liczb.

Rejestry specjalnego przeznaczenia : CPU 8086 składa się z 2 rejestrów funkcji specjalnych, takich jak rejestry IP i rejestry flag. Rejestr IP wskazuje aktualnie wykonywaną instrukcję i zawsze zbiera się z rejestrem segmentu CS. Główną funkcją rejestrów flag jest modyfikacja operacji CPU po zakończeniu funkcji mechanicznych i nie mamy do nas bezpośredniego dostępu
Rejestry segmentowe: CPU 8086 składa się z 4-segmentowych rejestrów, takich jak CS, DS, ES, SS, które są używane głównie do przechowywania dowolnych danych w rejestrach segmentowych i możemy uzyskać dostęp do bloku pamięci za pomocą rejestrów segmentowych.


Proste programy języka asemblera 8086

Programowanie w asemblerze 8086 ma pewne zasady, takie jak

  • Poziom montażu programowanie 8086 kod należy wpisać dużymi literami
  • Po etykietach należy umieścić dwukropek, na przykład: etykieta:
  • Wszystkie etykiety i symbole muszą zaczynać się od litery
  • Wszystkie komentarze są wpisywane małymi literami
  • Ostatni wiersz programu musi kończyć się dyrektywą END

Procesory 8086 mają dwie inne instrukcje dostępu do danych, takie jak WORD PTR - dla słowa (dwa bajty), BYTE PTR - dla bajtu.

Kod operacyjny i operand

Kod operacyjny i operand

Kod operacji: Pojedyncza instrukcja jest wywoływana jako kod operacyjny, który może zostać wykonany przez procesor. Tutaj instrukcja „MOV” nazywana jest kodem operacyjnym.

Operandy: Dane jednoczęściowe nazywane są operandami, które mogą być obsługiwane przez kod operacyjny. Na przykład operacja odejmowania jest wykonywana przez operandy, które są odejmowane przez operand.
Składnia: SUB b, c

Programy w języku asemblera 8086 mikroprocesora

Napisz program do odczytywania znaku z klawiatury

MOV ah, 1h // podprogram wprowadzania danych z klawiatury
INT 21h // wprowadzenie znaku
// znak jest przechowywany w al
MOV c, al // skopiuj znak z alto c

Napisz program do czytania i wyświetlania znaku

MOV ah, 1h // podprogram wprowadzania danych z klawiatury
INT 21h // wczytaj znak do al
MOV dl, al // skopiuj znak do dl
MOV ah, 2h // Podprogram wyjścia znaku
INT 21h // wyświetl znak w dl

Napisz program przy użyciu rejestrów ogólnego przeznaczenia

ORG 100h
MOV AL, VAR1 // sprawdź wartość VAR1, przenosząc ją do AL.
LEA BX, VAR1 // pobierz adres VAR1 w BX.
MOV BYTE PTR [BX], 44h // modyfikacja zawartości VAR1.
MOV AL, VAR1 // sprawdź wartość VAR1, przenosząc ją do AL.
DOBRZE
VAR1 DB 22h
KONIEC

Napisz program do wyświetlania ciągu przy użyciu funkcji bibliotecznych

dołącz emu8086.inc // Deklaracja makr
ORG 100h
PRINT „Hello World!”
GOTOKSYJNY 10, 5
PUTC 65 // 65 - to kod ASCII dla „A”
PUTC „B”
RET // powrót do systemu operacyjnego.
END //, aby zatrzymać kompilator.

Instrukcje arytmetyczne i logiczne

Procesy 8086 jednostek arytmetycznych i logicznych zostały podzielone na trzy grupy, takie jak dodawanie, dzielenie i operacje inkrementacji. Większość Instrukcje arytmetyczne i logiczne wpływają na rejestr stanu procesora.

Mnemoniki programowania w asemblerze 8086 są w postaci kodu operacyjnego, takiego jak MOV, MUL, JMP i tak dalej, które są używane do wykonywania operacji. Przykłady programowania w języku asemblerowym 8086

Dodanie
ORG0000h
MOV DX, # 07H // przenieś wartość 7 do rejestru AX //
MOV AX, # 09H // przenieś wartość 9 na akumulator AX //
Dodaj AX, 00H // dodaj wartość CX z wartością R0 i zapisz wynik w AX //
KONIEC
Mnożenie
ORG0000h
MOV DX, # 04H // przenieś wartość 4 do rejestru DX //
MOV AX, # 08H // przenieś wartość 8 na akumulator AX //
MUL AX, 06H // Pomnożony wynik jest przechowywany w akumulatorze AX //
KONIEC
Odejmowanie
ORG 0000h
MOV DX, # 02H // przenieś wartość 2 do rejestru DX //
MOV AX, # 08H // przenieś wartość 8 na akumulator AX //
SUBB AX, 09H // Wartość wyniku jest przechowywana w akumulatorze A X //
KONIEC
Podział
ORG 0000h
MOV DX, # 08H // przenieś wartość 3 do rejestru DX //
MOV AX, # 19H // przenieś wartość 5 na akumulator AX //
DIV AX, 08H // końcowa wartość jest przechowywana w akumulatorze AX //
KONIEC

Dlatego chodzi o programowanie na poziomie montażu 8086, 8086 Architektura procesora, proste przykładowe programy dla procesorów 8086, instrukcje arytmetyczne i logiczne.Ponadto wszelkie pytania dotyczące tego artykułu lub projektów elektronicznych, możesz skontaktować się z nami, komentując w sekcji komentarzy poniżej.