어셈블리어 과제 (Conditional Jump)
☞ C언어 if , else 문을 어셈블리어 jmp로 코딩
Visual studio 2010 Disassembly |
ASM 코딩 |
#include <stdio.h>
int main()
00411350 push ebp if(a < 0 ) {
00411380 mov eax,dword ptr [a] } ; a 와 0 이 같다면 ZF = 1 될것이고 0041138F jne main+43h (411393h) ; 같지 않으면 ( ZF = 0) 411393 로 점프 00411391 jmp main+4Ch (41139Ch) ; 41139C 로 점프 }
++a; } a = a+100; return 0; }
|
ExitProcess PROTO NEAR32 stdcall, dxExitCode:DWORD INCLUDE io.h .STACK 4096
result1 BYTE "Result : (balance + value) < 0", cr,Lf,cr,Lf, 0
.CODE
output prompt1 add eax, ebx ;balance + value
elseifZero: jnz elsePos ; ZF = 1이 아니면 elsePos 로 점프
output result2 ; (balance + value) = 0 이라면 수행
jmp endBalanceCheck ; endBalanceCheck 로 점프
endBalanceCheck: INVOKE ExitProcess, 0
PUBLIC _start
|
____________________________________________________________________________________________