2009-08-10 3 views

ответ

35

Язык ассемблера - это механизм удобства над машинным языком. С ассемблером вы используете мнемонические последовательности вместо числовых кодов операций и можете использовать символические метки вместо ручного вычисления смещений. Он также защищает вас от действительно глупых ошибок - например, набирает неверную инструкцию процессора.

В противном случае родной язык является эквивалентом машинного языка. Иногда у вас будет старый ассемблер, который не будет поддерживать мнемонику для некоторых инструкций новых процессоров - тогда вы все равно можете вставить операционные коды непосредственно в программу.

+0

благодаря Sharptooth, я думаю, что я получил его – freenight

5

В сборке инструкции являются более понятными представлениями инструкций ЦП.

Но ассемблер также делает, например, обращаясь проще:

  • В машинном языке вы должны знать расстояние (в адресном пространстве) между тем, где вы находитесь и где вы хотите, чтобы перейти к
  • в ассемблере вы называете один адрес «iWantToJumpHere», а затем вы можете сказать: «прыгать iWantToJumpHere»

Это делает монтаж гораздо проще в обслуживании, особенно, когда расстояние между изменениями адресов.

14

Язык машины - это «Бит-кодирование» кодов операций процессора.

Сборка langauge - это «Символическое кодирование» кодов операций процессора.

Так что для примера Символично:

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

становится кодирование бит:

# 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; 

Вообще это 12:59 отношения а, однако некоторые языки сборки будут ocationally дополнительные инструкции по сборке, которые сопоставляют либо множественным машинного кода или повторного использования другого кода операции. Например, используя машинный код «xor R1, R1» как «clr R1» или что-то очень похожее.

Кроме того, языки ассемблера будут иметь тенденцию поддерживать «макропрограммирование», которое в 80-х годах, когда сборка использовалась, значительно расширило исходный код более «высокого уровня». Я лично написал макросы сборки, которые выглядели как «plot x, y» и «Hex Val», чтобы упростить общие операции.

Например:

# 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

Собирают язык уровня является первым сознательным шагом в направлении делает программирование простым, позволяя программистам писать мнемонику вместо двоичного кода (машинный код).

8

я нашел очень хорошее объяснение, думал, чтобы разместить его здесь, чтобы другие могли прочитать:

Машинный язык является фактическим биты , используемые для управления процессором в компьютере, как правило, рассматривается как последовательность из шестнадцатеричных чисел (обычно байт). Процессор считывает эти биты из программной памяти, а биты представляют собой «инструкции» относительно того, что делать до . Таким образом, машинный язык предоставляет способ ввода инструкций в компьютер ( через коммутаторы, перфоленту или двоичный файл ).

Язык ассемблера более человечный читаемый вид машинного языка. Вместо представления машины язык в виде цифр, инструкции и регистры имеют имена (обычно сокращенные слова, или Мнемоники, например ld означает «нагрузка»). В отличие от язык высокого уровня, ассемблер очень близок к машинному языку. Основные абстракции (кроме значков ) - это использование меток вместо адресов фиксированной памяти и комментариев .

Языковая программа ассемблера (т.е. текстовый файл ) переводится на машинный язык ассемблером . A дизассемблер выполняет обратную функцию (хотя комментарии и именами меток будут , отброшенные в процессе ассемблера).

Источник: What is difference between machine language and assembly language?

1

машина языка является то, что чип понимает Ассамблеи, что вы понимаете

Каждая команда сборка имеет машинный язык эквивалентный

43 00 00 00 = вкл EBX

41 00 00 00 = inc eax

3B CA 00 00 = CMP ECX, EDX

C3 00 00 00 = RET

и так далее

-2

ассемблере является символическим Кодирование опкод (код операции), что понимать людей и использовать только для инструктирования компьютерного процессора (аппаратного обеспечения) и робота (роботизированная операция) для выполнения определенных задач. Это понятный язык для человека. Этот язык используется только для указания работы оборудования и определенно не используется для создания программного обеспечения. Ассемблер используется для преобразования этой символической части кода кода операции (кода операции) в машинный язык. Код операции (Opcode) является частью машинного языка.

+0

Это не ясно, что этот ответ предназначен для передачи. –

-1

машина Язык:

  1. Это язык программирования первого поколения
  2. Это гораздо сложнее, чем ассемблере
  3. Трудно понять человеческим
  4. Он находится в форме 0s и 1s
  5. Язык машины варьируется от платформы
  6. It c ANNOT быть легко изменена
  7. Он не поддерживает модификации
  8. Риск существования ошибки высока
  9. двоичный код не может быть запомнили
  10. Нет необходимости составителя

ассемблере:

  1. Это язык программирования второго поколения
  2. Это менее сложно, чем машинный язык
  3. легко понять человек
  4. Он использует символические инструкции, описательные имена для элементов данных и место памяти
  5. Язык Собрания зависит
  6. платформы Это легко модифицируется
  7. поддержка это меняет
  8. риск возникновения ошибки снижается
  9. запоминаемость высокая
  10. Он нужен компилятор и знает, как ассемблер
Смежные вопросы