본문 바로가기

CS

[어셈블리] 분기문

조건문

CMP dst, src (dst가 기준)   destination과 source를 compare

비교를 한 결과물은 Flag Register에 저장


JMP [label] 시리즈

JMP: 무조건 점프

JE: JumpEquals 같으면 점프

JNE: JumpNotEquals 다르면 점프

JG(JumpGreater), JGE(JumpGreaterEquals), JL(JumpLess) 등등...

 

간단한 예제인데 rax, rbx에 데이터를 저장하고 두 값이 같으면 LABEL_EQUAL로 점프해 rcx를 1을 저장하고 같지 않더라도 무조건 LABEL_EQUAL_END로 점프한다. 왜냐하면 LABEL들도 순차적으로 실행되기 때문에 rax, rbx가 같지 않으면 rcx를 초기값 0으로 그대로 두게 하기 위함이다.

 

CMP로 비교하고 나면 flag register에 저장된다고 했는데 이것은 레지스터의 eflags에서 확인할 수 있다.

 

 

'CS' 카테고리의 다른 글

[어셈블리] 배열  (0) 2022.06.18
[어셈블리] 반복문  (0) 2022.06.18
[어셈블리] 쉬프트 연산  (0) 2022.06.18
[어셈블리] 입출력, 사칙 연산  (0) 2022.06.18
[어셈블리] 변수와 레지스터  (0) 2022.06.18