본문 바로가기

Hardware/assembly language

1장(기본 개념)

좋은 질문

X86 프로세서는 공통의 기계어를 이해한다. 어셈블리 언어는 기계어와 일대일 대응관계를 갖는다.

 

레지스터(Register): 연산의 중간 결과를 저장하는 CPU에 있는 이름이 부여된 저장 공간이다.

 

어셈블리 언어는 이식성이 있는가? 소스 프로그램을 컴파일하여 다양한 컴퓨터 시스템에서 실행될 수 있는 언어를 이식성이 있다고 말한다. 어셈블리 언어는 특정 프로세서 계열용으로 만들어졌기 때문에 이식성이 없다.

 

1.2 가상 기계 개념

컴퓨터는 대개 컴퓨터 고유의 기계어로 작성 된 프로그램을 실행할 수 있다.

기계어의 각 명령어는 비교적 적은 수의 전자회로를 사용하여 수행할 수 있을 정도로 단순하다. 이 언어를 L0라고 부른다.

L0은 숫자로만 이루어져 있기 때문에 작성하는데 많은 어려움이 걸린다. 이보다 사용하기 쉬운 언어인 L1이 만들어 진다면 프로그램은 L1으로 작성 될 수 있을 것 이다.

l 해독: L1 프로그램이 실행됨에 따라서 L1의 각 명령어는 L0언어로 작성된 프로그램에 의해서 해독되어 실행 될 수 있다.

l 변환: L1 프로그램 전체가 이목적으로 특별히 설계된 L0 프로그램에 의해서 L0 프로그램으로 변환 된다.

가상기계

가상 기계 레벨

Level 1: 컴퓨터의 디지털 논리 회로

Level 2: 이동, 덧셈, 곱셈 과 같은 기본적인 연산을 수행하는 명령어 집합 이러한 집합을 기계어

Level 3: 어셈블리 언어

Level 4: C,C++,java 등등

 

 

1.3 데이터 표현

 

2진수 정수

 

 

 

왼쪽에 있는 비트를 최상위 비트(MSB)라고 하며 오른쪽에 있는 비트를 최하위 비트(LSB)라고 한다.

2진수 정수는 부호가 있거나 부호가 없을 수 있다 부호 없는 정수는 기본적으로 양수이다. 0은 양수로 간주.

 

 

부호 없는 2진수 정수

 

 

부호 없는 2진수는 의 각 비트는 거듭제곱 수가 최하위 비트부터 시작해서 하나씩 증가하는 2의 거듭제곱을 나타낸다

 

정수 저장공간 크기

 

부호 있는 정수

X86프로세서에서 최상위 비트는 부호를 표시하며 0은 양수 1은 음수이다.

 

2의 보수 표기

음의 정수는 2의 보수 표현법을 사용한다.

2의 보수 표현법은 덧셈과 뺄셈을 모두 처리하기 위해서 개별적인 디지털 회로가 필요하지 않기 때문에 설계자에게 유용하다

예를 들어서 수식 A-B = A+(-B)로 표현되어서 계산한다.

 

2진수의 2의 보수는 비트를 반전시키고 1을 더하여 구한다.

최대값과 최소값

n비트의 부호있는 정수는 n-1 비트만을 사용하여 수의 크기를 나타낸다

아래 표에 최대값과 최소값을 보여준다.

7판으로 넘어오면서 범위를 2의 거듭제곱으로 바뀌고 표에 몇 비트인지 바뀜. 친절하네;;

 

부울 연산

부울 대수는 참과 거짓 값에 대한 연산의 집합을 정의한다

NOT: 반대 참-> 거짓, 거짓 -> 참

AND: 두 피연산자가 모두 참일 때 만 참

OR: 두 피연산자가 하나만 참 이어도 참

'Hardware > assembly language' 카테고리의 다른 글

5장(프로시저)  (0) 2019.12.22
4장(데이터 전송, 주소지정과 산술연산)  (0) 2019.12.22
3장(어셈블리 언어의 기초)  (0) 2019.12.22
2장(x86 프로세서 구조)  (0) 2019.12.22