首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

学 Win32 汇编[十]: TYPE、$、LENGTHOF、SIZEOF、TYPEDEF

2012-09-10 
学 Win32 汇编[10]: TYPE、$、LENGTHOF、SIZEOF、TYPEDEFTYPE: 获取类型大小, 对数组是获取每个元素的大小 Te

学 Win32 汇编[10]: TYPE、$、LENGTHOF、SIZEOF、TYPEDEF

TYPE: 获取类型大小, 对数组是获取每个元素的大小

; Test10_1.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.data??   v1 db ??   v2 dw ??   v3 dd ??   v4 df ??   v5 dq ??   v6 dt ??   v7 db 1024 dup(?).codemain proc?   PrintDec (type v1)  ;1?   PrintDec (type v2)  ;2?   PrintDec (type v3)  ;4?   PrintDec (type v4)  ;6?   PrintDec (type v5)  ;8?   PrintDec (type v6)  ;10?   PrintDec (type v7)  ;1?   retmain endpend main


$: 当前程序语句的地址

; Test10_2.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.data?   V1 db 11,22,33,44?   V1Size = ($ - V1)  ;这是变量 V1 的大小?   ?   V2 dw 11,22,33,44?   V2Size = $ - V2    ;这是变量 V2 的大小?   ?   V3 dd 10 dup(0)?   V3Size = $ - V3?     ;这是变量 V3 的大小?   V3Len  = ($-V3) / 4  ;这是变量 V3(dword 类型数组)的元素数目?   ?   V4 db 'abcdefghijklmnopqrstuvwxyz', 0?   V4Size = $ - V4?     ;这是变量 V4 的大小.codemain proc?   PrintHex $?       ;00401001, 这是当前语句的地址?   PrintDec V1Size   ;4?   PrintDec V2Size   ;8?   PrintDec V3Size   ;40?   PrintDec V3Len    ;10?   PrintDec V4Size   ;27?   PrintHex $?       ;0040135A, 这是当前语句的地址?   retmain endpend main


LENGTHOF: 数组元素个数; SIZEOF: 总字节数

; Test10_3.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.data?   v1 db 'abc', 0?   v2 dd 11, 22, 33, 44, 55?   v3 dd 10 dup(0).codemain proc?   PrintDec (lengthof v1)  ;4?   PrintDec (lengthof v2)  ;5?   PrintDec (lengthof v3)  ;10?   ?   PrintDec (sizeof v1)  ;4?   PrintDec (sizeof v2)  ;20?   PrintDec (sizeof v3)  ;40?   retmain endpend main


TYPEDEF: 创建自定义类型

; Test10_4.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib;自定义一个等同于 DWORD 的类型: CardinalCardinal typedef ptr dword.data?   val Cardinal 100  ;使用 Cardinal 定义变量.codemain proc?   PrintDec val  ;100?   retmain endpend main;TYPEDEF 还用于定义函数原型, 如:;MyType typedef proto :DWORD, :DWORD, :DWORD

热点排行