汇编第4章 MASM下Win32汇编语言语法_w.ppt

  1. 1、本文档共170页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编第4章 MASM下Win32汇编语言语法_w

第四章 MASM下的Win32汇编语言语法 4.1 程序框架 4.2 数据组织 4.3 子程序 4.4 程序流控制 4.5 宏 4.6 模块化程序设计 4.7 条件汇编 4.8 其它伪指令 4.9 实验工具的介绍和编程环境的创建 4.1 程序框架 .386 是一条汇编器指令,也可称为伪指令。这条伪指令告诉汇编器程序中使用80386处理器的指令系统。 .MODEL也是一条伪指令,这条指令指示了当前程序的工作模式。 内存模式:Win32程序只能使用Flat的内存模式。 语言模式:规定了函数参数的压栈顺序及堆栈的恢复者。 STDCALL语言模式:同于Windows的API函数的参数传递模式。 .DATA 、.DATA?、.CONST、.STACK、 .CODE是五个分段伪指令 。 .DATA区间存放的是已经初始化过的变量。 .DATA?区间存放的是没有经过初始化的变量。 .CONST区间存放的是程序中的常量(只读)。 .CODE区间是唯一存放代码的区间,该区间具有可执行的属性(只读)。 在Win32汇编程序中,不用考虑堆栈段。 但特权级0的程序中,所有段都是可以读写的。 end label 这条伪指令用来表示源程序的结束点,同时也指出了源程序的入口点——是从label标号开始的。 它告诉汇编程序在遇到这条语句的时候结束对源文件的汇编工作。 Label操作数可以取任何符合语法规则的标志符,是可选操作数。 在多模块程序中,主模块程序中的end指令后必须带有Label操作数,而其他模块中的end指令后可以没有Label操作数。 注释: 在MASM下的Win32汇编的注释是以分号(;)开始,直至行末; 换行: Win32汇编程序默认每行一条语句。 当源程序在一行中过长不便于阅读时,就可以用分行符(\)来分行书写——添加在语句末尾 。 程序例子1 .386 .model flat,stdcall .data x db 10 y db 120 .code start: Mov al,x Add al,y Mov x,al end start 程序例子2 4.2 数据组织 4.2.1 变量 4.2.2 数据类型 4.2.3 变量的访问 4.2.4 常量 4.2.5 汇编器的变量和常量 4.2.1 变量 1.定义全局变量 2.定义局部变量 1、定义全局变量 在Win32汇编程序里面,全局变量的作用域是整个模块,这些变量可以定义在.DATA或.DATA?段内。 定义全局变量的格式: 一个关于全局变量定义的例子: 数组变量的内存空间分布 : 在.Data段里面定义的变量在内存中的存在形式如下图所示: 2、定义局部变量 从局部变量的作用域来看,它和标号很像,仅仅在它自己所在的子程序段里面有效。 在不同的子程序里面可以有相同名称的局部变量。 任何子程序里面的局部变量名都不能和已定义的全局变量名相同。 定义局部变量的具体格式: 一个使用局部变量的例子: 4.2.2 数据类型 1、简单数据类型 2、结构体 3、共用体 4、记录 1、简单数据类型 简单数据类型一览表(表4-4) 2、结构体 在MASM下的Win32汇编程序里面我们可以使用关键字STRUCT或它的同义关键字STRUC来定义一个我们所需的数据类型。结构体定义的格式如下所示: (1)alignment参数的使用 (2)嵌套定义结构体 (3)结构体的初始化 (4)结构体变量的定义 在MASM下的Win32汇编语言程序里面结构体变量的定义方法: (5)结构体变量的访问 在MASM下的Win32汇编语言程序里面结构体变量的使用方法和高级语言里面结构体变量的使用方法很相似,即使用如下格式来访问结构体变量中的某个成员变量 : 结构体变量的赋值 2.使用ASSUME关键字访问结构体变量 例:定义结构数组 Student struc id byte 10 dup(0) name byte 9 dup(0) Student ends .data st Student 60 dup() 例:定义结构类型和变量 POINT STRUCT x DWORD ? y DWORD ? POINT ENDS MSG STRUCT hwnd DWORD ? message DWORD ? wParam DWORD ? lParam DWORD ? time DWORD

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档