[Assembly Language] 분기문, IA-32 Register
분기문
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
%include "io64.inc"
section .text
global CMAIN
CMAIN:
mov rbp, rsp; for correct debugging
; 분기문 (if)
; 특정 조건에 따라서 코드 흐름을 제어하는 것
; ex) 스킬 버튼 눌렀는가> YES -> 스킬 사용
; ex) 제한 시간 내에 던전 입장 수락 버튼을 눌렀는가? YES -> 입장, NO -> 던전 취소
; 조건 -> 흐름
; CMP dst, src (dst가 기준)
; 비교를 한 결과물은 Flag Register 저장
; JMP [label] 시리즈
; JMP : 무조건 jump
; JE : JumpEquals 같으면 jump
; JNE : JumpNotEquals 다르면 jump
; JG: JumpGreater 크면 jump
; JGE : JumpGreaterEquals 크거나 같으면 jump
; JL
; JLE
; 두 숫자가 같으면 1, 아니면 0을 출력하는 프로그램
mov rax, 10
mov rbx, 20
cmp rax, rbx
je LABEL_EQUAL
; je에 의해 점플르 안했다면, 같지 않다는 의미
mov rcx, 0
jump LABLE_EQUAL_END
LABEL_EQUAL:
mov rcx, 1
LABEL_EQUAL_END:
PRINT_HEX 1, rcx
NEWLINE
; 연습 문제 : 어떤 숫자(1~100)가 짝수면 1, 홀수면 0을 출력하는 프로그램
mov ax, 91
; 나누기 연산
; div reg
; - div b1 => ax / bl (al몫 ah나머지)
mov bl, 2
div bl
cmp ah, 0
je L1
mov rcx, 0
jump L2
L1:
mov rcx, 1
L2:
PRINT_HEX 1, rcx
NEWLINE
xor rax, rax
ret
; 초기와 된 데이터
; [변수이름] [크기] [초기값]
; [크기] db(1) dw(2) dd(4) dq(8)
section .data
msg db 'Hello World', 0x00
a db 0x11, 0x11, 0x11, 0x11 ; [0x11] 형태로 저장
b dd 0x12345678
; 초기화 되지 않은 데이터
;[변수이름] [크기] [개수]`
;[크기] resb(1) resw(2) resd(4) resq(8)
section .bss
e resb 10
|
cs |
IA-32 Register
CMP eflag 참조
'⭐ Programming > Assembly Language' 카테고리의 다른 글
[Assembly Language] 함수 기초 (0) | 2022.03.19 |
---|---|
[Assembly Language] 배열과 주소 (0) | 2022.03.18 |
[Assembly Language] Shift Operation & Logical Operation 시프트 연산과 논리 연산 (0) | 2022.03.17 |
[Assembly Language] 사칙연산 (0) | 2022.03.17 |
[Assembly Language] Big/Little-Endian 빅/리틀 엔디안 (0) | 2022.03.17 |
댓글
이 글 공유하기
다른 글
-
[Assembly Language] 함수 기초
[Assembly Language] 함수 기초
2022.03.19 -
[Assembly Language] 배열과 주소
[Assembly Language] 배열과 주소
2022.03.18 -
[Assembly Language] Shift Operation & Logical Operation 시프트 연산과 논리 연산
[Assembly Language] Shift Operation & Logical Operation 시프트 연산과 논리 연산
2022.03.17 -
[Assembly Language] 사칙연산
[Assembly Language] 사칙연산
2022.03.17