- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Assembly 基本语法
Assembly 基本语法
汇编程序可以分为三个部分:
数据段
bss段部分
⽂字部分
数据段
⽤于声明初始化数据或常量的数据段。在运⾏时,此数据不改变。在本节中 以声明
不同的常量值,⽂件名或缓冲区⼤⼩等。
声明数据段的语法是:
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
Assembly汇编语⾔语句
汇编语⾔程序包括三个类型的语句:
执⾏指令或指令
汇编指令或伪操作
宏
执⾏指令或简单指⽰告诉的处理器该怎么做。每个指令由操作码 (操作码) 执⾏
指令⽣成的机器语⾔指令。
汇编指令或伪操作告诉汇编有关汇编过程的各个⽅⾯。这些都是⾮ 执⾏⽂件,并不
会产⽣机器语⾔指令。
宏基本上是⼀个⽂本替换机制。
汇编语⾔语句的语法
汇编语⾔语句输⼊每⾏⼀个语句。每个语句如下的格式如下:
[label] mnemonic [operands] [;comment]
⽅括号中的字段是 选的。基本指令有两部分组成,第⼀个是要执⾏的指令 (助记
符)的名称和所述第⼆命令的操作数或参数的。
以下是⼀些典型的汇编语⾔语句的例⼦:
INC CO NT ; Increment the memory variable CO NT
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
Assembly Hello World程序
下⾯的汇编语⾔代码显⽰字符串 Hello World在屏幕上:
section .text
global _start ;must be declared for linker (ld)
_start: ;tells linker entry yiibai
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 ;our dear string
len equ $ - msg ;length of our dear string
上⾯的代码编译和执⾏时,它会产⽣以下结果:
Hello, world!
⼀个汇编程序的编译和链接在NASM
请确保已设置NASM和LD的⼆进制⽂件的路径在PATH环境变量中。现在上述程序的
文档评论(0)