汇编代码出错,检查方法
来源:互联网 发布:淘宝物流助手在哪里 编辑:程序博客网 时间:2024/05/21 22:29
汇编学习了一段时间,今天试着练习下,以前都没用汇编写过什么东西,今天就今天写代码遇到的问题总结下:
下面这些都是一些很低级的问题,都是针对刚开始写汇编代码的人(masm32)
1.关于汇编语法错误查错思路:
首先第一点,我用的是Radasm出错时出错位置不一定就是真正出错的地方,可能是前面或后面的语句
第二点,要注意定义的函数要放在代码段里,并且要放在end xxx之前,当出现链接错误,未定义的符号时,如果是自己定义的函数首先要检查其位置是否正确,然后再看定义时函数名是否和调用时相同,然后是参数的个数,另外不要忘记每个函数最后面都要加ret指令否则会崩的
第三点,关于比例因子寻址的,要记住比例因子只能在1,2,4,8这几个数字选,否则都会出错
第四点,对于双操作数的指令来说,最多只能有一个是从内存中得操作数,主要是在写.if .while这些时一定要注意只能有一个为内存中的数
第五点,对于函数中一个参数是指针类型的(指向结构体),如果要用到此结构体中的成员,一定要先mov reg,point 然后再 【reg】.field取其字段的值,如果直接【point】.field,这样是得不到结构体中字段的值的,这样得到只是栈中某个单元的内容
第六点,汇编编程时最容易出现的问题就是寄存器的值被覆盖了,如果用到寄存器一定要保证不要把前面的值给覆盖了(如果寄存器中的值有用),在用的时候首先 push reg 然后在再次需要之前的寄存器值得时候用pop reg 另外一定要注意堆栈平衡也就是 push pop 必须成对出现,另外一定要注意不能在分支之前用push 分支之后用pop 因为很可能分支中的pop没有执行,这样也会造成堆栈破坏。
第七点,要注意的就是对于双操作数指令前后操作数的类型也好匹配,这也是容易出错的地方
第八点,尽量不要用eax传多个参数,因为很可能在传参的时候eax的值破坏了,如 invoke fun, addr xx【eax】.y, addr xx【eax】.x
目前就写这些,这些是今天写代码遇到的问题,写下做个笔记,以后在有问题会继续补充
- 汇编代码出错,检查方法
- activex 安装出错,一般检查方法
- C/C++代码检查方法
- VC 内联汇编代码 赋值出错, 输出值会变动
- 一种c++不在运行时检查出错的方法
- 【代码优化】方法签名及参数检查
- VC下生成汇编代码的方法:
- 机器码与汇编代码对应方法
- 内联汇编。出错处理
- 代码检查
- 代码检查
- 检查代码
- 代码检查
- 【PHP_配置】_02_检查apache配置文件语法是否出错的方法
- iOS应用检查更新的最优方法附代码
- ORACLE出错汇编 --- 持续增加
- 在VC/C#中用反汇编的方法研究代码
- 使用WinDbg获得托管方法的汇编代码
- linux mysql 免安装版
- 用jsp写的网页 怎么在传递参数时包含中文?
- ubuntu12.04突然不能快速定位文件了?
- 寻找数组中出现次数最多的值
- There is an obvious Error in npp src. ( About FORTRAN Syntax Highlighting And Fold )
- 汇编代码出错,检查方法
- 跳表Skiplist学习笔记
- IBM p570更换硬盘
- ubuntu12.04 64bit 编译android源码时遇到的问题
- tomcate不能启动
- iOS杂谈13—iOS面试题汇总(二)
- jquery做全选反选
- APT-GET工作原理简介
- ubuntu 11.04 上安装 tftp server