연습장
1일차 본문
어셈블리어를 기초로 배우는 이유 : C++ 코드 실행을 하며 수많은 에러를 발견하는데에 도움이 됨
1. 환경 설정
SASM
* 코드 실행, 실행파일로도 저장 가능
* C++ / 어셈블리(가장 low함)
* 컴파일러, 어셈블러 == 번역기
* Section.text :코드에 대한 정보
Section.data :데이터에 대한 정보
-컴퓨터 3총사 : CPU, 메모리, 하드디스크(SSD)
메모리와 하드디스크의 큰 차이점은 전기가 나가면 메모리보존이 하드디스크는 되지만 메모리는 안됨
<Hello 출력 코드>
%include "io64.inc"
section .text
global CMAIN
CMAIN:
;write your code here
PRINT_STRING msg
xor rax, rax
ret
section .data
msg db 'Hello', 0x00
2. 데이터 기초
컴퓨터의 데이터 저장
★비트bit : 0과1
★바이트byte : 8개의 비트
워드word : 2바이트
최상위 비트가 부호를 담당한다(+,-)
; 주석문
10진수(0 1 2 3 4 5 6 7 8 9) : 사람친화적, DEC
2진수(0 1) : 컴퓨터친화적
0b0 | 0b1 | 0b10 | 0b11 | 0b100 |
0 | 1 | 2 | 3 | 4 |
16진수(0 1 2 3 4 5 6 7 8 9 A B C D E F) : ★0x 가 들어가면 16진수라고 생각하면 됨, HEX
0x00 |
0 |
2의 보수
3. 레지스터 기초
어셈블리 프로그램 = CPU + 래지스터(중요역할, 임시 저장) + 메모리(RAM)
래지스터와 메모리 사이 데이터를 왔다갔다
8bit = 1byte
16bit = 2byte = 1word
32bit = 4byte = 2word = 1dword(double-word)
64bit = 8byte = 4word = 1qword(guad-word)
mov 명령어 : 오른쪽 데이터가 왼쪽으로 이동
망치모양 아이콘 Ctrl + F9 : 빌드, 실행X 에러가 없는지 체크
F9 : 실행
F5 : Debug모드
F10(한줄한줄 실행 후 상태를 볼 수 있음)
F11