배열 배열은 동일한 타입의 데이터 묶을을 의미한다. 배열을 구성하는 각 값을 배열 요소(element)라고 하고 배열의 위치를 가리키는 숫자를 인덱스(index)라고 한다. 어느 프로그래밍이나 존재한다. 어셈블리어에는 배열을 선언하기 쉽다. 변수를 선언할 때, 나열하면 그것이 배열이된다. 또는 times 키워드를 사용해 반복해서 만들어 줄 수도 있다. a는 1 byte씩 5개를 생성해서 총 5 byte의 메모리를 사용한다. b는 word 이므로 2 byte씩 5개, 총 10 byte를 사용하여 메모리에 할당하게된다. 실제로 이 값들이 제대로 동작하는지 프로그램을 실행해 확인해보자. a를 보게되면 1, 2, 3, 4, 5까지 총 5 byte가 잘 들어간 모습을 볼 수 있다. 그리고 b는 01 씩 잘 들어간..
전체 글
성장 과정 일기, 누군가에게 정보를 제공하기 위해서가 아닌 스스로 배운 내용을 정리하기 위해 작성하는 블로그 입니다. 잘못된 정보가 있으면 댓글로 적어주세요.분기문 특정 조건에 따라서 코드 흐름을 제어하는 것, 그것이 분기문이다. ex) 스킬 사용 버튼을 눌렀는가? yes -> 스킬 사용 ex) 제한 시간 내에 던전 입장 수락 버튼을 눌렀는가? yes -> 입장, no -> 던전 취소 분기문과 밑에 나올 반복문만 사용해도 어느정도 프로그램을 만들 수 있다. 조건이란 곧 흐름인 것이다. 이걸 명심하자 어셈블리어에서 비교를 하기 위해서는 CMP 명령어를 사용한다.(CMP dst, src (dst가 기준)) SASM - 1 포스팅에서 말했듯이 CPU에는 A,B,C,D 레지스터가 있다고 말했다. 레지스터가 그것만 있는 것은 아니다. 바로 Flag Register 가 있다. (물론 이것 말고도 더 있다.) 비교한 결과물은 Flag Register에 저장한다. 저장한 ..
사칙연산 사칙연산에 앞서 어셈블리어는 아닌 운영체제에서 제공하는 입출력 api에 대해 간단히 알고 넘어가자. GET_DEC = 숫자를 입력 받겠다. PRINT_DEC = 숫자를 출력하겠다. NEWLINE = 개행 사용 법은 밑에 사진과 같다. GET_DEC 1, al 은 1 byte 만큼 input을 받아서 al에 저장하겠다는 의미이며, GET_DEC 1, num은 1 byte 만큼 input에서 받아서 num 변수에 저장하겠다는 의미이다. 여기서 data를 사용하지 않고 bss를 사용한 것은 데이터를 입력 받을 것이기 때문에 초기화를 하지 않아도 되기 때문이다. 더하기 더하기는 add 라는 명령어로 사용된다. add a, b 형식으로 이루어져있다. 여기서 주의해야할 점은 a는 메모리 or 레지스터 만 ..
지난 포스팅에는 어셈블리어가 무엇이고, 레지스터가 어떤 방식으로 동작하는지 간단하게 가지고 놀아봤다. 이번 포스팅에서는 메모리와 레지스터를 핑퐁하는 전반적인 얘기를 다뤄볼까 한다. Memory(메모리) 우리가 어떤 실행 파일을 만들고 난 후 실행하게 되면 그 파일이 메모리에 올라가게된다. 메모리에 올라갈 때는 여러가지 정보들이 함께 올라가는데 우리가 지정한 값들은 data 영역에 속하게 된다. 메모리에 무언가를 가장 쉽게 올리는 방법은 바로 data와 bss를 사용하는 것이다. 바로 어셈블리어를 통해 알아보자. 변수라는 것은 그냥 데이터를 저장하는데 쓰이는 바구니라고 생각하면 된다. data 변수를 선언하고 사용하기 위해서는 먼저 바구니를 사용하겠다고 알려주어야한다. (이름과 크기를 지정) data 변수..
어셈블리어란? 어셈블리어란 C나 JAVA 와 같은 사용자와 가까운 고급언어보다 기꼐어와 더 가까운 언어이다. 즉, Low Langague라는 말이다. 기계어와 명령어가 1:1로 대응하고, 기계어는 CPU 종류에 따라 달라지기 때문에 호환성이 없는 언어이다. 주로 임베디드나 커널 프로그래밍 등에 쓰인다. 특징은 다음과 같다. 동일한 종류의 프로레서만 실행된다. 프로세서에 대한 사전지식이 필요한다. 메모리나 입출력장치, 레지스터 등의 구성요소를 직접 다룰 수 있다. 컴퓨터에서 실행하는 과정 등을 이해하기 쉽다. 마지막 특징이 매우 중요하다. 나는 C++를 배우기 이전에 앞서 컴퓨터에서 언어가 어떻게 실행되는 과정을 미리 알아보고 C++의 동작을 연결해보기 위해 먼저 어셈블리어에 대해 다룰 예정이다. SASM..