汇编语言和机器语言(对于相同的底层系统)是否真的一样?这两个概念之间有什么区别吗?汇编语言和机器语言之间的关系是什么?
回答
汇编语言是机器语言的一种便利机制。使用汇编语言,您可以使用助记符序列代替数字操作代码,并且可以使用符号标签而不是手动计算偏移量。它还可以保护您免受真正的愚蠢错误 - 如输入格式错误的处理器指令。
否则assemly语言是机器语言的等价物。有时你会得到一个旧的汇编程序,它不会为新处理器的某些指令提供助记符 - 然后你仍然可以直接在程序中插入操作代码。
在汇编中,指令是CPU指令易于理解的表示。
但汇编也使得,例如,解决简单:
- 在机器语言,你必须知道你在哪里,要跳转到
- 之间的距离(地址空间)在汇编语言中调用一个地址“iWantToJumpHere”,然后你可以说“跳iWantToJumpHere”
这使得装配更容易维护,特别是当地址之间的距离变化。
机器语言是CPU操作码的“位编码”。
大会的langauge是“符号编码”一个CPU的操作码。
因此,例如象征:
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;
一般是一对一的关系,然而,一些汇编语言将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.
汇编级语言是朝向通过允许程序员编写助记符代替二进制代码(机器代码),使得所述编程简单第一意识步骤。
我找到了一个很好的解释,认为它张贴在这里,这样别人才能看懂:
机器语言是用来控制在 计算机处理器的实际位 ,通常被视为十六进制数字的序列 (通常为 字节)。处理器从程序存储器中读取这些位,并且位 代表关于 接下来要做什么的“指令”。因此机器语言 提供进入 指令到计算机的一种方式(是否 通过交换机,穿孔带或 二进制文件)。
汇编语言是机器语言的多个人类 可读图。 代替 语言为数字,指令 和寄存器名称为 (通常缩写词,或 助记符,例如ld表示“加载”)。与高级语言 不同,汇编程序非常接近机器语言 。 主要抽象(除了 助记符)是使用标记 ,而不是固定的存储器地址,和 评论。
汇编程序将汇编语言程序(即 文本文件)翻译为机器 语言。甲 反汇编执行反向 功能(尽管标签的评论和 名称将已 在汇编过程丢弃)。
来源:What is difference between machine language and assembly language?
机器语言是芯片了解什么 大会是您了解什么
每个汇编指令有一个机器语言等同
43 00 00 00 = INC EBX
41 00 00 00 = INC EAX
3B CA 00 00 = CMP ECX,EDX
C3 00 00 00 =保留
等
汇编语言是操作码(操作码)的符号的编码是由人类理解和仅用于指示计算机处理器(硬件操作)和机器人(机器人操作)执行特定任务。这对人类来说是一种可以理解的语言。该语言仅用于指示硬件操作,绝对不用于创建软件程序。汇编程序用于将操作码的这个符号编码部分(操作码)转换为机器语言。操作码(操作码)是机器语言的一部分。
目前尚不清楚这是什么的答案是为了传达。 – 2016-05-15 18:17:37
机器语言:
- 这是第一代编程语言
- 它比汇编语言困难得多
- 困难的人
- 正是在形式了解0s和1s
- 机器语言因平台而异
- It c ANNOT轻易改变
- 它不支持修饰
- 差错的存在的风险是很高的
- 二进制代码不能被记忆
- 无需编译
汇编语言:
- 它是第二代编程语言
- 它比机器语言
- 易少难以被人理解
- 它采用象征性的指令,数据项的描述性名称和存储位置
- 将汇编语言与平台相关的
- 它是易于修改
- 它的支持转换
- 错误的发生减少
- 记性风险很高
- 这是需要编译器和知道作为汇编
- 1. 机器和汇编语言之间的关系
- 2. 这是什么汇编语言?
- 3. 汇编语言 - 堆栈机
- 4. 汇编语言
- 5. 汇编语言不能做什么,但只有机器语言可以吗?
- 6. 汇编语言随机数发生器
- 7. 汇编语言机器代码
- 8. 汇编语言优化器
- 9. LESS语言和Less框架之间的联系是什么?
- 10. Doxygen和汇编语言
- 11. MIPS汇编语言
- 12. 8086汇编语言
- 13. x86汇编语言
- 14. 汇编语言环
- 15. 汇编语言 - LDI
- 16. CMP汇编语言
- 17. 汇编语言:cbw
- 18. MIPS汇编语言
- 19. 系统编程语言和应用程序编程语言之间的区别
- 20. 什么是8086系统日期汇编语言程序
- 21. 这些汇编语言语句的含义是什么?
- 22. 将汇编语言宏转换为纯汇编语言
- 23. 什么是GCC内联汇编语言中的r()和double%%%?
- 24. 用汇编语言编写C =(A + B)^ 2并转换为机器语言
- 25. 关于汇编语言的问题
- 26. 关于汇编语言的问题
- 27. 汇编语言的用法
- 28. 汇编语言的指针
- 29. addi和add之间的汇编语言(MIPS)差异
- 30. 汇编语言到C语言转换INCF和CPFSLT
感谢锐齿,我想我得到了它 – freenight 2009-08-10 16:08:48