- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、开发环境建立;安装帮助文档;重置开发环境;设置汇编关键字高亮显示;设置显示行号;二、建立汇编语言工程;创建解决方案和工程;设置汇编语言编译器;设置程序运行环境;添加汇编语言源程序;编写汇编语言源程序;编译连接与运行调试;编译连接与运行调试;VS中的标志位 Intel的标志位
OV OF
UP DF
EI IF
PL SF
ZR ZF
AC AF
PE PF
CY CF
其实VS中的标志位是Intel标志位为1时对应的英文单词的速写 如PF=1 是偶校验 ParityEven;三、汇编语言程序格式;外部函数要用PROTO先声明再使用
Windows标准函数,PROTO STDCALL(可省)
C函数PROTO C
可变参数类型 VARARG
参数类型为BYTE、DWORD等,不能DB、DD
外部的函数库用INCLUDELIB指明
用OPTION指明大小写是否敏感
由于调用C函数,大小写敏感
函数调用的参数传递
通过push param1等传递参数,倒着传输。
要注意是传地址(OFFSET 变量)还是传值
;函数调用后的堆栈平衡
参数传递(push)改变了当前堆栈的栈顶ESP
函数调用后要把参数退出(pop)堆栈
C用 “ADD ESP,4*参数个数n” 即可堆栈平衡,不要pop,因为pop慢而且pop出来的数没有用
Windows标准调用的函数不用在主程序中堆栈平衡,因为子程序在返回时实现了堆栈平衡
函数调用的简写方法—宏缩写方式
INVOKE 函数名,参数1,参数2,……
可代替 push参数 call函数 堆栈平衡;chr$ MACRO any_text:VARARG
LOCAL txtname
.data
txtname db any_text,0
align 4
.code
EXITM OFFSET txtname
ENDM
.code
INVOKE printf,chr$(“Hello!”,0dh,0ah)
;与C语言的函数调用基本一致了。;四、汇编语言的程序元素;五、汇编语言的数据类型;汇编语言没有指针类型
因为指针就是存储单元的地址,是一个无符号数
32位CPU为DWORD,64位CPU为QWORD。
为与C一致,高版本的汇编语言中增加了PTR BYTE/WORD/Sword……类型,但其本质就是一个32位或64位的数—地址。
变量、数组、指针在类型上没有本质区别
某D?类型到底是什么具体的类型,由指令决定,其实CPU是不知道的,程序员和编译器知道。;汇编语言与C的类型对应;六、常量与常量表达式;常量表达式
算术表达式
逻辑表达式
表达式的计算由编译器??行,替换当前位置的数
表达式的计算顺序与C一样
可以用()指定计算顺序
;七、变量、初值与赋值;变量的初值为常量或常量表达式
汇编语言与C一样在赋初值时不进行类型检查。也就是有符号数与无符号数可互相赋值,real4与dd,real8与double等也可以互相赋值。
全局变量赋初值:是由编译器在指定数据段在本变量偏移位置-即地址处,放置了转换成相应编码的二进制数。
局部变量赋初值:局部变量定义时不能赋初值,必须由执行硬指令来赋初值;全局变量在数据段或附加段,在程序整个执行期间都占有固定的空间
局部变量在堆栈段,程序开始执行时并不存在其空间或初值,在程序运行进入子程序后,通过硬指令动态地分配空间、赋初值,子程序结束返回主程序前,再动态释放其占有空间。
全局变量的地址是一个固定的常数,可以用OFFSET获得其地址。
局部变量的地址不固定,必须用执行硬指令获得。并可由ADDR宏(LEA硬指令)获取
全局变量可以用DUP循环赋值
;变量可以有初值,编译器会在.obj与.exe执行文件中占用相应的类型空间
变量也可以没有初值(即没有初始化),编译器在.obj与.exe执行文件中不占空间,一般这样的变量可都定义在.data?段中
字符串常量可以用“HELLO”,也可以用‘H’,‘E’,‘L’,‘L’,‘O’,串最后一定要有0,不能用转义符\n等。
全局变量可以用DUP循环赋值,且可以嵌套
X DD 1,2,3,10 dup(1,0)
Y DD 5 dup(1,10 dup(0,0FFH),0)
您可能关注的文档
最近下载
- the-new-age-of-invention高一英语新外研版必修三unit3课件.pptx VIP
- (2025)呼伦贝尔市入团积极分子考试题库(含答案).docx VIP
- HG∕T 5677-2020 石油炼制行业绿色工厂评价要求.pdf VIP
- 《基于三菱FX2N控制系统的自动剥线机设计》9500字(论文) .pdf
- 奔驰500系列发动机操作手册.pdf VIP
- 天津大学学生宿舍文明住宿承诺书.DOC VIP
- 2025年中国半乳甘露聚糖项目创业计划书.docx
- The new age of invention课件新外研版必修三unit3.pdf VIP
- 2024辽宁中考数学二轮专题复习 微专题 遇到角平分线如何添加辅助线(课件).pptx VIP
- xx集团粮食仓储及加工基地可行性研究报告.docx
文档评论(0)