汇编原理
canmeng
我热爱技术。
展开
-
汇编原理之前言
我上大学时,在编程方面只学习过Visual Basic和C两种高级编程语言,另还有《微型计算机原理与接口技术》这门课中的一点儿汇编语言(当然是8086/8088架构啦)。当时根本没意识到编程水平是要靠实践才能提高的,学习只是为了通过考试。无人指点,浑浑噩噩。原创 2011-07-03 23:23:08 · 1306 阅读 · 0 评论 -
汇编原理1:环境搭建
要分析fasm1.0的源代码,首先去网上下载fasm 1.0版本的源代码。然后需要进行一些准备工作,才能开始分析代码。 要准备的工具:Virtual PC 2007虚拟机软件安装包,Bochs 2.1.1虚拟机软件安装包,Winimage磁盘镜像原创 2011-07-04 23:42:14 · 966 阅读 · 0 评论 -
汇编原理3:分析ah=4ah时的int 21h
在汇编原理2:源代码开始的博客中,我们可以看到fasm源代码的最开始的地方有一个ah=4ah时的int 21h调用。本文章就来分析一下这个调用有什么作用。我们先来看一个例子:;使用masm5.0进行编译;程序功能:没什么功能?;注意:使用masm5.编译a原创 2011-07-06 22:43:09 · 2862 阅读 · 0 评论 -
汇编原理2: 源代码开始
;使用masm5.0进行编译;程序功能:在屏幕上显示一行字符串.;注意:使用masm5.编译asm文件的时候,文件名长度不要超过8个字符,否则会无法打开文件.assume cs:codecode segmentstart:原创 2011-07-05 23:56:59 · 888 阅读 · 0 评论 -
汇编原理5:分析init_memory子程序
这个子程序判断系统中是否有XMS驱动程序和VDISK.sys驱动程序,我的环境中都没有。这个子程序的最重要的作用是为fasm汇编器分配了一块conventional memory。执行完之后如下图所示。原创 2011-07-16 16:17:36 · 937 阅读 · 0 评论 -
汇编原理4:分析init_flatrm子程序
这个子程序我感觉比较复杂,它进入了保护模式,设置了一下ds,es等段选择子,然后返回到了实模式。因为fasm运行的时候,dos要给它分配一块内存来运行,这段内存的段地址是0x167b,返回实模式后,程序把段地址*16即0x167b0放到了[program_base]中。原创 2011-07-16 15:54:46 · 654 阅读 · 0 评论 -
汇编原理6:opcode
自从分析完前面的init_memory子程序后,好长一段时间没有看fasm1.0的源代码。工作忙是一方面的原因,另一方面的原因是晚上回家来后不想看程序,只想看看小说,玩会儿游戏什么的。过了好长一段时间才又振奋起来,鼓励自己继续看fasm1.0的代码,不要半途而废。于是又静下心来,原创 2011-08-14 12:01:51 · 1808 阅读 · 1 评论 -
汇编原理7:一次汇编过程中的内存变化
使用fasm1.0进行汇编一个文件comdemo.asm,文件内容非常简单,只有两句代码:mov ah,92h和int 20h,大小为19个字节。下面是汇编过程中的内存变化情况。汇编命令是:fasm comdemo.asm hello.com。 汇编过程主要调用了7原创 2011-09-10 19:46:34 · 881 阅读 · 0 评论