关于汇编的问题,MOV EBP,ESP 是啥意思,起的是啥作用啊?
1个回答
展开全部
byte ptr [ecx+eax]
其中ptr强制转换时要用的关键字,byte是要转换的类型,[ecx+eax]是一个内存地址,即一个变量。以下看详细解释。
mov dl,byte ptr [ecx+eax]
//把ptr [ecx+eax]地址所代表的变量强转成byte型(即16位,等价于一个字节)放入DL中,因为32位机每个变量是32位的,而DL是DX的低16位,如果不转就放不进去。
cmp eax,xxxxxxxx
//把eax中的值和xxxxxxxx比较
jnz end
//不相等,就跳到end
mov dl,xx
//相等,就把xx放入dl中
cmp eax xxxxxxxx
//比较eax和xxxxxxxx
jnz end
//不想等,跳到end
mov dl,xx
//相等,把xx放入dl
end:
mov byte ptr [eax],dl
//把eax强转位byte型(即16位),把dl放入eax中
jmp xxxxxxxx
//跳到xxxxxxxx
、1.首先,我不推荐《IBM汇编语言》这类教科书试的教材。一来里面讲的一些东西都过时了,只有一些8086的东东,可我们早使用奔腾了。从286,386之后,Inte CPU的结构已经有了很大的改进。而且这类书里面讲的也无非就是一些简单的指令格式和语法,但却讲得让人似在云里雾里。
2.不推荐一开始就学MASM或TASM的语法,其实语法这东西很简单。只有有一点点计算机编程基础的人,我相信最多一个小时,都能基本搞懂,然后再练练就自然会熟,不记得直接翻Refererce就可以。
3.推荐首先看Intel网站是的《IA-32 Software development manual》,耐着点性子把Volume I和Volume III看完。这样你会对Protect mode,Virtual Memory以及V86有足够的了解 。
4.然后看看MASM或TASM(看你用哪一个编译器)的语法,这个前面说过,几分钟就能明白。
5.在有了前面的基础之后,你就该开始动手好好练练了。以后的路就不必多说了。
6.另外,如果你觉得单纯的学汇编很没意思的话,你可以用Virus来练手,我以前就是这么做的。
如果你的英语和我一样的好(四级),那你可能要一个月左右才能看完Volume I和Volume III,然后再花一个星期左右去练练。那你的汇编就可以说入门了,往后的路也比较容易走了。
当然,如果你实在不喜欢English,那你就随便找两本中文版的Protect mode(保护模式)的书来看看吧。这样你最好边看边练。这种学习方法能获得比较好的短期效果。
至少MASM的语法是比较简单的,里面很多的MACRO可以让你像使用C一样使用ASM。而各指令呢,不会就查Volume II的Instruction Reference
耐心啊 耐心 编程这东西 再枯燥也要保持兴趣 永远是王道。
入门以后,也不要考虑一口就吃一个胖子:非得编出个什么漂漂亮亮的程序来不可。
其实没必要的,建议多练练基本的,以量的练习为主(10遍20遍的小意思)。
大概再有半个月的时间,可以考虑trouble shooting 来实例排错,运用实际场景和应用功能,进行功能和语法的排错,从而锻炼自己的思考能力和思维方式。
编程这种东西,都是触类旁通 等你大脑中有了一个关于它的 健全的 知识体系结构的时候,就可以融会贯通了。
仅供参考
以上。
其中ptr强制转换时要用的关键字,byte是要转换的类型,[ecx+eax]是一个内存地址,即一个变量。以下看详细解释。
mov dl,byte ptr [ecx+eax]
//把ptr [ecx+eax]地址所代表的变量强转成byte型(即16位,等价于一个字节)放入DL中,因为32位机每个变量是32位的,而DL是DX的低16位,如果不转就放不进去。
cmp eax,xxxxxxxx
//把eax中的值和xxxxxxxx比较
jnz end
//不相等,就跳到end
mov dl,xx
//相等,就把xx放入dl中
cmp eax xxxxxxxx
//比较eax和xxxxxxxx
jnz end
//不想等,跳到end
mov dl,xx
//相等,把xx放入dl
end:
mov byte ptr [eax],dl
//把eax强转位byte型(即16位),把dl放入eax中
jmp xxxxxxxx
//跳到xxxxxxxx
、1.首先,我不推荐《IBM汇编语言》这类教科书试的教材。一来里面讲的一些东西都过时了,只有一些8086的东东,可我们早使用奔腾了。从286,386之后,Inte CPU的结构已经有了很大的改进。而且这类书里面讲的也无非就是一些简单的指令格式和语法,但却讲得让人似在云里雾里。
2.不推荐一开始就学MASM或TASM的语法,其实语法这东西很简单。只有有一点点计算机编程基础的人,我相信最多一个小时,都能基本搞懂,然后再练练就自然会熟,不记得直接翻Refererce就可以。
3.推荐首先看Intel网站是的《IA-32 Software development manual》,耐着点性子把Volume I和Volume III看完。这样你会对Protect mode,Virtual Memory以及V86有足够的了解 。
4.然后看看MASM或TASM(看你用哪一个编译器)的语法,这个前面说过,几分钟就能明白。
5.在有了前面的基础之后,你就该开始动手好好练练了。以后的路就不必多说了。
6.另外,如果你觉得单纯的学汇编很没意思的话,你可以用Virus来练手,我以前就是这么做的。
如果你的英语和我一样的好(四级),那你可能要一个月左右才能看完Volume I和Volume III,然后再花一个星期左右去练练。那你的汇编就可以说入门了,往后的路也比较容易走了。
当然,如果你实在不喜欢English,那你就随便找两本中文版的Protect mode(保护模式)的书来看看吧。这样你最好边看边练。这种学习方法能获得比较好的短期效果。
至少MASM的语法是比较简单的,里面很多的MACRO可以让你像使用C一样使用ASM。而各指令呢,不会就查Volume II的Instruction Reference
耐心啊 耐心 编程这东西 再枯燥也要保持兴趣 永远是王道。
入门以后,也不要考虑一口就吃一个胖子:非得编出个什么漂漂亮亮的程序来不可。
其实没必要的,建议多练练基本的,以量的练习为主(10遍20遍的小意思)。
大概再有半个月的时间,可以考虑trouble shooting 来实例排错,运用实际场景和应用功能,进行功能和语法的排错,从而锻炼自己的思考能力和思维方式。
编程这种东西,都是触类旁通 等你大脑中有了一个关于它的 健全的 知识体系结构的时候,就可以融会贯通了。
仅供参考
以上。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询