汇编-变量

复制代码
.386  
.model flat,stdcall 
option casemap:none

.data   
sum DWORD 0    ;创建一个全局变量,取名sum,初始化0
sum1 DWORD ?    ;创建一个全局变量sum1,无初始化
;问号(?)初始化值使得变量未被初始化,这意味着在运行时才会为该变量分配一个值
;变量名其实是一个标号,标识了从该变量从所在段的开始到该变量的偏移量

list BYTE 10,20,30,40
     BYTE 50,60,70,80
     BYTE 81,82,83,84

;如果同一个数据定义中使用了多个初始化值,则它的标号只指出第一个初始化值的偏移量
;假设list的偏移量为0000,那么数值10的偏移量就为0000,20的偏移量为0001,30的偏移量为0002,40的偏移量为0003
;不是所有的数据定义都需要标号。比如, 要在list字节数组后面继续扩展,就可以在下一行定义后加的字节:
;BYTE 50, 60, 70, 80   BYTE 81, 82, 83, 84


ExitProcess PROTO,dwExitCode:DWORD      

.code  
main PROC   
mov eax,5  
 
mov sum,eax  

INVOKE ExitProcess,0  
main ENDP   
END main  

定义DWORD和SDWORD数据

复制代码
.data   
val1 DWORD 12345678h    ;无符号数
val2 SDWORD -2147483648  ;有符号数
val3 DWORD 20 DUP(?)     ;无符号数组

val4 DD 12345678h     ;无符号数
val5 DD -2147483648   ;有符号数


pVal DWORD val3
;DWORD还可用于声明一种变量, 这种变量包含的是另一个变量的32位偏移量。如上所示, pval包含的就是val3的偏移量

myList DWORD 1, 2, 3, 4, 5  ;定义数组,偏移量的增量为4

定义压缩的BCD(TBYTE) 数据

Intel将一个压缩的BCD整数存放在一个10字节的包中。每个字节(除了最高字节外)包含两个十进制数字。在低9个字节中,每半个字节都存放了一个十进制数字。在最高字节中,最高位表示该数的符号。如果最高字节为80h,则该数为负数;如果最高字节为00h,则该数为正数。整数的范围是-999999999999999999到+999999999999999999。与其他数据值一样, BCD以小端序存储(最低字节存放在变量的起始偏移量处) 。

MASM使用T BYTE伪指令来声明压缩BCD变量。常量初始化值必须是十六进制的, 因为汇编器不会自动将十进制初始化值转换为BCD码。下面的两个例子展示了十进制数-1234有效和无效的表达方式:

定义浮点类型

复制代码
.data   
rVal1 REAL4 -1.2
rVal2 REAL8 3.2E-260
rVal3 REAL10 4.6E+4096
ShortArray REAL4 20 DUP(0.0)

;DD、DQ和DT伪指令也可以定义实数:
rVal4 DD -1.2    ;短实数
rVal5 DQ 3.2E-260  ;长实数
rVal6 DT 4.6E+4096  ;扩展精度实数

实例:变量相加程序

复制代码
.386  
.model flat,stdcall 
option casemap:none

.data   
firstval DWORD 20002000h 
secondval DWORD 11111111h 
thirdval DWORD 22222222h 
sum DWORD 0

ExitProcess PROTO,dwExitCode:DWORD      

.code  
main PROC   
	mov eax,firstval 
	add eax,secondval 
	add eax,thirdval 
	mov sum,eax
  
INVOKE ExitProcess,0  
main ENDP   
END main  
相关推荐
切糕师学AI6 小时前
ARM 中的 SVC 监管调用(Supervisor Call)
linux·c语言·汇编·arm开发
ベadvance courageouslyミ9 小时前
硬件基础中断
汇编·硬件·中断
你爱写程序吗(新H)12 小时前
基于单片机的洗衣机控制系统设计 单片机洗衣机控制(设计+文档)
c语言·汇编·单片机·嵌入式硬件·matlab
VekiSon1 天前
ARM架构——用汇编语言点亮 LED
汇编·arm开发·嵌入式硬件
JJCar2 天前
汇编文字池(literal pool)
汇编·文字池·literal pool
乾复道2 天前
巧用终端,每天节省2小时
汇编·经验分享·vim
2501_927773073 天前
嵌入式——汇编语言1
汇编
山峰哥3 天前
数据库工程核心:SQL调优让查询效率飙升的实战密码
网络·汇编·数据库·sql·编辑器
秋深枫叶红4 天前
嵌入式第四十七篇——ARM汇编
汇编·arm开发·学习
jh10_4 天前
嵌入式硬件DAY5(ARM汇编)
汇编·arm开发·嵌入式硬件