开发手册 欢迎您!
软件开发者资料库

汇编 - 基本语法

汇编基本语法 - 从简单和简单的步骤学习汇编编程,从基本概念到高级概念,包括简介,环境设置,基本语法,存储器段,状态寄存器,系统调用,寻址模式,变量,常量,算术,条件执行,循环,逻辑,字符串处理,递归,数组,中断,过程,常量,宏,文件,内存管理。

汇编程序可分为三个部分 :

  • 数据部分,

  • bss 部分,

  • text 部分.

数据部分

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

声明数据部分的语法是 :

  section.data

bss 部分

bss 部分用于声明变量.声明bss部分的语法是 :

  section.bss

文本部分

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

声明文本部分的语法是 :

  section.text  global _start  _start:

注释

汇编语言注释以分号(;)开头.它可能包含任何可打印的字符,包括空白.它可以单独显示在一行上,例如 :

; This program displays a message on screen

或者在同一行显示一条指令,如 :

add eax, ebx     ; adds ebx to eax

汇编语言语句

汇编语言程序包含三种类型的语句 :

  • 可执行指令或说明,

  • 汇编程序指令或伪操作,以及

  • 宏.

可执行指令或只是指令告诉处理器什么去做.每条指令由操作码(操作码)组成.每个可执行指令生成一个机器语言指令.

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

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

汇编语言语句的语法

汇编语言语句每行输入一个语句.每个语句遵循以下格式 :

[label]   mnemonic   [operands]   [;comment]

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

以下是典型汇编语言陈述的一些示例 :

INC COUNT        ; Increment the memory variable COUNTMOV 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 MARKSMOV 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   movedx,len     ;message length   movecx,msg     ;message to write   movebx,1       ;file descriptor (stdout)   moveax,4       ;system call number (sys_write)   int0x80        ;call kernel   moveax,1       ;system call number (sys_exit)   int0x80        ;call kernelsection.datamsg db 'Hello, world!', 0xa  ;string to be printedlen equ $ - msg     ;length of the string

编译并执行上述代码时,会产生以下结果 :

Hello, world!

在NASM中编译和链接汇编程序

确保已设置 nasm

  • 使用文本编辑器输入上述代码,将其保存为hello.asm.

  • 确保您与保存 hello.asm 的目录位于同一目录.

  • 要组装程序,请键入 nasm -f elf hello.asm

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

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

  • 输入 ./hello

执行程序

如果你已经正确地完成了所有事情,它将在屏幕上显示"Hello,world!".