목록전체 글 (420)
외로운 Nova의 작업실
안녕하세요, 오늘은 덧셈과 뺄셈 관련하여 어셈블리어를 배워볼까합니다. INC, DEC 형식 : INC reg/mem, DEC reg/mem INC는 피연산자의 값을 1증가시키는 명령어 입니다. 이에 반해, DEC는 피연산자의 값을 1 감소시키는 명령어 입니다. ADD 형식 : ADD dest, source ADD는 source의 값을 dest의 값에 더하여 dest에 저장합니다. SUB 형식 : SUB dest, source SUB은 source의 값을 dest의 값에서 뺀다음 dest에 저장합니다. NEG 형식 : NEG reg/mem NEG는 피연산자를 2의 보수로 계산하여 부호를 바꿉니다. 산술 연산의 결과는 상태 플래그를 변화시킵니다. 이제 산술연산의 결과로 어떻게 상태 플래그가 변하는지 알아봅시..
안녕하세요, 이번시간에는 어셈블리어에서 데이터 전송에 대해서 배워보도록 하겠습니다. MOV MOV destination(첫번째 피연산자), source(두번째 피연산자) MOV 명령어는 두번째 피연산자의 값을 첫번째 피연산자로 값을 복사합니다. mov를 사용할때 주의할점은 메모리의 값을 다른 메모리로 전송을 못한다는 것입니다. 메모리 간의 전송을 할때는 레지스터를 사용하여 교환을 이루어지게 해줘야합니다. MOVZX MOVZX destination(첫번째 피연산자), source(두번째 피연산자) MOVZX 명령어는 두번째 피연산자의 값을 첫번째 피연산자로 값을 복사하면서, 남는 공간을 0으로 채우게됩니다. 예를 들어, eax에 AADDBBCC가 있다고 했을때 MOVZX eax, AABB를 하게되면 eax..
안녕하세요, 오늘은 덧셈과 뺄셈을 어셈블리어로 실습해보는 시간을 가져보도록 하겠습니다. ;this program adds adn subtracts 32-bit integers. include c:\assembly\irvine32.inc includelib c:\assembly\irvine32.lib includelib c:\assembly\kernel32.lib includelib c:\assembly\user32.lib .code main PROC mov eax, 10000h add eax, 40000h sub eax, 20000h call DumpRegs exit main ENDP END main 위 어셈블리 코드는 eax 레지스터에 10000h를 옮기고 40000h를 더하고 20000h를 빼서 결국..