VS2008編譯匯程式設計序的問題

2021-08-14 01:49:09 字數 1173 閱讀 7854

在vs2008 pro裡已經整合了masm,經過相關設定後,編譯出了程式,但是執行後,說少msvcr90.dll

39944

然後自己寫了個c的程式在depend中對比了下兩個的匯入表。

39946

39945

那個testprintf是執行正常的。

雖然兩個都有引入msvcr90.dll

問下,這是為什麼?

說來生成的obj檔案應該是正確的,可能在link的時候出了問題,請教下怎麼設定。

附原始碼,請教怎麼在vs2008編譯能正確執行。

;程式清單:cpuid.asm(讀取cpu標識)

.586

.model flat,stdcall

option casemap:none

includelib msvcrt.lib

printf proto c :dword,:vararg

.data

szvendorid byte 13 dup (0)

szformatstr byte 'vendorid = %s; processor sn = %08x%08x', 0ah

.code

start:

mov eax, 0

cpuid

mov dword ptr szvendorid, ebx

mov dword ptr szvendorid+4, edx

mov dword ptr szvendorid+8, ecx

mov eax, 3

cpuid

invoke printf, offset szformatstr, 

offset szvendorid, ecx, edx

retend start

附:visual studio組合語言環境配置

搞定了,我自己來答吧。後來在系統裡搜msvcr又看到了msvcr90.dll複製到環境變數裡的乙個目錄,執行報錯,用depend查,printf出現了在匯入表那。不知道,是不是在msvcr90.dll要呼叫printf,是不是要做一些相關初始化工作。

正確的是

c:\masm32\lib\*

我的masm 9裝在c:\masm32\

這樣鏈結時,msvcrt.lib就會使用masm9的那個引入庫,會鏈結到msvcr.dll,而不是那個msvcr90.dll。

VS2008編譯問題!

vs2005鏈結問題 lnk2005錯誤 error lnk2005 free 已經在 libcmtd.lib dbgheap.obj 中定義 以前經常遇到這個警告資訊,因為執行並沒有什麼問題,所以也沒深究。但是耿耿於懷那個 0 個錯誤,0 個警告 的成功提示,在網上搜了一下。原來問題出在預設庫的引...

VS2008編譯問題

將之前版本的程式拿來用vs2008重新編譯發現好多編譯問題,比如 1 提示 fatal error c1083 cannot open include file mclmcrrt.h no such file or directory 試試 該vs2008的程式使用的matlab的庫,預設的vs d...

組合語言程式vs 匯程式設計序

組成原理 這是個常常被人拿來挖坑的地方。組合語言程式就是你用組合語言寫的文字型的程式,我們說用一堆助記符來寫的源 匯程式設計序是彙編階段用來把組合語言翻譯成機器語言指令的程式。二者是不同的概念。比如有些時候問,計算機能夠直接執行的是 a.機器語言程式 b.組合語言程式 c.硬體描述語言程式 組合語言...