ToB企服应用市场:ToB评测及商务社交产业平台

标题: 汇编语言1 - 什么是汇编语言? [打印本页]

作者: 南七星之家    时间: 2024-8-9 13:41
标题: 汇编语言1 - 什么是汇编语言?
1. 什么是汇编语言?

1.1. 汇编语言的界说

汇编语言(Assembly Language)是一种低级编程语言,与计算机硬件细密相关。它使用助记符(mnemonics)来表示机器指令,这些助记符通常与特定的处置处罚器架构(如 x86、ARM 等)相对应。汇编语言直接映射到机器语言,因此能够提供对硬件的精细控制,但同时也要求开发者对计算机架构有深入的明白。
1.2. 汇编语言与机器语言

常见的误解: 汇编语言就是机器语言。
正确的明白:
汇编语言(Assembly Language)机器语言(Machine Language) 都是与计算机硬件细密相关的编程语言,但它们在表示形式和使用方式上有显著的区别。以下是它们的雷同点和差异点:
1.2.1. 雷同点

1.2.2. 差异点

属性机器语言汇编语言表示形式由二进制代码(0 和 1)组成,计算机硬件可以直接执行。使用助记符(mnemonics)表示机器指令,人类可读,需要通过汇编器转换为机器语言。可读性人类难以明白,计算机很容易明白。人类相对易于明白,计算机无法明白,需要汇编器的翻译。转换过程直接由计算机硬件执行。需要通过汇编器将汇编代码转换为机器语言,然后由计算机硬件执行。示例对比89C8;
对应 x86 架构的机器语言指令,表示将 ecx 的值移动到 eaxmov eax, ecx;
对应 x86 架构的汇编语言指令,表示将 ecx 的值移动到 eax2. 汇编语言的主要特点

3. 汇编语言的基本组成

4. 汇编器

汇编器(Assembler)是一种将汇编语言代码转换为机器语言代码的步伐。汇编语言是一种低级编程语言,它使用助记符(mnemonics)来表示机器指令,使得步伐员能够更容易地编写和明白代码。汇编器的主要功能是将这些助记符转换为计算机可以直接执行的二进制代码。
4.1. 主要工作流程

汇编器的工作流程通常包括以下几个步骤:
使用汇编器的基本步骤如下:
4.2. 常见的汇编器

NASM、MASM和GAS是三种最常见的汇编器,它们各有特点和适用场景。以下是它们的一些主要区别和特点:
4.2.1. NASM(Netwide Assembler)

4.2.2. MASM(Microsoft Macro Assembler)

4.2.3. GAS(GNU Assembler)

4.2.4. TASM (Turbo Assembler)

TASM 比较有汗青了,是DOS系统时代的产物。
4.3. 语法差异

4.3.1. NASM 示例
  1. section .data
  2.     msg db 'Hello, World!', 0
  3. section .text
  4.     global _start
  5. _start:
  6.     mov eax, 4          ; 系统调用号 (sys_write)
  7.     mov ebx, 1          ; 文件描述符 (stdout)
  8.     mov ecx, msg        ; 字符串地址
  9.     mov edx, 13         ; 字符串长度
  10.     int 0x80            ; 调用内核
  11.     mov eax, 1          ; 系统调用号 (sys_exit)
  12.     xor ebx, ebx        ; 退出码
  13.     int 0x80            ; 调用内核
复制代码
4.3.2. MASM 示例
  1. .data
  2.     msg db 'Hello, World!', 0
  3. .code
  4.     main proc
  5.         mov eax, 4          ; 系统调用号 (sys_write)
  6.         mov ebx, 1          ; 文件描述符 (stdout)
  7.         mov ecx, offset msg ; 字符串地址
  8.         mov edx, sizeof msg ; 字符串长度
  9.         int 0x80            ; 调用内核
  10.         mov eax, 1          ; 系统调用号 (sys_exit)
  11.         xor ebx, ebx        ; 退出码
  12.         int 0x80            ; 调用内核
  13.     main endp
  14. end main
复制代码
4.3.3. GAS 示例
  1. .data
  2. msg:
  3.     .ascii "Hello, World!\0"
  4. .text
  5.     .global _start
  6. _start:
  7.     movl $4, %eax        # 系统调用号 (sys_write)
  8.     movl $1, %ebx        # 文件描述符 (stdout)
  9.     movl $msg, %ecx      # 字符串地址
  10.     movl $13, %edx       # 字符串长度
  11.     int $0x80            # 调用内核
  12.     movl $1, %eax        # 系统调用号 (sys_exit)
  13.     xorl %ebx, %ebx      # 退出码
  14.     int $0x80            # 调用内核
复制代码
4.4. 总结

NASM 适合需要跨平台支持、开源性和灵活性的项目。
MASM 适合需要与Windows API细密集成、使用复杂宏功能和集成开发情况的项目。
GAS 适合在类Unix系统上使用,特别是与GCC编译器集成的情况。
选择哪种汇编器取决于具体的项目需求、开发情况和目标平台。
大家好,我是陌尘。
IT从业10年+, 北漂过也深漂过,目前暂定居于杭州,未来不知还会飘向何方。
搞了8年C++,也干过2年前端;用Python写过书,也玩过一点PHP,未来还会折腾更多东西,不死不休。
感谢大家的关注,接待加我微信(Spencer_MC),等候与大家一起交流。
【SunLogging】
扫码二维码,关注微信公众号,阅读更多精彩内容
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4