❶ 匯編程序如何調試
在DOS的提抄示符下,可鍵入命令:
C>DEBUG [X:]PATH][FILENAME[.EXE]]
其中:
[X:] 指定驅動器,任選項,例如,C:
[PATH] 為路徑,任選項,例如,\MASM
[FILENAME] 為被調試文件的名字,例如,SY
如用戶鍵入文件名,則DOS將指定的文件裝入存儲器中,用戶即可對其進行調試。如果未鍵入文件名,則用戶可以用當前存儲器的內容工作,或者用DEBUG命令N和L把需要的文件裝入存儲器後再進行調試。
在DEBUG程序調入後,將出現提示符『-』就可用DEBUG命令來調試程序。
注意:DEBUG顯示的數均以16進制數表示。
❷ 在用匯編語言編程時,程序調用與堆棧如何使用
匯編許久不用,只能憑印象說下:
程序調用使用
Call
以狀態字PSW入棧為例
PUSH
PSW
POP
PSW
如果不是問語法,或者是匯編的使用技巧,去CSDN論壇
匯編區
提問吧,5分鍾內即有回答。
網路的問答范疇太廣,沒有針對性,呵呵。
❸ 用匯編語言編寫子程序後如何調用
通過C語言函數形式封裝匯編語言程序段,而後就可完全按照C語言函數的形式內調用。這種方法保證了容子程序段與主程序銜接的完全適配,使用簡便。使用方法如下:
用低劃線_後接關鍵字asm指示後面的語句是匯編語句。匯編語句既可以是單句,例如__asm
mov
bx,1;也可以是復合語句,即,用花括弧對包含的多條單句,例如:
__asm
{
mov
al,
3
mov
dx,
0xE008
add
ax,dx
}
在語法規則中,這些語句與C語言的語句完全等價。因此,可以直接進行編譯。
❹ 匯編語言是怎麼調用c語言的程序的
一、 參數傳遞的基本規則(ATPCS(ARM—Thumb Procere Call Standard))
1、 參數傳遞
二、匯編程序、C程序相互調用舉例
1、 C程序調用匯編程序
匯編程序的設計要遵守ATPCS(ARM—Thumb Procere Call Standard),保證程序調用時參數的正確傳遞。在匯編程序中使用EXPORT 偽操作聲明本程序,使得本程序可以被別的程序調用。在C程序使用extern聲明該匯編程序。
下面是一個C程序調用匯編程序的例子。其中匯編程序str實現字元串復制功能,C程序調用str完成字元串復制的工作。
//C程序
#include <stdio.h>
extern void str(char *d, const char *s);
int main( )
{
const char *srcstr=」First string-source」;
char dststr[ ]=」Second string-destination」;
printf(「Before ing:\n」);
printf(「%s\n %s\n」, srcstr,dststr);
str(dststr,srcstr);
printf(「After ing:\n」);
printf(「%s\n %s\n 「,srcstr,dststr);
while(1) ;
}
;匯編程序
AREA S, CODE, READONLY
EXPORT str
Str
LDRB R2, [R1], #1
STRB R2, [R0], #1
CMPR2,#0
BNE Str
MOV PC, LR
END
2、 匯編程序調用C程序
匯編程序的設計要遵守ATPCS,保證程序調用時參數的正確傳遞。在匯編程序中使用IMPORT偽操作聲明將要調用的C程序。下面是一個匯編程序調用C程序的例子。其中在匯編程序中設置好各參數的值。本例中有6個參數,分別使用寄存器R0存放第1個參數,
R1存放第2個參數, R2存放第3個參數, R3存放第4個參數, 第5個、第6個參數利用數據棧傳送。由於利用數據棧傳遞參數,在程序調用結束後要調整數據棧指針。
//C程序g( )返回6個參數的和
int g( int a, int b, int c, int d, int e, int f )
{
printf(「e=%d\n」, e);
printf(「f=%d\n」, f);
return (a+b+c+d+e+f);
}
; 匯編程序調用C程序 g( ) 計算6個整數 i, 2*i, 3*i, 4*i, 5*i, 6*i的和
EXPORT f
AREA f ,CODE, READONLY
IMPORT g
MOV R0, #1
ADD R1, R0, R0
ADD R2, R1, R0
ADD R3, R2, R0
ADD R4, R3, R0
ADD R5, R4, R0
STR R4, [SP, #-4]!
STR R5, [SP, #-4]!
BL g
ADD SP, SP, #4
ADD SP, SP, #4
STOP B STOP
END