2009-08-10 20 views

Odpowiedz

35

Język złożenia to mechanizm wygody w stosunku do języka maszyny. W języku asemblerowym zamiast numerycznych kodów operacji można używać sekwencji mnemonicznych, a zamiast ręcznego obliczania przesunięć można używać etykiet symbolicznych. Chroni cię również przed naprawdę głupimi błędami - jak wpisywanie źle sformułowanej instrukcji procesora.

W przeciwnym razie język assemiczny jest odpowiednikiem języka maszynowego. Czasami będziesz miał stary asembler, który nie będzie obsługiwać mnemoniki dla niektórych instrukcji nowszych procesorów - wtedy nadal możesz wstawiać kody operacji bezpośrednio do programu.

+0

dzięki Sharptooth, myślę, że mam go – freenight

5

W Assembly instrukcje są łatwiejsze do zrozumienia reprezentacjami instrukcji CPU.

Ale assembler sprawia również, na przykład, zwracając się łatwiejsze:

  • W języku maszynowym trzeba wiedzieć odległość (w przestrzeni adresowej) pomiędzy gdzie jesteś i gdzie chcesz, aby przejść do
  • W języku asemblerowym wywołuje się jeden adres "iWantToJumpHere", a następnie można powiedzieć "skok iWantToJumpHere"

Ułatwia to konserwację, szczególnie w przypadku zmiany odległości między adresami.

14

Język maszynowy to "Kodowanie bitowe" kodów operacyjnych procesora.

Langauge zespołu to "kodowanie symboliczne" kodów operacji procesora.

Tak na przykład symbolicznie:

loop: dec R1 # Decrement register R1 
     bnq loop # Branch if not equal to zero to 
       # address "loop" 

Staje Kodowanie Bit:

# Mythical CPU Machine code 4 bits operation, 
#       4 bit "option" 
     0x41  # 4 is a "dec" and represents r1; 
     0x7E  # 7 is bnq and E means PC -2; 

Ogólnie jest to jeden do jednego związku, jednak niektóre języki montażowe będą ocationally narzucają instrukcję montażu, które mapują albo wielokrotność instrukcje dotyczące kodu maszynowego lub ponowne użycie innego kodu operacji. Takich jak użycie kodu maszynowego "xor R1, R1" jako "clr R1" lub coś bardzo podobnego.

Ponadto języki asemblacji będą wspierać "programowanie makr", które w latach 80-tych, kiedy montaż był szeroko stosowany, nadawało kodowi źródłowemu bardziej "wysokiego poziomu" wyglądu. Osobiście napisałem makra montażowe, które wyglądały jak "wykres x, y" i "Hex Val", aby uprościć typowe operacje.

Na przykład:

# Mythically CPU Macro 
.macro spinSleep x,y 
      ld #x,y 
localLoop: dec y 
      brq localLoop 
.endmacro 
# Macro invocation 
      spinSleep 100,R1 
# Macro expantion 
      ld #100,R1 
localLoopM: dec R1 
      brq localLoopM # localLoopM is "Mangled" for localization. 
0

Złożyć poziom języka jest pierwszym krokiem w kierunku podejmowania świadomych prostego programowania poprzez umożliwienie programistom pisać mnemoniki zamiast kodu binarnego (kod maszynowy).

8

znalazłem bardzo dobre wyjaśnienie, pomyślał aby umieścić go tutaj, tak aby inni mogli ją przeczytać:

język maszyna jest rzeczywiste bity wykorzystywane do sterowania procesora w komputerze , zazwyczaj postrzegane jako sekwencja liczb szesnastkowych (zazwyczaj bajtów). Procesor odczytuje te bity z pamięci programu, a bity przedstawiają "instrukcje" co do następnego. Tak więc język maszynowy zapewnia sposób wprowadzania instrukcji do komputera (niezależnie od tego, czy jest to za pośrednictwem przełączników, taśmy perforowanej lub pliku binarnego ).

Assembler to bardziej czytelny widok języka maszynowego. Zamiast reprezentowania maszyny język w postaci liczb, instrukcje i rejestry mają nazwy (zwykle są to skrócone słowa lub mnemoniki, np. Ld oznacza "obciążenie"). W przeciwieństwie do języka wysokiego poziomu, asembler jest bardzo zbliżony do języka maszynowego . Główne abstrakcje (z wyjątkiem mnemoników ) to użycie etykiet zamiast adresów w stałej pamięci i komentarzy .

Program w języku asemblerowym (tj. Plik tekstowy ) jest tłumaczony na język komputera przez asembler. Dezasembler wykonuje odwrotną funkcję (chociaż komentarze i nazwy etykiet zostaną odrzucone w procesie asemblera).

Źródło: What is difference between machine language and assembly language?

1

języku maszynowym, co chip rozumie Zgromadzenie jest to, czego zrozumieć

Każda komenda montaż ma język maszynowy równoważne

43 00 00 00 = inc ebx

41 00 00 00 = inc eax

3B CA 00 00 = CMP ECX, EDX

C3 00 00 00 = retencji

itd

-2

Montaż jest język symboliczny kodowanie rozkazu (kod operacji), które jest zrozumieć przez ludzi i używaj tylko do instruowania procesora komputera (praca sprzętowa) i robota (operacja robotyczna) do wykonywania określonych zadań. Jest to zrozumiały język dla ludzi. Ten język służy wyłącznie do instruowania obsługi sprzętu i zdecydowanie nie służy do tworzenia oprogramowania. Asembler służy do konwersji tej symbolicznej części kodowej opcode (kod operacji) na język maszynowy. Kod operacji (Opcode) jest częścią języka maszynowego.

+0

Nie jest jasne, co to odpowiedź ma na celu przekazać. –

-1

Maszyna Język:

  1. To programowanie język Pierwsza generacja
  2. Jest o wiele trudniejsze niż Assembly Język
  3. Trudne do zrozumienia przez człowieka
  4. Jest w formie 0s i 1s
  5. Język maszyny różni się od platformy
  6. To c Annot łatwo zmienić
  7. To nie obsługuje modyfikacji
  8. Ryzyko występowania błędów jest wysoka
  9. Kod binarny nie można zapamiętać
  10. bez potrzeby kompilatora

Assembly Język:

  1. Jest to język programowania drugiej generacji
  2. Jest mniej trudne niż język maszynowy
  3. łatwe do zrozumienia przez człowieka
  4. Używa instrukcje symboliczne, opisowych nazw dla elementów danych oraz lokalizację pamięci
  5. Zgromadzenie Język jest platforma zależne
  6. Jest łatwo Modyfikowalny
  7. wsparcia IT zmienia
  8. ryzyko wystąpienia błędu jest redukowane
  9. memorability jest wysoka
  10. Jest potrzebny kompilator i wie jak asemblerze
Powiązane problemy