*如今王爽老师的《汇编语言》已经看到4.5了,想把接下来看书过程当中遇到的所学所想记下来。eclipse
正在安装masm,感受这个工具的安装界面就颇有年代感(忘记截图了),并且安装真的很慢。工具
这本书太老了,我翻看了一下是2003年出的,致使书中说的masm 5.0都变成了masm 11……spa
安装完毕后发现根本找不到一个叫masm.exe的程序,不知道masm32这个文件夹中哪个才是编译器…….net
查了不少资料发现一个叫qeditor的程序,应该是这个版本11把编译器作成了eclipse那种图形界面。3d
结果在link的时候就出现了问题:code
我怀疑是这样的:blog
由于个人系统是64位的,按理来讲应该在Dosbox中编译才能成功,但这个图形界面的编译器又不能在Dos方式下打开,致使只能在本机64位的环境下编译,就没法成功(?)ip
又找资料找啊找,找到了这篇文章:DOSBox0.74以及汇编编译器的安装使用(虚拟)64位资源
实际上是使用了文章中给的资源(主要是masm和link),以后在cmd中就能够实现4.4和4.5中写道的编译链接了。get
须要注意的是由于咱们用的是8086的汇编语言,编译造成的exe也是16位的,并不能在64位系统上直接执行:
试了一下在Dos中运行,没有反应……固然没有反应,由于asm文件中的内容是这样的:
1 assume cs:codesg 2 3 codesg segment 4 5 mov ax,123h 6 mov bx,456h 7 add ax,bx 8 add ax,ax 9 10 mov ax,4c00h 11 int 21h 12 13 codesg ends 14 15 end
只是作了一些寄存器的处理,并无什么要显示出来的(真可恶我看了4.7才反应过来这一点,以前先入为主地觉得在Dos中也没法运行……)
看到说“存有机器码的目标文件”想起来把obj文件放到010editor看看是什么状况:
obj文件内容要比本来的asm文件少,标注出的部分是汇编指令的机器码。再对比一下exe:
中间全是零,代码段在最后。