2013-03-11 7 views
1

세 가지 매개 변수를 사용할 수있는 x86 어셈블리 언어로 함수를 작성하려고합니다. 여러 매개 변수를 사용하여 MASM 어셈블리 언어로 함수를 정의 할 수 있습니까? 나는이 작업을 수행 할 수있는 유효한 기능을 쓸 수있는 경우MASM 어셈블리 언어로 매개 변수가있는 함수를 정의하십시오.

//this is pseudocode: I'm trying to convert this to a valid macro in MASM 
//if var1 is equal to var2, jump to the label jumpToHere 
function jumpIfEqual(var1, var2, jumpToHere){ 
    cmp var1, var2; 
    je jumpToHere; 
} 

, 다음 jumpIfEqual(5, 5, jumpToHere)

cmp 5, 5; 
je jumpToHere; 
+0

매개 변수, 응? 고급 언어와 인터페이스하고 있습니까? HLL에서 같은 일을하는 것이 충분하지 않습니까? –

+0

@SevaAlekseyev, 아니, 난 단지 내 코드를 약간 덜 장황하게 (이해하기 쉽도록) 만들려고 노력하고있다. 'jumpIfEqual (var1, var2, jumpToHere)'는'cmp 5, 5;보다 약간 읽기 쉽습니다; je jumpToHere;'. –

+0

매크로를 수행하십시오. 기능이 필요하지 않습니다. MASM에서 M 매크로의 약자 : –

답변

2

Yes, you can에 해당하는 것입니다. 예를 들어

:

jumpIfEqual PROC var1:DWORD, var2:DWORD, jmpAddress:DWORD 
    mov eax,var1 
    cmp eax,var2 
    jne skip 
    pop eax 
    push jmpAddress 
    skip: 
    ret 
jumpIfEqual ENDP 

.... 

push OFFSET jumpToHere 
mov eax, 5 
push eax 
push eax 
call jumpIfEqual 
+0

여기서'.... '는 무엇을 나타 냅니까? –

+0

이것은 프로그램이 프로 시저와 호출하는 곳 사이에 포함될 수있는 추가 코드를 나타냅니다. – Michael

+1

내가 [ "MASM 어셈블리 언어 기능"에 대한 Google 검색을 (한 https://www.google.com/#q=assembly+language+function+masm&hl=en&psj=1&ei=8ctQUZeHBsTx0gGMxICQBg&start=0&sa=N&bav=on.2 , 또는 .r_cp.r_qf. & bvm = bv.44158598, d.dmQ & fp = dc8abc04c054405e & biw = 1366 & bih = 639), 대부분의 검색 결과는 기능 정의에 관한 것이 아님을 알게되었습니다. 나는 다른 많은 수색을 또한하고, 아직도 어떤 관련 정보도 찾아 내지 않았다. masm에서 함수를 정의하는 방법을 실제로 설명하는 다른 문서가 있습니까? –

관련 문제