程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 學 Win32 匯編 [4]: 數據類型與聲明

學 Win32 匯編 [4]: 數據類型與聲明

編輯:Delphi
類型描述 類型 縮寫 位數 字節數 浮點數有效位 數值范圍 字節 BYTE DB 8 1   0..255 有符號字節 SBYTE DB 8 1   -128..127 字 WORD DW 16 2   0..65535 有符號字 SWord DW 16 2   -32768..32767 雙字 DWord DD 32 4   0..4294967295 有符號雙字 SDWord DD 32 4   -2147483648..2147483647 遠字 FWord DF 48 6     四字 QWord DQ 64 8     十字節 TBYTE DT 80 10     單精度浮點數 REAL4   32 4 6 1.18*10-38..3.40*1038 雙精度浮點數 REAL8   64 8 15 2.23*10-308..1.79*10308 10字節浮點數 REAL10   80 10 19 3.37*10-4932..1.18*104932

注: 類型縮寫(譬如用 db 代替 byte)不能用於局部變量.

進制表示(其中的 d t b y q o h 不區分大小寫):

; Test4_1.asm  
.386 
.model flat, stdcall 
 
include msvcrt.inc 
includelib msvcrt.lib 
 
.data 
  szFmt db '%d',13,10,0 ;13,10 是回車與換行, 也可寫作: 0dh,0ah 
 
  v1 dd 10  ;十進制 
  v2 dd 10d ;十進制 
  v3 dd 10t ;十進制 
  v4 dd 10b ;二進制 
  v5 dd 10y ;二進制 
  v6 dd 10q ;八進制 
  v7 dd 10o ;八進制 
  v8 dd 10h ;十六進制 
  v9 dd 0ah ;十六進制; 如果第一位不是數字應前置 0 
   
.code 
start: 
  invoke crt_printf, addr szFmt, v1 ;10 
  invoke crt_printf, addr szFmt, v2 ;10 
  invoke crt_printf, addr szFmt, v3 ;10 
  invoke crt_printf, addr szFmt, v4 ;2 
  invoke crt_printf, addr szFmt, v5 ;2 
  invoke crt_printf, addr szFmt, v6 ;8 
  invoke crt_printf, addr szFmt, v7 ;8 
  invoke crt_printf, addr szFmt, v8 ;16 
  invoke crt_printf, addr szFmt, v9 ;10 
  ret 
end start 

浮點數:

; Test4_2.asm 
.386 
.model flat, stdcall 
 
include msvcrt.inc 
includelib msvcrt.lib 
 
.data 
  szFmt db '%g', 0DH, 0AH, 0 
  v1 real8 3.14 
  v2 real8 3. 
  v3 real8 3.14e-2 
  v4 real8 3.14E2 
.code 
start: 
  invoke crt_printf, addr szFmt, v1 ;3.14 
  invoke crt_printf, addr szFmt, v2 ;3 
  invoke crt_printf, addr szFmt, v3 ;0.0314 
  invoke crt_printf, addr szFmt, v4 ;314 
  ret 
end start 

常量、可賦初值的變量、不賦初值的變量:

; Test4_3.asm 
.386 
.model flat, stdcall 
 
include msvcrt.inc 
includelib msvcrt.lib 
 
.const ;常量 
  szFmt db '%d',0dh,0ah,0 
  v1  dd 11 
   
.data ;可賦初值的變量, 其中也可聲明不不賦初值的變量 
  v2 dd 22 
  v3 dd ? 
   
.data? ;不賦初值的變量 
  v4 dd ? 
 
.code 
start: 
  invoke crt_printf, addr szFmt, v1 ;11 
  invoke crt_printf, addr szFmt, v2 ;22 
  invoke crt_printf, addr szFmt, v3 ;0 
  invoke crt_printf, addr szFmt, v4 ;0 
  mov eax, 33 
  mov v3, eax 
  mov eax, 44 
  mov v4, eax 
  invoke crt_printf, addr szFmt, v1 ;11 
  invoke crt_printf, addr szFmt, v2 ;22 
  invoke crt_printf, addr szFmt, v3 ;33 
  invoke crt_printf, addr szFmt, v4 ;44 
  ret 
end start 

匯編中的標識符(變量名、常量名、過程名、標號)可以使用下面符號:
A-Z a-z 0-9 _ @ $

但第一個字符不能是數字(0-9), 長度不要超過 247 個字符.


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved