8 bits = 1 byte최상위 비트는 음수를 표현하기 위한 부호 비트사진 처럼 1000 0000 = -128 (바이트 단위일 경우)문제1) 0b11000000 을 십진수로 하면? => -128 + 64 = -64문제2) 0b01000000(64)를 -64로 변경하려
레지스터의 a b c d 는 각각 다른공간여기서 a를 기준으로rax = 64bitseax = 32bitsax = 16bitsah, al = 8bts위 코드를 실행하면 rax 값은 0x1234가 된다.rax가 0x1234인 상황에서 위 코드를 실행하면아래 8bits가 0
문법 : 변수이름초기값크기 : db(1byte), dw(2bytes), dd(4bytes), dq(8bytes)위 데이터 선언 후 빌드시 메모리 정보그림에서 보듯 변수 a,b,c,d는 연속해서 메모리 공간에 저장되어 있다.문법 : 변수이름개수크기 : resb(1byte
위 코드 처럼 a에 값 하나가 아닌 연속된 값을 지정 할 수 있다.위 코드를 메모리상에서 확인해 보면 변수 msg의 값은 {0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64,0x0} 임을 확인 할 수 있다.아스키코드 매칭
문법: add a, b의미: a = a + ba = Register or Memoryb = Register or Memory or Constant (a, b 모두 메모리는 안됨)빼기 연산의 경우 위 더하기 연산과 완전히 같은 형태이다.add 만 sub로 바꿔주면 완전히
오른쪽 혹은 왼쪽으로 비트를 옮기는것왼쪽 : x2 효과오른쪽 : /2 효과결과12345678결과34567800결과345678비교문법CMP dst, src (dst가 기준)비교를 한 결과물은 Flag Register에 저장된다.기본 점프문법JMP labellabel 로
어셈블리 언어에서 반복문의 구현은 두 가지 방법이 있다.첫번째는 cmp, jmp를 이용하여 구현두번째 방법은 loop문을 이용배열 선언 및 초기화배열 순회 출력두개의 입력값 중 큰값을 출력하는 함수
레지스터는 다양한 용도로 사용된다.기존의 rax, rbx 등과 같은 범용 레지스터가 있고,스택을 위한 Pointer Register 가 존재한다.ip(Instruction Pointer) \- 다음 수행 명령어 위치sp(StackPointer)\- 현재 스택 TOP 위