初学者连续看3天汇编了,有几个问题请教各位大侠

flybusflybus 2003-02-14 09:20:41
1。pushad(我看子过程调用开始都用这个)、cld指令是什么意思;
2。汇编里对指令参数有一些类似的限制吧?我不怎么记得了,比如:不能2个参数都是变量等等
3。我想学驱动开发,我该怎么循序渐进看哪些书?我现在第一本是罗云彬写的那本win32程序的书,感觉挺不错什么原则的。
4。在定义字程序的时候,uses后列出寄存器一般根据什么原则,可看了几个例子,uses后列出的寄存器好象都没用到,为什么要保存这些值呢?是不是api或者伪指令用到他们的原因呢?所以我想问一下有
5。mov,BITMAPFILEHEADER.bfOffBits [esi]着条指令什么意思?

先谢啦
...全文
63 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
itaolu 2003-02-15
  • 打赏
  • 举报
回复
寄存器没有被用到,也可以被保护啊,只不过会浪费几个指令周期而已。呵呵,别钻牛角尖啦。

pushad是把eax ecx edx ebx esp ebp esi edi按顺序压栈,对应的popad则会按照“先进后出”的原则出栈。

cld是把DF标志清零,这样的话,esi和edi所指向的内容就会随着操作而自动增加(反之自动减少)

好像并没有“2个参数都是变量”这种说法,实际上是很灵活的,而且类型也是很灵活的,可以是WORD、DWORD型等等,总之随你自己所传递的参数情况而定。

mov BITMAPFILEHEADER.bfOffBits, [esi] 是把[esi]储存的内容赋值给BITMAPFILEHEADER.bfOffBits



请来我的主页一看:
老罗的缤纷天地
http://www.LuoCong.com
flybusflybus 2003-02-15
  • 打赏
  • 举报
回复
thank you very much ^__^

我看了你的个人网页,年轻有为
flybusflybus 2003-02-15
  • 打赏
  • 举报
回复
我知道是对寄存器保护,但我不明白需要保护哪些,因为我看的几个例子里列出的寄存器在子程序中都没被用到,我怀疑是不是api函数或者伪指令用到了的缘故呢?

另外我把曾年的汇编教材看了一下,呵呵,知道mul和cld是干什么的了,不过pushad和popad这样的指令是什么意思,我还不明白,另外其他几个问题我一个也都还不明白,不佞赐教
itaolu 2003-02-15
  • 打赏
  • 举报
回复
uses后面跟的是该子程序需要用到的寄存器,作用是对这些寄存器进行保护。

例如:

About proc uses ebx
...
ret
About endp

相当于:

About proc
push ebx
...
pop ebx
ret
About endp
CHINAhello 2003-02-14
  • 打赏
  • 举报
回复
另外,WINDOWS下的汇编跟DOS下的汇编有很多地方不同,而上面介绍的两本书都是DOS下的汇编,所以需要有所注意
CHINAhello 2003-02-14
  • 打赏
  • 举报
回复
具体的知识点我也不是很清楚(很久不看汇编了),大体说说学习汇编需要哪些辅助知识
汇编因为跟硬件结合比较紧密,另外跟操作系统联系也比较密切,所以需要了解一些硬件跟系统的知识,比如系统内存结构,不同的寻址方式,还有一些芯片的基本知识。
有两本书需要看看,一是清华出版的《IBM-PC 汇编语言程序设计》;二是《》微型计算机IBM-PC/XT〔0520系列〕系统原理及应用》,也是清华出的,
这两本都是教材,可以当做学汇编的参考书来看
flybusflybus 2003-02-14
  • 打赏
  • 举报
回复
倒。。这个版块怎么人好象特别少啊,刚才陪老婆去街上溜了几个小时了,回来也没见一个答案-___-;

对了,我上面3条最后“什么原则的”几个字本来是在第4条的最后,我copy过来的时候,不知道怎么拖上去了

我现在时间多,想抓紧看看汇编,大家多给点帮助,提拔提拔啊,我一头雾水以后还要仰仗各位提点那
Android 2003-02-14
  • 打赏
  • 举报
回复
厉害,,

21,496

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧