汇编

您所在的位置:网站首页 汇编语言helloword解释 汇编

汇编

2024-04-12 19:09| 来源: 网络整理| 查看: 265

❮ 上一节 下一节 ❯ 汇编 - 基本语法

汇编程序可以分为三个部分 −

data 部分,

bss 部分, and

text 部分.

data部分

data部分用于声明初始化数据或常量。 该数据在运行时不会改变。 您可以在本节中声明各种常量值、文件名或缓冲区大小等。

声明数据部分的语法是 −

section.data bss部分

bss部分用于声明变量。 声明 bss 部分的语法是 −

section.bss text部分

text部分用于保存实际代码。 此部分必须以声明 global _start 开头,它告诉内核程序执行的开始位置。

声明文本部分的语法是 −

section.text global _start _start: 注释

汇编语言注释以分号 (;) 开头。 它可以包含任何可打印字符,包括空白。 它可以单独出现在一行上,例如 −

; This program displays a message on screen

或者,与指令在同一行,例如 −

add eax, ebx ; adds ebx to eax 汇编语言语句

汇编语言程序由三种类型的语句组成 −

可执行指令或说明, 汇编器指令或伪操作,以及 宏。

可执行指令或简单的指令告诉处理器要做什么。 每条指令由一个操作码(opcode)组成。 每条可执行指令生成一条机器语言指令。

汇编程序指令伪操作告诉汇编程序有关汇编过程的各个方面。 它们是不可执行的,并且不会生成机器语言指令。

基本上是一种文本替换机制。

汇编语言语句的语法

汇编语言语句每行输入一个语句。 每个语句都遵循以下格式 −

[label] mnemonic [operands] [;comment]

方括号中的字段是可选的。 基本指令由两部分组成,第一部分是要执行的指令名称(或助记符),第二部分是命令的操作数或参数。

以下是一些典型汇编语言语句的示例 −

INC COUNT ; Increment the memory variable COUNT MOV TOTAL, 48 ; Transfer the value 48 in the ; memory variable TOTAL ADD AH, BH ; Add the content of the ; BH register into the AH register AND MASK1, 128 ; Perform AND operation on the ; variable MASK1 and 128 ADD MARKS, 10 ; Add 10 to the variable MARKS MOV AL, 10 ; Transfer the value 10 to the AL register 汇编中的 Hello World 程序

以下汇编语言代码在屏幕上显示字符串"Hello World" −

section .text global _start ;must be declared for linker (ld) _start: ;tells linker entry point mov edx,len ;message length mov ecx,msg ;message to write mov ebx,1 ;file descriptor (stdout) mov eax,4 ;system call number (sys_write) int 0x80 ;call kernel mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel section .data msg db 'Hello, world!', 0xa ;string to be printed len equ $ - msg ;length of the string

当上面的代码被编译并执行时,会产生以下结果 −

Hello, world! 在 NASM 中编译和链接汇编程序

确保您已在 PATH 环境变量中设置 nasmld 二进制文件的路径。 现在,按照以下步骤编译和链接上述程序 −

使用文本编辑器输入上述代码并将其另存为 hello.asm。

确保您位于保存 hello.asm 的同一目录中。

要汇编程序,请输入 nasm -f elf hello.asm

如果有任何错误,系统会在此阶段提示您。 否则,将创建名为 hello.o 的程序目标文件。

要链接目标文件并创建名为 hello 的可执行文件,请输入 ld -m elf_i386 -s -o hello hello.o

通过输入 ./hello 执行程序

如果您正确完成了所有操作,它将显示"Hello, world!" 屏幕上。

❮ 上一节 下一节 ❯


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3