南京邮电大学微型计算机原理和接口技术 chap15 孙力娟.pptVIP

南京邮电大学微型计算机原理和接口技术 chap15 孙力娟.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档