汇编语言-001(BYTE、DUP、WORD 、DWORD 、QWORD 、TBYTE 、REAL )

1 : 基础汇编语言展示

.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.code
main PROC
   mov eax,5
   add eax,6

   INVOKE ExitProcess,0
main ENDP
END main

2:基础汇编语言展示增加变量的访问

.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
sum DWORD 0

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

   INVOKE ExitProcess,0
main ENDP
END main


3:BYTE数据定义

.386
.model flat,stdcall

.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
value1 BYTE 'A'
value2 BYTE 0
value3 BYTE 255
value4 SBYTE -128
value5 SBYTE +127
value6 BYTE ?
value7 BYTE 10h
value8 BYTE 20h

value9 DB 255   ;传统数据伪指令
value10 DB -128 ;传统数据伪指令

list BYTE 10,20,30,40,50

list2 BYTE 10,20,30,40,50
      BYTE 60,70,80,90,100

list3 BYTE 10,32,41h,00100010b
list4 BYTE 0Ah,20h,'a',22h


.code
main PROC
   INVOKE ExitProcess,0
main ENDP
END main

4:BYTE定义字符串

.386
.model flat,stdcall

.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
;多个字节数值初始化必须用逗号隔开,但字符串是个例外要不然后每个字节都要用逗号,很麻烦
greeting1 BYTE "Good afternoon",0
greeting2 BYTE "Good night",0

greeting3 BYTE "Welcome to the Demo program "
          BYTE "created by me .",0dh,0ah
		  BYTE "If you wish to modify this program, please "
		  BYTE "send me a copy.",0dh,0ah,0

;行连续符(\)把两个源代码连在一起
greeting4 BYTE "Welcome to the Demo program "
greeting5 \
          BYTE "Welcome to the Demo program "

.code
main PROC
  INVOKE ExitProcess,0
main ENDP
END main

5:DUP操作符分配空间赋初始值,DUP使用一个整数表达式作为计数器,为多个数据分配存储空间

.386
.model flat,stdcall

.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
dup1 BYTE 20 DUP(0)  ;20个字节,值都为0
dup2 BYTE 20 DUP(?)  ;20个字节,未补始化
dup3 BYTE 20 DUP("STACK")  ;20个字节,赋字符串

.code
main PROC
    INVOKE ExitProcess,0
main ENDP
END main

6:WORD数据定义

.386
.model flat,stdcall

.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
word1 WORD 65535 ;最小无符号数
word2 SWORD -32768 ;最小有符号数
word3 WORD ? ;未初始化,无符号

;传统数据伪指令
word4 DW 65535 ;无符号
word5 DW -32768 ;有符号

mylist WORD 1,2,3,4,5
array WORD 5 DUP(?) ;5个数值,未初始化

.code
main PROC
   INVOKE ExitProcess,0
main ENDP
END main

7:DWORD数据定义 DWORD还可以用于声明一种变量,这种变量的包含另一个变量(就是保存地址)

.386
.model flat,stdcall

.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
value1 DWORD 12345678h  ;无符号
value2 SDWORD -2147483648 ;有符号
value3 DWORD 20 DUP(?) ;无符号数组

;传统数据伪指令
value4 DD 12345678h ;无符号
value5 DD -2147483648 ;有符号

;DWORD还可以用于声明一种变量,这种变量的包含另一个变量

pValue1 DWORD value1   ;value1的地址
pValue2 DWORD value2   ;value2的地址

mylist DWORD 1,2,3,4,5

.code
main PROC
   INVOKE ExitProcess,0
main ENDP
END main

8:QWORD数据定义

.386
.model flat,stdcall

.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
value1 QWORD 1234567812345678h

;传统伪指令
value2 DQ 1234567812345678h

.code
main PROC
  INVOKE ExitProcess,0
main ENDP
END main

9:BCD压缩数据定义 MASM使用TBYTE伪指令来定义BCD变量

.386
.model flat,stdcall

.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
intVal TBYTE 80000000000000001234h  ;有效定义
;intVal TBYTE -1234  无效

;浮点数据使用压缩BCD码,要通过浮点寄存器
posVal REAL8 1.5
bcdVal TBYTE ?


.code
main PROC
   fld posVal  ;加载到浮点堆栈
   fbstp bcdVal ;向上舍入到2,压缩BCD码值
   INVOKE ExitProcess,0
main ENDP
END main

10:REAL浮点数据定义

.386
.model flat,stdcall

.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
rVal1 REAL4 -1.2        ;短实数        有效数字6位
rVal2 REAL8 3.2E-260    ;长实数        有效数字15位
rVal3 REAL10 4.6E+4096  ;扩展精度实数  有效数字19位
ShortArray REAL4 20 DUP(0.0)

;传统数据伪指令
rVal4 DD -1.2 
rVal5 DQ 3.2E-260
rVal6 DT 4.6E+4096

.code
main PROC
   INVOKE ExitProcess,0
main ENDP
END main
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值