欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编语言(3)--基本语法

程序员文章站 2024-02-02 15:12:28
...

汇编程序可以分为三个部分-data secttion, bss section以及text section。

 

Data Section(数据段)

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

声明数据部分的语法是

section.data

BSS Section(BSS段)

bss部分用于声明变量,存放程序中未初始化的全局变量的一块内存区域,声明bss部分的语法是

section.bss

Text Section(代码段)

文本段用于保留实际代码。 此部分必须以全局声明_start开头,该声明告诉内核程序从何处开始执行。

声明文本部分的语法是

section.text
   global _start
_start:

注释

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

; 今天开始学汇编,这是我的第一个程序

或者,与说明在同一行上,例如

add eax, ebx     ; 把ebx寄存器上的数加到eax寄存器上

汇编语言声明

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

  • 可执行指令或说明,
  • 汇编程序指令或伪操作

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

汇编程序指令或伪操作将汇编程序的各个方面告知汇编程序。 这些是不可执行的,不会生成机器语言指令。

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

 

汇编语言语句的语法

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

[标签]助记符[操作数] [;注释]

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

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

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

Live Demo
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环境变量中设置了nasm和ld二进制文件的路径。 现在,按照以下步骤编译和链接上述程序(总之就是先把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!”.

 

如果你在编译和链接时遇到什么问题,我想这篇文章能够帮助到你。

知青语:Linux 汇编语言学习--编译和链接​zhuanlan.zhihu.com

大家把今天的课程稍微消化一下,贪多嚼不烂。而且这两天气温骤降,打字久了,手特别冷,今天更新两篇,大家认真看一下。

日常抛出二维码,资料和软件什么的,都在里面。

汇编语言(3)--基本语法
知青语

 

上一篇: 双色球,抽奖是否中奖

下一篇: