汇编 - 变量

汇编 - 变量

汇编 - 变量

上一页

下一页

NASM 提供了各种定义指令来预留变量的存储空间。定义汇编指令用于分配存储空间。它可以用来预留和初始化一个或多个字节。

为已初始化数据分配存储空间

已初始化数据的存储分配语句语法如下:

[variable-name] define-directive initial-value [,initial-value]...

其中,变量名是每个存储空间的标识符。汇编程序为数据段中定义的每个变量名关联一个偏移值。

定义指令有五种基本形式:

指令

用途

存储空间

DB

定义字节

分配 1 字节

DW

定义字

分配 2 字节

DD

定义双字

分配 4 字节

DQ

定义四字

分配 8 字节

DT

定义十字节

分配 10 字节

以下是一些使用定义指令的示例:

choice DB 'y'

number DW 12345

neg_number DW -12345

big_number DQ 123456789

real_number1 DD 1.234

real_number2 DQ 123.456

请注意:

每个字符字节都以其十六进制 ASCII 值存储。

每个十进制值都会自动转换为其 16 位二进制等效值并存储为十六进制数。

处理器使用小端字节序。

负数转换为其二进制补码表示。

短浮点数和长浮点数分别使用 32 位或 64 位表示。

以下程序显示了定义指令的使用:

在线演示

section .text

global _start ;must be declared for linker (gcc)

_start: ;tell linker entry point

mov edx,1 ;message length

mov ecx,choice ;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

choice DB 'y'

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

y

为未初始化数据分配存储空间

保留指令用于预留未初始化数据的空间。保留指令采用单个操作数,该操作数指定要预留的空间单位数。每个定义指令都有一个相关的保留指令。

保留指令有五种基本形式:

指令

用途

RESB

保留一个字节

RESW

保留一个字

RESD

保留一个双字

RESQ

保留一个四字

REST

保留十个字节

多个定义

程序中可以有多个数据定义语句。例如:

choice DB 'Y' ;ASCII of y = 79H

number1 DW 12345 ;12345D = 3039H

number2 DD 12345679 ;123456789D = 75BCD15H

汇编程序为多个变量定义分配连续内存。

多次初始化

TIMES 指令允许对同一值进行多次初始化。例如,可以使用以下语句定义名为 marks 的大小为 9 的数组并将其初始化为零:

marks TIMES 9 DW 0

TIMES 指令在定义数组和表格时很有用。以下程序在屏幕上显示 9 个星号:

在线演示

section .text

global _start ;must be declared for linker (ld)

_start: ;tell linker entry point

mov edx,9 ;message length

mov ecx, stars ;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

stars times 9 db '*'

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

*********

打印页面

上一页 下一页

广告

📚 相关推荐

移动卡购买流量包后还显示超出扣费是什么原因
北海365最新房屋出租

移动卡购买流量包后还显示超出扣费是什么原因

📅 07-07 👁️ 4927
网站备案号查询多久能出结果
365bet.com官方网站

网站备案号查询多久能出结果

📅 07-25 👁️ 9572
揭秘Windows 10自带软件:实用工具一网打尽,轻松提升电脑效率
什么导致充电宝“爆燃”
北海365最新房屋出租

什么导致充电宝“爆燃”

📅 11-26 👁️ 2928
含有【聚】的成语
365网新闻

含有【聚】的成语

📅 08-01 👁️ 5193
梦幻西游打图号怎么选择
365网新闻

梦幻西游打图号怎么选择

📅 11-12 👁️ 8732
史上最水金靴是谁?哈利凯恩6进球里3个点球老天帮着刷
大家弹起来——钢琴即兴伴奏入门
365网新闻

大家弹起来——钢琴即兴伴奏入门

📅 08-16 👁️ 3894
魅族 Flyme 正式升级为 FlymeOS 生态系统 中文名“无界 OS”
北海365最新房屋出租

魅族 Flyme 正式升级为 FlymeOS 生态系统 中文名“无界 OS”

📅 10-13 👁️ 5340