当前位置: 代码迷 >> 汇编语言 >> 关于intel汇编语言的有关问题
  详细解决方案

关于intel汇编语言的有关问题

热度:1441   发布时间:2013-02-26 00:00:00.0
关于intel汇编语言的问题
我买intel汇编语言程序设计(第五版)这本书都是网友推荐的~~然而我买了下来~~第一次感觉编译程序好麻烦~~~一开始我用masm8.0编译器编译程序编译了好几天都不行~~为了解决这个问题我发布过好多次帖子~~各大网站我都发布个~~都不知道百度过多少次啦·~最终还是不行·~~最终我放弃使用masm8.0~~~我英语很差·~只好去这本书作者的网站·~把那一条条的英语逐条逐条用金山词典来翻译~~~~整整一个星期多我终于学会用VS2010搭建masm编译器并成功编译啦~~~但现在看到后面~有一个实地址模式程序设计~~虽是可选部分~~~但我必须也要搞清楚他~~但现在问题来了~~我用VS2010无法编译成功~~~用“TextPad”搭配masm编译也不行~也出错~~~他们可以编译32位程序~~错误信息:
1 error A2006:undefined symbol :DGROUP
2 error A2074:cannot access label through segment registers
3 .....................................................(同上)
4 .....................................................(同上)
5 .....................................................(同上)
源码:include irvine16.inc
.data
val1 dword 10000h
val2 dword 40000h
val3 dword 20000h
finalval dword ?
.code
main proc
mov ax,@data
mov ds,ax
mov eax,val1
add eax,val2
sub eax,val3
mov finalval,eax
call dumpregs
exit
main endp
end main
由于本人比较笨~~英语看不懂~~~当我大致猜想到应该找不到连接库(irvine16.inc)
因为用irvine32.inc(编写32位程序)是可以编译成功的~~~一但编写这16位程序就错误啦。。。若叫我不要编写这16位程序,那你就不要回答。。。。虽然作者没要求我们必须学习这16位程序,但我认为学不学是自己的事情,我必须搞懂这编写16位程序的东东,请合作,帮帮手。一开始真不觉得这本书好还是王爽的好,但现在越往后看越觉得这本书比王爽那本书详细多啦~感觉知识面比较全~~总体来说这本书都很好的。。。帮一下我吧。。谢谢。。。
汇编 编译器

------解决方案--------------------------------------------------------
不是找不到 irvine16.inc 文件,找不到这个文件的话,会有提示 Can not found irvine16.inc 的。
你用 vs2010 ,缺省的应该是 Win32 类程序吧,这个 dos16 的,编译连接参数就不一样了。我是没用过 vs2010 ,所以具体设置或做法不了解,只从 masm/ml 的角度来说明下:
1. 编译部分,对 Win32 类程序,应该是 ml /c /coff asmfile ;对 dos16 的则不能有 /coff 选项:ml /c asmfile 。否则,就会出现你所说的那些错误提示信息。
2. 链接部分,link.exe 只能创建 win32 类的程序文件,不能生成 dos16 类的。要建立 dos16 类的程序,必须用 link16.exe 或类似名字的。而且,对 win32 类的程序,选项可能比较多,最起码有 /subsystem:windows
------解决方案--------------------------------------------------------
console 之类的;对 dos16 类的,链接程序就是另外套选项了(通常简单的程序可以没有任何选项),但肯定是不能有 /subsystem: 这样的 Win32 类的选项的。
------解决方案--------------------------------------------------------
出行这个链接错误,应该是没有指定需要 irvine16.lib 文件吧,首先要保证你的机子上有这个文件,最好也是在 lib 文件夹下吧,然后你的源程序里也要加上 includelib irvine16.lib 这一语句,否则手工在 link16 时添加的话,多次的测试上比较麻烦。
  相关解决方案