- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
南京邮电大学微型计算机原理和接口技术 chap15 孙力娟
第15章 Windows 汇编语言编程初步 ;15.1 Windows基础 ;2.Win32汇编的内存寻址
;3.Windows下的中断和异常
;4.Windows系统下的I/O保护
;15.2 Win32汇编源程序的格式;
1.方式选择伪指令
.586是一个汇编语言伪指令,含义和DOS汇编相同.
;3.OPTION语句
OPTION CASEMAP:TYPE
说明程序中的变量和子程序名是否对大小写敏感,即区分大小写。由于Windows API函数是区分大小写,选项应设置为“OPTION CASEMAP:NONE”。
; 格式:END标号
功能:通知汇编程序,源程序到此结束,标号所对应的指令是程序的启动指令。;Win32汇编语言经典源程序例子
;15.3 Win32汇编可执行文件的生成;汇编链接步骤(以教材例15.1为例);15.4 Win32汇编基本语法
15.4.1 标号和变量 ;
Win32汇编中变量的类型很多,根据变量的作用域可分为全局变量和局部变量。
;(2)局部变量;3. 获取变量地址
;15.4.2 结构;2.结构变量的定义
结构变量的定义格式如下:
变量名 结构名 格式一
或
变量名 结构名 VAR1,VAR2,…… 格式二
;3.结构变量的访问
在汇编中,结构变量的访问的两种较简单的方法:;15.4.3 子程序;(3)USES寄存器列表
表示CPU在进入子程序后自动执行PUSH这些寄存器的指令,在RET子程序返回前自动执行POP指令,用于保护现场。
(4)参数和类型
参数指参数的名称,在定义参数名的时候不能跟全局变量和子程序中的局部变量重名。对于类型,由于Win32中的参数类型只有32位(DWORD)一种类型,所以可以省略。
(5)VARARG
表示在已确定的参数后还可以跟多个数量不确定的参数。;例:利用子程序完成三数相加N1+N2+N3,假设N1=1122H,N2=3344H,N3=5566H; .CODE
START:
;调用计算子程序,将数据存放的起始地址作为传递的参数
INVOKE COMPUTE,ADDR N1
MOV SUM,AX ;保存计算结果
INVOKE ExitProcess, NULL ;结束执行程序
COMPUTE PROC USES EAX EBX,PARA1:DWORD
MOV EBX,PARA1
MOV EAX,0 ;求和寄存器清0
MOV AX,WORD PTR [EBX] ;AX=N1
ADD AX, WORD PTR [EBX+2] ;AX=N1+N2
ADD AX, WORD PTR [EBX+4] ;AX=N1+N2+N3
RET
COMPUTE ENDP
END START
;15.4.4 高级语法;1.条件测试表达式;分支语句的语法如下:
.IF 条件表达式1
表达式1为“真”时执行的指令
[.ELSEIF 条件表达式2]
表达式2为“真”时执行的指令
[.ELSEIF 条件表达式3]
表达式3为“真”时执行的指令
…
[.ELSE]
所有表达式为“否”时执行的指令
.ENDIF;例:设NUMBER单元的数X以及数值N1,N2均为单字节无符号数,请判断X的大小,并根据判断结果分别显示:N1=X=N2,或XN1,或XN2;MESG3 DB XN2,0
MsgBoxCaption DB EXAMPLE OF WIN32,0
.DATA?
NUMBER DB ?
.CODE
START:
MOV AL,NUMBER
.IF(AL=N1 AL=N2) ;N1=X=N2
MOV EBX,OFFSET MESG1
.ELSEIF(ALN1) ;XN1
MOV EBX,OFFSET MESG2
.ELSE ;XN2
MOV EBX,OFFSET MESG3
.ENDIF
INVOKE MessageBox, NULL, EBX, ADDR MsgBoxCaption, MB_OK
INVOKE ExitProcess, NULL
END START
;3.循环语句;例:假设从BUF单元开始为一个AS
您可能关注的文档
- c++4 类和对象.ppt
- Chapter3-目录和文件属性.ppt
- chapter01外汇和外汇汇率.ppt
- caiguan第3节 杠杆利益和资本结构.ppt
- ch2 汇款和托收.ppt
- chapter3 要素禀赋和国际贸易:赫克歇尔-俄林理论(lhq2010).ppt
- B第二章常用低压电器和基本控制电路 2005.ppt
- Chapter2 外汇和汇率.ppt
- ch4 IOCP和可伸缩网络程序.ppt
- Chap3 汇率制度和外汇管制.ppt
- 2025至2030集装箱装卸叉车行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030平板显示器行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025-2030中国数字经济发展趋势及政策环境分析与投资战略规划.docx
- 2025至2030中国芳纶纤维行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030通用航空装备行业市场深度调研及发展规划及有效策略与实施路径评估报告.docx
- 2025至2030六轴联动机床行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030奶茶行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030全球及中国精致休闲餐饮行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030金属加工和维修机械行业项目调研及市场前景预测评估报告.docx
- 2025至2030酒店管理行业产业运行态势及投资规划深度研究报告.docx
文档评论(0)