汇编原理6:opcode

        自从分析完前面的init_memory子程序后,好长一段时间没有看fasm1.0的源代码。工作忙是一方面的原因,另一方面的原因是晚上回家来后不想看程序,只想看看小说,玩会儿游戏什么的。过了好长一段时间才又振奋起来,鼓励自己继续看fasm1.0的代码,不要半途而废。于是又静下心来,咬着牙看完了。
        我看代码的途径是通过分析fasm汇编器汇编一个简单程序的过程来理解fasm的思路。那个简单程序文件的名字是comdemo.asm,大小只有71个字节。后来我嫌71个字节也太多,索性改为17个字节大小,只有两行代码:mov ah,9和 int 20h。使用fasm comdemo.asm hello.com进行编译,得到的可执行文件大小只有4个字节:b4 09 cd 20 。后面又分析了get_params子程序,preprocessor子程序,parser子程序,assembler子程序,formatter子程序,终于得到了hello.com这个可执行文件。分析完了才发现,涉及到80x86的opcode了。这下有点傻眼了。
        于是又上网查80x86的opcode的知识,找到一些资料,也找到一些好网站,比如罗聪的  http://www.luocong.com/learningopcode.htm ,还有mik的mouseOS小站中的"x86/x64体系指令系统": http://www.mouseos.com/x64/default.html ,他们讲的都很好,可是对于我来说还是有些难度。因为网上的这些资源大多讲的是80386以上的指令体系结构的opcode,指令长度是1~15个字节。而我现在连8086的opcode都没弄清楚,直接看80386的看不太懂。都说学习是个循序渐进的过程,如果8086的opcode学明白了,再学80386的opcode应该就容易多了。利用google的高级搜索功能,专门搜索8086的opcode,还是搜到了一些资料,呵呵。当然,最有价值的还是8086的manual。
        我的计划是这样的:1.先学习一下简单的8086的opcode的知识,然后动手精简fasm,使得它只能支持8086的指令。2.看fasm1.51 for DOS的源代码,看看fasm1.51是如何实现在保护模式下也能进行汇编的。3.将精简后的fasm代码修改,使得它也能在保护模式下面运行。如果要更精确一点的说,第1步中首先要实现这样的功能:精简后的fasm只能编译两条指令:一条是 mov reg,immediate和int 指令。后面再慢慢扩展可编译的指令,直到最后可以支持8086所有的指令。
        饭要一口一口地吃,路要一步一步地走。别着急,慢慢来。嘿嘿。先给自己加把油!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值