1. 如何將.asm 文件編譯成.bin文件
bin是二進制文件,asm是匯編源程序,你可以用反匯編軟體完成這個過程。當然效果一般不是很好,需要你耐心整理後才能有可讀性。
2. 如何編譯VC工程中的asm文件
沒有什麼特別。例如:
#include<stdio.h>
#include<math.h>
int power2( int num, int power );
int main( )
{
int a=3,b=5;
printf( "3 * 2^5 = %d\n", power2( a, b) );
}
int power2( int num, int power )
{ __asm
{
mov eax, num ; Get first argument
mov ecx, power ; Get second argument
shl eax, cl ; EAX = EAX * ( 2 ^ CL )
}
// Return with result in EAX
}
====
就用普通的: CL 程序名 就編譯和鏈接了。
編譯成 .obj 不鏈接 用選項 -c
3. keil 4 中怎麼編譯asm文件
keil中編譯ASM文件跟C文件是一樣的,先建一個工程,將ASM文件添加進工程,現在就可以編譯了,只要沒有錯誤,OK,編譯連接後就可以生成HEX文件供下載了。
4. gnu c/c++ 能編譯asm嗎
gas asm 都是匯編,應該可以吧。之前我編譯過,是可以的,g++是可以的,和gcc一樣,其實它編譯的時候是直接調用asm或者gas匯編器。
5. 如何在Vc++下面編寫和編譯.ASM文件
你可以試試把asm文件加入工程,打開後選擇編譯,不過vc在c++
源程序
里邊可以使用嵌入匯編。
static
int
a=5;
asm{
Mov
EAX,a
}
6. 怎麼運行匯編asm
首先需要編譯程序masm.exe和連接程序link.exe,把他們放到C盤masm文件夾。
點擊開始,運行,輸入cmd。進入c\masm。
輸入cd c:\masm即可。
然後masm 文件名.asm
沒錯的話,再link 文件名.
沒錯的話就會生成.exe文件。
直接輸入文件名.exe即可。
7. 如何編譯ASM文件
1. 在DOS命令中轉到要編譯文件所在的目錄.
2.輸入MASM.EXE空格+文件名.三下回車,就生成了OBJ文件,
3.link.exe空格+所生成的OBJ文件,再按三下回車,就生成了exe文件.
8. 請問在keil中怎麼編譯asm文件呢
沒有問題啊!
能通過啊。
不就是在地址為30H開頭連續的16個地址賦值1到16么.
編譯執行都通過。
不知道你具體問題是什麼?
是不是出現警告:WARNINGL5:CODESPACEMEMORYOVERLAP什麼的?
吧STARTUP.A51文件移除就可以了。
9. asm編譯的問題
是這樣的:
ASM匯編連接後是.EXE程序,在.EXE程序的前部都有一個「重定位表」,裡面保存了你的程序中所有類似你說的mov ax,code這樣的指令中code部分(注意不是變數,是立即數)的偏移地址。而指令中code部分的值則匯編成「段的相對段值」,從第1個段算起。
舉例來說,假設堆棧段在前面(長度=1000h位元組),數據段居中(長度=2000h位元組),代碼段最後,那麼,堆棧段的「相對段值」=0,數據段的「相對段值」=100h(1000h/16),代碼段的「相對段值」=300h((1000h+2000h)/16)。也就是ASM程序將mov ax,code這條指令匯編成mov ax,300h(注意是立即定址方式)
然後,OS執行該程序時,假設分配的內存地址是12340h(段地址=1234h),然後OS將程序調入1234h段中,然後讀入重定位表,根據重定位表中的地址,就可以找到每一個類似mov ax,code指令中code(剛才說了,是立即數)的存放地址(在實際的code段中,OS肯定知道該段地址),然後將1234h「加入」該單元,於是該立即數就變成了1534h(1234h+300h),這正是從12340h開始,給堆棧段留1000h位元組,然後再給數據段留2000h位元組後的「代碼段」的段地址(12340h+1000h+2000h=15340h,段地址=1534h)
現在,mov ax,code指令變成了mov ax,1534h,正確地指向了「代碼段」。