최대값 임시 수정해야될 코드
#include <stdio.h>
#include <Windows.h>
#include <time.h>
#include <stdlib.h>
#define L 10
typedef struct _arry
{
DWORD Mat[10]; // DWORD == INT
DWORD MinValue;
DWORD MaxValue;
}arry, *ptrArry;
ptrArry createNode();
void __init__(arry** param);
void __dataPrintf__(arry** param);
void __maxValue__(arry** param);
int main(void)
{
ptrArry mNode = NULL;
__asm CALL dword ptr[createNode];
__asm MOV mNode, eax; // mNode = eax
__asm LEA eax, dword ptr[mNode];
__asm PUSH eax; // &mNode;
__asm CALL dword ptr[__init__];
__asm POP ebx;
// << srand((unsigned)time(NULL)); >>
__asm PUSH 0; // ( 0)
__asm CALL dword ptr[time]; // time(0)
__asm POP ebx;
__asm PUSH eax;
__asm CALL dword ptr[srand];
__asm POP ebx;
for (int i = 0; i < L; i++)
{
mNode->Mat[i] = rand() % 10;
}
/*
__asm MOV ecx, 10;
__asm L:
__asm Loop L;
*/
// << __dataPrintf__ (&mNode) >>
__asm LEA edi, mNode;
__asm PUSH edi;
__asm CALL dword ptr[__dataPrintf__];
__asm POP ebx;
// << __maxValue__ (&mNode) >>
__asm LEA edi, mNode;
__asm PUSH edi;
__asm CALL dword ptr[__maxValue__];
__asm POP ebx;
//
return 0;
} // end of main function
ptrArry createNode()
{
ptrArry node = (ptrArry)malloc(sizeof(arry));
return node;
} // end of creatNode function
void __init__(arry** param)
{
if ((*param) == NULL) { exit(1); }
else
{ // (* param) != NULL
__asm MOV eax, 0;
__asm MOV edi, param; //
__asm MOV edi, [edi]; //
__asm MOV ecx, 12;
__asm REP stosd;
}
for (int i = 0; i < L; i++)
{
printf("%d ", (** param).Mat[i]);
}
printf("\n");
} // end of __init__ function
void __dataPrintf__(arry** param)
{
for (int i = 0; i < L; i++)
{
printf("%d ", (** param).Mat[i]);
}
printf("\n");
} // end of __dataPrintf__ function
void __maxValue__(arry** param)
{
int v1 = 0;
__asm{
MOV edi, param;
MOV edi, [edi];
MOV eax, [edi];
MOV ecx, 10;
L1:
CMP eax, [edi];
JL JumpLess;
JGE JumpGreatEqual;
JumpLess:
MOV eax, [edi];
JMP JumpEnd;
JumpGreatEqual:
JMP JumpEnd;
JumpEnd:
ADD edi, 4h;
LOOP L1;
MOV [edi], ebx;
//MOV v1, eax
}
printf("max => %d\n", v1);
} // end of __maxValue__ function
'어셈블리' 카테고리의 다른 글
별찍기 어셈블 코드 (0) | 2017.10.30 |
---|---|
소수 판별 코드 인라인 어셈블리 (0) | 2017.10.26 |
인라인 어셈블리 3개 값 받고 대소 비교 (0) | 2017.10.23 |
이중 포인터 어셈블리 접근 방식 (0) | 2017.10.22 |
인라이 어셈블리 (0) | 2017.10.15 |