티스토리 뷰

안녕하세요, 감자코딩에 감자개발자입니다. 제가 학교에 다니면서 어셈블리어 중간고사 정리 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
링크
«   2024/11   »
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
글 보관함