티스토리 뷰
안녕하세요, 감자코딩에 감자개발자입니다. 제가 학교에 다니면서 어셈블리어 중간고사 정리 2탄을 준비했습니다.
어셈블리어
정수표기법 : [ {+|-} ] digits [진수(radix)]
(선택사항) 부호 : + or –
binary, decimal, hexadecimal, or octal digits
진수표기 문자
h – 16진수(hexadecimal)
d – 10진수(decimal)
b – 2진수(binary)
r – 실수 (encoded real)
예시
30d, 6Ah, 42, 1101b
문자로 시작되는 16진수 상수 : 0A5h
어셈블리가 식별자로 해석하지 않도록 맨 앞에 0을 넣음
문자는 따옴표(quate) 또는 큰따옴표(double quate)로 둘러싸임
예) 'A', "x"
ASCII 문자열 = 1 byte
문자열 또한 따옴표 또는 큰따옴표로 둘러싸임
예) "ABC“, 'xyz'
각각의 문자는 1바이트를 차지함
따옴표 포함
예) 'Say "Goodnight," Gracie'
예약어는 식별자(identifier)로 사용할 수 없음
예약어의 유형
명령어 니모닉 (Instruction mnemonics) : MOV, ADD, MUL
디렉티브(directives) : 프로그램을 어떻게 어셈블하는지 알려줌
타입속성(type attributes) : 변수와 피연산자의 크기와 사용정보
BYTE, WORD 등
연산자(operators)
미리 정의된 기호(predefined symbols)
어셈블할때에 상수 정수 값을 반환하는 @data와 같은 기호
- 디렉티브
어셈블러가 인식하여 그것에 따라서 동작하는 소스코드에서 포함된 명령(command)
실행시간에 실행되지 않음
명령어 집합(Instruction set)에 포함되지 않음
세그먼트, 변수, 매크로, 프로시저를 정의
대소문자 구분 X
어셈블러마다 디렉티브의 정의가 다름
- 레이블
명령어 또는 데이터의 위치를 표시하는 식별자
명령어 바로 앞에 있는 레이블은 그 명령어의 주소를 의미
변수 바로 앞에 있는 레이블은 변수의 주소를 의미
데이터 레이블
코드에서 변수를 편리하게 참조하는 방법을 제공
변수의 위치에 대한 식별자
(예제1) count DWORD 100
count는 숫자 100의 위치를 가리킨다.
(예제2) array DWORD 1024, 2048
DWORD 4096, 8192
Array는 첫번째 숫자(1024)의 위치를 정의한다. 다른숫자들은 바로 뒤의 메모리에 순서대로 배치됨
코드 레이블
(명령어가 위치한) 프로그램의 코드 영역에 있는 레이블 (콜론 (으로 끝남)
(예제) target :
mov ax, bx
…
jmp target
- 명령어 니모닉
명령어 니모닉 (instruction mnemonic)
명령어를 식별하기 위한 짧은 단어
영어로 “니모닉”은 기억을 돕는 방책이란 뜻
예
MOV 한 값을 다른 곳으로 이동(move, assign)
ADD 두 값을 더함(add)
SUB 한 값을 다른 값에서 뺌(subtract)
MUL 두 값을 곱합(multiply)
JMP 새로운 위치로 점프함(jump)
CALL 프로시저를 호출함(call)
TITLE Program Template (Template.asm)
; Program Description:
; Author:
; Creation Date:
; Revisions:
; Date: Modified by:
INCLUDE Irvine32.inc
.data
; (insert variables here)
.code
main PROC
; (insert executable instructions here)
exit
main ENDP
; (insert additional procedures here)
END main
offset % 같은거라고 생각
// 중요
레지스터에 값을 넣지 않으면 Dumpregs를 해도 값이 변화하지 않는다 라는것을 알고 있어야한다!
'Assembly Language' 카테고리의 다른 글
어셈블리어 구구단 구현 (0) | 2017.10.26 |
---|---|
어셈블리어 중간고사 정리 (0) | 2017.10.14 |
[Assembly] 수업 정리 1 (0) | 2017.10.08 |
[Assembly] 어셈블리어의 기초 (0) | 2017.10.02 |
어셈블리어 수업 정리 1 (0) | 2017.09.17 |
- Total
- Today
- Yesterday
- 감자개발자
- BFS
- 머신러닝
- 프로그래밍
- 안드로이드
- 노드
- 텐서플로우
- Android
- 백준
- node
- 복습
- 개발하는 관광이
- db
- 리버싱
- 스프링
- 초보자를 위한 C언어 300제
- 감자코딩
- C langauge
- 코드엔진
- Algorigm
- programming
- MVC
- node.js
- Spring
- 학교
- Controller
- 알고리즘
- C언어
- TensorFlow
- 백준알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |