Hardware (5) 썸네일형 리스트형 5장(프로시저) 6판에서는 5장 처음에 라이브러리가 나오지만 7판에서는 바로 스택이 나온다. 스택 연산 스택은 LIFO 구조라고도 부른다. 스택은 스택 포인터 레지스터라고 하는 ESP 레지스터를 사용하여 CPU가 직접 관리하는 메모리 배열이다. ESP 레지스터는 스택에 있는 어떤 위치에 대한 32비트 오프셋을 저장한다. ESP는 항상 스택의 맨 위에 추가된, 즉 PUSH 된 마지막 정수를 가리킨다. Push 연산 32비트 Push 연산은 스택 포인터를 4씩 감소시키고 값을 스택 포인터가 가리키는 스택 위치로 복사한다. 16비트면 2씩 감소하겠네 POP 연산 POP 연산은 스택에서 값을 제거한다. 값이 스택에서 팝된 후에 스택 포인터는 스택의 그 다음 높은 주소를 가리키도록 증가.. 4장(데이터 전송, 주소지정과 산술연산) 피연산자 유형 직접 오프셋 피연산자 .data arrayB BYTE 10h,20h,30h,40h,50h .code mov al, arrayB ;10h mov al.[arrayB+1] ;20h arrayB+1 과 같은 수식은 상수를 변수의 오프셋에 더하여 유효 주소 라고 하는 것을 계산해낸다. 유효 주소를 대괄호로 둘러쌓은 것은 그 주소의 메모리 내용을 얻기 위하여 주소 수식을 역참조 함을 나타낸다. MASM 에서는 대괄호가 필수 사항은 아니다. mov al, arrayB+1 = mov al,[arrayB+1] .data arrayW WORD 100h, 200h, 300h .code Mov ax, arrayW ;100h Mov ax, [arrayW+.. 3장(어셈블리 언어의 기초) 정수 상수(integer constant) 정수 상수는 선택사항인 부호, 한 자리 이상의 숫자와 선택사항인 숫자의 밑을 나타내는 [진수(radix)라고 부르는] 접미 문자로 구성된다. [ { + | - } ] digits [radix] 진수가 없으면 정수 상수는 10진수로 간주한다. 문자로 시작되는 16진수 상수는 어셈블러가 식별자로 해석하지 않도록 맨 앞에 0을 넣어야 한다. 정수 수식 정수 수식은 정수 값과 산술 연산자를 포함하는 수학식이다. 책에는 우선순위 해서 나열 되어있지만 다 필요 없고 마지막에 나오는 이 말만 명심하자. 연산의 순서를 명확히 하기 위해서 수식에 괄호를 사용하라. 그러면 우선순위 규칙을 기억할 필요가 없다. 실수 상수 실수 상수는 10진 실수 또는 .. 2장(x86 프로세서 구조) 기본 마이크로컴퓨터 설계 CU(Control unit): 기계 명령어를 실행 하는데 수반되는 단계들의 순서를 조정한다 ALU(Arithmetic logic unit):덧셈, 뺄셈 AND OR NOT 와 같은 논리 연산을 수행한다 데이터에 대한 모든 처리는 CPU 내에서 이루어지며, 메모리에 있는 프로그램은 CPU로 복사되어야 실행할 수 있다. 데이터 버스: 명령어와 데이터를 전송한다. 입출력 버스: 입출력 장치 간에 데이터를 전송한다. 제어 버스: 시스템 버스에 부착된 모든 장치의 동작을 동기화하기 위하여 2진 신호를 사용한다. 주소 버스: 현재 실행 중인 명령어가 CPU와 메모리 간에 데이터를 전송 할 때 명령어와 데이터의 주소를 가지고 있다 명령어 실행 사이클 기계.. 1장(기본 개념) 좋은 질문 X86 프로세서는 공통의 기계어를 이해한다. 어셈블리 언어는 기계어와 일대일 대응관계를 갖는다. 레지스터(Register): 연산의 중간 결과를 저장하는 CPU에 있는 이름이 부여된 저장 공간이다. 어셈블리 언어는 이식성이 있는가? 소스 프로그램을 컴파일하여 다양한 컴퓨터 시스템에서 실행될 수 있는 언어를 이식성이 있다고 말한다. 어셈블리 언어는 특정 프로세서 계열용으로 만들어졌기 때문에 이식성이 없다. 1.2 가상 기계 개념 컴퓨터는 대개 컴퓨터 고유의 기계어로 작성 된 프로그램을 실행할 수 있다. 기계어의 각 명령어는 비교적 적은 수의 전자회로를 사용하여 수행할 수 있을 정도로 단순하다. 이 언어를 L0라고 부른다. L0은 숫자로만 이루어져 있기 때문에 작성하는데 많은 어.. 이전 1 다음