티스토리 뷰
728x90
어셈블리어
기계어의 비트 형식을 mnemonic code로 나타낸 것
Mnemonic code
기계어의 비트 형식이 나타내는 의미를 symbol로 표현한 것으로 프로그램을 이해하거나 작성하기가 쉽다.
어셈블리 프로그래밍을 하는 이유
- 컴퓨터 하드웨어의 구성 요소들을 직접 액세스하려고 할 때
- 컴파일러를 설계하거나 시스템 프로그램을 작성하려고 할 때
- 빠른 수행이 필요한 프로그램을 작성하려고 할 때
- 기억 장소를 적게 차지하거나 입출력 장치를 보다 효율적으로 사용하려 할 때
Assembler
어셈블리어를 기계어로 변환하는 프로그램
<Source program = 어셈블리어> → <Object program = 기계어>
어셈블리어와 기계어는 1:1 mapping 관계로 disassemble이 가능하며 이를 통해 코드가 동작하는 로직을 이해할 수 있다.
Assebly 데이터 타입
- Byte = 1 byte = 8 bit
- Word = 2 byte = 16 bit
- Doubleword = 4 byte = 32 bit
Assebly Type Casting ( PTR 구문 형식 )
어셈블리어 | Type Casting |
DWORD PTR SS:[ESP] | DWORD (4 byte) |
WORD PTR SS:[ESP] | WORD (2 byte) |
BYTE PTR SS:[ESP] | BYTE (1 byte) |
간접 메모리 주소 지정 방식에서 상수값을 저장하고자 할 경우, default 크기는 byte ptr이다. 따라서 저장하고자 하는 상수값의 크기가 1 byte 이상이면 반드시 type casting을 하여 크기를 지정해 주어야한다.
다음 코드의 경우 type casting을 하지 않아 defualt 크기인 byte ptr로 해석되어 78값만 [reg]에 저장된다.
mov [reg], 0x12345678 // = mov byte ptr [reg], 0x12345678
다음의 경우에도 마찬가지이며 dword ptr로 크기를 지정해야한다. dword ptr의 위치는 상관 없다.
mov ds:[8080h], 0x12345678 // = mov byte ptr ds:[8080h], 0x12345678
// ds:[8080h] <- 0x78
mov dword ptr ds:[8080h], 0x12345678 // OR mov ds:[8080h], dword ptr 0x12345678
// ds:[8080h] <- 0x12345678
728x90
'CS' 카테고리의 다른 글
[CS/알고리즘] 정렬 (Sorting) (0) | 2021.03.05 |
---|---|
오류 (Error), 결함 (Defect), 장애 (Failure) (0) | 2020.08.04 |
Assembly Intel Manual (0) | 2020.04.21 |
Addressing Modes (0) | 2020.04.21 |
80x86 프로세서 구조 (0) | 2020.04.03 |
댓글
공지사항
최근에 올라온 글