16진수 (0 1 2 3 4 5 6 7 8 9 A B C D E F)

0x00, 0x01 > 16진수를 표현할 때 0x를 붙여준다.

 

2진수 (0 1)

0b0, 0b1, 0b10 > 2진수를 표현할 때 0b를 붙여준다.

 

0b11011110 > 16진수로 쉽게 바꾸기

 

우선 2진수를 네자리씩 끊어준다

0b11011110 > 0b 1101 1110 

각 자리에 숫자를 16진수로 표현해주기만 하면 된다. 

1101(BIN) = 13(DEC) = D(HEX)

1110(BIN) = 14(DEC) = E(HEX)

 

0b11011110 = 222 = 0xDE

 컴퓨터는 0과 1로 이루어져 있는 비트라는 개념을 사용해 모든 것들 표현합니다.

이러한 컴퓨터는 n개의 비트를 이용해 2^n개의 정수를 표현할 수 있습니다. 정수에는 양의 정수와 음의 정수가 있는데 컴퓨터는 음수 또한 비트로 표현하는데 이때 사용하는 것이 보수라는 개념입니다. 보수는 컴퓨터에서 음의 정수를 표현하기 위해서 고안됐습니다. 


 보수란? - 두 수의 합이 진법의 밑수(n)가 되게 하는 수를 말합니다. 

예를 들어 2진수 1110의 1의 보수는 0001이고,

2진수 0110의 1의 보수는 1001입니다.

컴퓨터 내부에서 사칙연산을 할 때 뺄셈은 덧셈으로 형식을 변환하여 계산합니다. 

바로 보수를 이용해서 a - b를 계산할 때 b의 보수(-b)를 구한 다음 a + (-b)로 계산합니다.

 

 1의 보수 - 각 자릿수의 값이 모두 1인 수에서 주어진 2진수를 뺀다.

2진수 0001의 1의 보수는 1110이다.

2진수 1111의 1의 보수는 0000이다.

 

 2의 보수 - 1의 보수에서 1을 더한 것입니다.

2진수 0001의 1의 보수는 1110이고, 여기서 1을 더하면 1111(2의 보수)이다.

2진수 1111의 1의 보수는 0000이고, 여기서 1을 더하면 0001(2의 보수)이다.


 1의 보수를 이용한 뺄셈 : 빼는 수의 1의 보수를 구한 다음 더합니다. 덧셈한 결과가 최상위 비트에서 자리올림이 생겼다면 최하위 비트에 1을 더하고, 자리올림이 생기지 않았다면 연산 결과에 대해 1의 보수를 구한 후 ' - ' 부호를 붙입니다.

 

밑에 계산식에서 2진수 옆에 괄호 안에 숫자는 10진수이다.

2진수 ) 100(4) - 011(3) > 100 + 100 = 1000 / 최상위 비트에서 자리올림이 생겼기 때문에 최상위 비트는 지우고 최하위 비트에 1을 더한 값이 답이다. 즉, 답은 001(1)

 

2진수 ) 100(4) - 111(7) > 100 + 000 = 100 / 자리올림이 생기지 않았기 때문에 100에 대해서 1의 보수를 구한 후 - 부호를 붙인다. 즉, 답은 011(-3)

 

 2의 보수를 이용한 뺄셈 : 1의 보수와 크게 다르지 않다. 빼는 수의 2의 보수를 구한 다음 더합니다. 덧셈한 결과가 최상위 비트에서 자리올림이 생겼다면 최상위 비트를 제외한 나머지 부분이 결과값이고, 자리올림이 생기지 않았다면 결과값에 2의 보수를 구한 후 ' - ' 부호를 붙입니다.

 

밑에 계산식에서 2진수 옆에 괄호안에 숫자는 10진수이다.

2진수 ) 100(4) - 011(3) > 100 + 101 = 1001 / 최상위 비트에서 자리올림이 생겼기 때문에 최상위 비트는 지우고 나머지 값이 답이다. 즉, 답은 001(1)

 

2진수 ) 100(4) - 111(7) > 100 + 001 = 101 / 자리올림이 생기지 않았기 때문에 101에 대해서 2의 보수를 구한 후 - 부호를 붙인다. 즉, 답은 011(-3)

 

2의 보수는 1의 보수와 달리 음의 정수를 하나 더 표현할 수 있어서 효율적입니다. 그래서 대부분의 컴퓨터에서는 2의 보수 방식을 사용합니다.

본격적으로 공부를 시작하기에 앞서 환경설정부터 진행한다. 

sasm 검색 후 첫 번째 글

첫 번째 글을 클릭해서 sasm을 다운로드하고 실행시켜준다.

 

SASM이란? 

통합개발 환경으로서 GUI와 CLI를 모두 지원하며 공통 매크로 함수를 지원한다.

NSAM, GAS, FASM, MASM 등과 같은 어셈블러를 사용할 수 있다.

 


sasm 프로그램 첫 실행화면

일단 정상 작동하는지 확인하기 위해 바로 새로운 프로젝트를 생성(Create new project)해서 run을 눌러보았다.


시작하자마자 기념적인 첫 에러 발생

보는 바와 같이 에러가 발생한다. 세팅을 확인하라고 한다. 


셋팅 설정화면

필자의 sasm 설정 화면이다.

sasm 상단 탭에 Settings를 누르고 Build를 누른다.

자신의 컴퓨터가 64비트라면 x64를 선택해주고 어셈블러와 링커 경로 설정을 확인해주어야 한다.


기존의 경로

필자의 sasm에서 발생한 에러는 여러 가지 실험해본 결과 경로 설정이 제대로 되어 있지 않아서 발생한 에러였다.

위에 세팅 화면의 경로와 동일하게 Data 디렉터리 안에 있는 각종 폴더 및 파일들을 밖으로 빼내 주었다.

 

수정한 경로


국룰

첫 프로그래밍 언어를 배울때 국룰과도 같이 적용되는 Hello World를 출력하는 코드를 만들었다.

에러 없이 정상적으로 작동된다.


실행파일 만들기

Hello World 해당 코드를 실행파일로 만드는 기능도 지원한다.

파일 탭에서 Save .exe를 눌러주고 원하는 경로에 저장한다.


test.exe = 방금 만든 실행파일

해당 경로 폴더에 가서 방금 만든 실행파일(필자는 test.exe)이 있는지 확인하고

폴더 경로쪽에 cmd. 을 입력해서 콘솔창을 띄워준다.


콘솔에서 실행파일 실행시켜보기

콘솔에서 해당 실행파일을 실행시켜보니 Hello World가 출력되는 것을 확인했다.

 

+ Recent posts