목록전체 글 (420)
외로운 Nova의 작업실
안녕하세요. 이번시간에는 어셈블리어의 시프트 연산과 회전 명령어에대해 알아보겠습니다. - 시프트와 회전 명령어 SHL 왼쪽 시프트 SHR 오른쪽 시프트 SAL 왼쪽 산술 시프트 SAR 오른쪽 산술 시프트 ROL 왼쪽 회전 ORO 오른쪽 회전 RCL 왼쪽 캐리포함 회전 RCR 오른쪽 캐리포함 회전 SHLD 2배 정밀도 왼쪽 시프트 SHRD 2배 정밀도 오른쪽 시프트 - 논리 시프트와 산술 시프트 시프트 연산에는 총 2가지가 있습니다. 논리 시프트 연산과 산술 시프트 연산이죠. 시프트 연산을 할때는 항상 공백비트가 생깁니다. 이 공백비트를 0으로 채우는게 논리 시프트 연산이고, 이전의 숫자의 부호를 유지시키면서 채우는게 산술 시프트 연산이죠. 예를들어, 11111110b 를 오른쪽 시프트를 하게되면 0111..
안녕하세요. 이번시간에는 조건부 제어흐름을 조금이나마 쉽게 할 수 있는 디렉티브를 알아볼까합니다. 간단하게 말하면 고급언어에서 사용하는 if, while 문을 어셈블러 디렉티브로 작성하면 어셈블러가 그것을 해것하여 어셈블리어로 변경해줍니다. - .IF 디렉티브 고급언어에서 if 문과 같은 .IF 디렉티브에 대해서 알아보겠습니다. eax가1이면 ebx = 321, eax가 2면 ebx = 456, eax 가 3이면 ebx = 789를 넣는 어셈블리어 코드를 .IF 디렉티브를 이용해 짜보도록 하겠습니다. ;-----------------INCLUDE------------------------- ; include c:\assembly\irvine32.inc includelib c:\assembly\irvine..
안녕하세요. 이번 시간에는 문자열 암호화 예제 프로그램으로 XOR 문자열 암호화 프로그램을 어셈블리어로 작성해보도록 하겠습니다. 먼저 스터브 프로그램 작성을 해보도록 하겠습니다. ;this program is encryption or decryption ;-----------------INCLUDE------------------------- ; include c:\assembly\irvine32.inc includelib c:\assembly\irvine32.lib includelib c:\assembly\kernel32.lib includelib c:\assembly\user32.lib ;----------------------------------------------- .data Key = 231..