在线二区人妖系列_国产亚洲欧美日韩在线一区_国产一级婬片视频免费看_精品少妇一区二区三区在线

鍍金池/ 教程/ Java/ Assembly 變量聲明
Assembly 變量聲明
Assembly匯編 STOS指令
Assembly 條件
Assembly 尋址模式和MOV指令
Assembly匯編教程
Assembly - 什么是匯編語言
Assembly 循環(huán)
Assembly 內(nèi)存段
Assembly匯編 宏
Assembly 寄存器
Assembly匯編 遞歸
Assembly匯編 CMPS指令
Assembly匯編 內(nèi)存管理
Assembly匯編 LODS指令
Assembly 基本語法
Assembly匯編 過程
Assembly匯編 文件管理
Assembly匯編 數(shù)組
Assembly匯編 SCAS指令
Assembly 算術指令
Assembly 環(huán)境設置
Assembly匯編 字符串處理
Assembly 數(shù)字
Assembly 常量
Assembly匯編 MOVS指令
Assembly 邏輯指令
Assembly 系統(tǒng)調(diào)用

Assembly 變量聲明

NASM提供各種定義變量預留存儲空間的指令。定義匯編指令用于分配的存儲空間。它可用于預定和初始化一個或多個字節(jié)。

初始化數(shù)據(jù)分配存儲空間

初始化數(shù)據(jù)存儲分配語句的語法是:

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

變量名是每個存儲空間的標識符。匯編器在數(shù)據(jù)段中定義的每一個變量名的偏移值。

有五種基本形式定義指令:

Directive Purpose Storage Space
DB Define Byte allocates 1 byte
DW Define Word allocates 2 bytes
DD Define Doubleword allocates 4 bytes
DQ Define Quadword allocates 8 bytes
DT Define Ten Bytes allocates 10 bytes

以下是一些例子,使用define指令:

choice		DB	'y'
number		DW	12345
neg_number	DW	-12345
big_number	DQ	123456789
real_number1	DD	1.234
real_number2	DQ	123.456

請注意:

  • 每個字節(jié)的字符以十六進制的ASCII值存儲。

  • 每個十進制值會自動轉換為十六進制數(shù)16位二進制存儲

  • 處理器使用小尾數(shù)字節(jié)順序

  • 負數(shù)轉換為2的補碼表示

  • 短的和長的浮點數(shù)使用32位或64位分別表示

下面的程序顯示了使用定義指令:

section .text
    global _start    ;must be declared for linker (gcc)
_start:    ;tell linker entry yiibai

	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'

上面的代碼編譯和執(zhí)行時,它會產(chǎn)生以下結果:

y

未初始化的數(shù)據(jù)分配存儲空間

儲備指令用于未初始化的數(shù)據(jù)預留空間。后備指令一個操作數(shù)指定要保留空間的單位數(shù)量。各自定義指令都有一個相關的后備指令。

有五種基本形式的后備指令:

Directive Purpose
RESB Reserve a Byte
RESW Reserve a Word
RESD Reserve a Doubleword
RESQ Reserve a Quadword
REST Reserve a Ten Bytes

多重定義

可以在程序有多個數(shù)據(jù)定義語句。例如:

choice	  DB 	'Y' 		;ASCII of y = 79H
number1	  DW 	12345 		;12345D = 3039H
number2   DD   	12345679 	;123456789D = 75BCD15H

匯編程序內(nèi)存分配連續(xù)多個變量的定義。

多個初始化

TIMES指令允許多個初始化為相同的值。例如,一個名為標記大小為9的數(shù)組可以被定義和初始化為零,使用下面的語句:

marks  TIMES  9  DW  0

時代的指令是非常有用在定義數(shù)組和表格。下面的程序顯示在屏幕上的9星號:

section	.text
    global _start    ;must be declared for linker (ld)
_start:    ;tell linker entry yiibai
	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 '*'

上面的代碼編譯和執(zhí)行時,它會產(chǎn)生以下結果:

*********