어셈블리 프로그래밍 03

TonyHan·2021년 3월 22일
0
post-thumbnail

Radix Conversion

Conversion to Decimal(10진수로의 변한)

각 자리수에 가중치를 곱하여 더한다.
k 번째 자릿수의 가중치는 r^(k-1)이다.

Decimal to Radix k Number(k진수로의 변환)

  • 정수부분

  • 실수부분

Remarks

  • Binary to Octal(Octal to Binary)
    LSB 부터 3bit 씩 나누어 8진수로 변환(긱 digit를 3bit 이진수로)
  • Octal to Hexadecimal, Hexadecimal to Octal
    먼저 이진수로 변환한 후 16진수 또는 8진수로 변환한다.
  • 기타 다른 변환
    먼저 10진수로 변환 후 이를 원하는 진법의 수로 변환한다.

Unsigned Integers

  • Unsigned Integers
    0을 포함한 양의 정수

    Windows System에서 사용하는 unsigned integer 들
    우측 파란색 단어는 어벰블리 언어에서 사용하는 data type

Signed Integers

  • Signed Integer Representation
    • Signed Magnitude
    • One's Complement(1의 보수)
    • Two's Complement(2의 보수) -> 대부분의 computer system에서 사용
  • Signed Magnitude Numbers
    • 단점
      -0과 +0 두개가 존재한다.
      덧셈이 어렵다.
    • 용도
      Floating point format에 주로 사용된다.

One's Complement Numbers

  • One's Complement Arithmetic

  • One's Complement 덧셈 알고리즘

Two's Complement Numbers(2의 보수)

양수 : unsigned number와 동일
음수 : 어떤 수 X에 대해, -X = NOT(X) + 1(bitwise inversion 후 + 1)

  • MSB가 sign bit 역활을 한다.
  • 단점
    음수인 경우 magnitude는(큰값) 양수로 변환해야 알 수 있다.
  • 장점
    0이 하나이다.
    덧셈이 unsigned number의 덧셈과 같다.
  • 용도
    대부분의 컴퓨터에서 사용되고 있다.
  • 범위
    최대값 : 2^(N-1)-1
    최소값 : -2^(N-1)

Two's Complement Arithmetic


Two's Complement number 들의 덧셈은 이진수 덧셈과 동일
Window 시스템에서도 int, char, 등 signed integer(unsigned 는 제외)는 two's complement number이다.

8진수, 16진수도 2비트로 바꾼다음 Two's Complement를 수행해야 한다.

다른 bit 크기를 갖는 2's complement number로의 변환

  • Generalization

  • Examples of 8 bit 2's complement -> 4 bit 2's complement

  • overflow Detection

  • 2의 보수 연산을 위한 가산/감산 Hardware

Remarks

Real Number Representations

Fixed Point Numbers

  • 장단점

  • Fixed Point Arithmetic

  • Fixed Point Multiplication

  • Fixed Point Number의 범위

  • Remarks

  • Clipping

Floating Point Numbers (부동 소수점 방식)

  • 개념만 설명

  • 참고

  • Floating Point Arithmetic

Character Storage

  • Characters
    의미가 있는 text를 구성하는 최소단위
  • Character Set
    Character Set : 여러 언어에서 사용할 수 있는 문자의 집합
    Coded character set : 집합의 각 문자에 고유 번호를 부여한 character set
    Character Code : coded character set과 동일한 의미

    Character Encoding : Character set의 각 문자(에 부여된 고유 번호)를 컴퓨터에 저장할 수 있도록 부호화하는 방법

ASCII character set

ASCII (American Standard Code for Infromation Interchange)
7 bit number을 각 문자에 부여
128-255

ANSI character set

ASCII Code Table


노란색 부분은 최소한 외우고 있어야 한다.

그리고 표의 가장 왼쪽에 보았을때 조금은 특수한 문자들도 있다.

Scan Code

키보드에서 오는 코드들
ex) Function keys(16 bit 어셈블리에서 int 16, int 21함수 등을 두 번 호출하여 scan code 값을 얻을 수 있다.)

이때 Windows system에서는 virtual key code를 읽어 처리한다.

Null-terminated String

Array of characters followd by a null byte(=0)
MS Windows에서 문자열 마지막은 0이어야 한다.(어셈블리에서도)

Unicode

Unicode는 세계 모든 문자를 컴퓨터에서 일괄되게 다룰 수 있도록 설계된 산업 표준이다.
Unicode 표준은 character set, 인코딩 방식, 각종 문자 처리 알고리즘 등으로 구성된다.
세계 모든 문자에는 각각 범위가 0 ~ 10FFFF 까지의 코드 중 하나를 배정하였다.(이 코드를 code point라고 한다.)
Unicode에서 현대 한글의 모든 글자에 부여된 code point는 U+AC00 ~ U+D8AF 사이의 값이다.

Unicode Encoding

Unicode를 실제 컴퓨터에 저장하기 위한 부호화 방법이다.
표준 인코딩으로 UTF-8, UTF-16,UTF-32등이 있음
UTF-8 : ASCII와 호환되는 현재 가장 많이 사용되는 1~4 bytes variable length code

기타

  • 문자열
    어셈블리 언어에서 문자열은 두 개의 따옴표 또는 작은 따옴표 사이에 정의한다. ("Hello world") 또는 ('Hello world')
    C언어와 달리 EOS가(=0) 자동으로 추가되지 않음. 반드시 문자열 뒤에 0을 추가해야 할 필요가 있음
    ASCII character set만 사용
  • Number String

붙여

profile
예술가

0개의 댓글

관련 채용 정보