Assembly 常量
有几个NASM定义常量的指令。我们在前面的章节中已经使用EQU指令。我们将特别讨论了三个指令:
-
EQU
-
%assign
-
%define
EQU 指令
EQU指令用于定义常量。 EQU伪指令的语法如下:
CONSTANT_NAME EQU expression
例如,
TOTAL_STUDENTS equ 50
可以在代码中使用这个常量值,如:
mov ecx, TOTAL_STUDENTS cmp eax, TOTAL_STUDENTS
EQU语句的操作数可以是一个表达式:
LENGTH equ 20 WIDTH equ 10 AREA equ length * width
上面的代码段定义AREA为200。
例子:
下面的例子演示了如何使用EQU指令:
SYS_EXIT equ 1
SYS_WRITE equ 4
STDIN equ 0
STDOUT equ 1
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry yiibai
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg1
mov edx, len1
int 0x80
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg2
mov edx, len2
int 0x80
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg3
mov edx, len3
int 0x80
mov eax,SYS_EXIT ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg1 db 'Hello, programmers!',0xA,0xD
len1 equ $ - msg1
msg2 db 'Welcome to the world of,', 0xA,0xD
len2 equ $ - msg2
msg3 db 'Linux assembly programming! '
len3 equ $- msg3
上面的代码编译和执行时,它会产生以下结果:
Hello, programmers! Welcome to the world of, Linux assembly programming!
%assign 指令
%assign 指令可以使用像EQU指令定义数值常量。该指令允许重新定义。例如,您可以定义常量TOTAL :
%assign TOTAL 10
在后面的代码,可以重新定义为:
%assign TOTAL 20
这个指令是区分大小写的。
%define 指令
The %define 指令允许定义数值和字符串常量。这个指令是相似 #define在C#中。例如,可以定义常量的PTR:
%define PTR [EBP+4]
上面的代码取代PTR by [EBP+4].
此指令还允许重新定义,它是区分大小写。
本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:Assembly 常量
本文地址:http://www.codeinn.net/assembly/1002.html
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:Assembly 常量
本文地址:http://www.codeinn.net/assembly/1002.html

