学习win32汇编之自我反省1

Posted on 2006-12-22 13:15  doraemon1983  阅读(137)  评论(0)    收藏  举报

问题出在了哪里?每每在用C语言写一段程序没有问题的情况下,再来用汇编写却出现了各种各样的问题.

出现的问题大多是什么?

1.寻址方式不是非常的熟悉,竟然会为了mov eax, [ebx]传送的是地址还是数值而犹豫,很明显对于[ebx]无论什么传送的都是一个数值,而[ebx]从本声的意义上来说,ebx代表的是一个内存地址,[ebx]代表的是ebx所指向的内存地址中的值.对于eax而言[ebx]是一个值还是一个地址没有意义,因为到底eax是想存如一个地址还是一个值,具体要看eax下一步操作要做什么!

2.既然用c可以把程序完成,则表示逻辑上程序没有问题,那么用汇编来写出现问题表示着什么呢?

在跳转问题上程序如何优化,在寄存器的使用上如何做到用最少的寄存器做到应该完成的任务,对于栈操作,应该明确什么样的操作产生压栈,出栈,应该在程序每执行一个指令时都要明确从操作开始后栈的使用情况,要想知道程序的逻辑是否正确,最好的办法就是画一张清晰的流程图,应该对每一部分,分别建立流程图,这样将能清晰的知道各个寄存器与堆栈的即时状态

3.调试问题,应该做一个调试工具,起码的作用是更新堆栈的状态以便与核查数据是否正确

如何调试才更有效率,应该明确知道程序执行到了哪一步,堆栈的状态如何,当前数据的值是什么,逻辑是否正确!

在画流程图的时候应该确顶逻辑上正确,算法上精简,找出公共的跳转处,在编写代码时应该确保指令正确,数据的寻址正确,数据保护的完善,在调试的时候要耐心,细心,冷静,能分析出问题出在什么地方!

以上是近阶段做的不好的地方,望改正!

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3