어셈블리 조건 분기문
#Shift 연산
-사칙연산 만큼 자주 논리연산을 사용한다.
-4비트씩 이동이 필요하다. 4, 8, 16, 32 비트 단위로 사용
※ 종류
shr (shift right)
- 오른쪽으로 1비트씩 이동 ex) shr ax, 4
shl (shift lenft)
- 왼쪽으로 1비트씩 이동 ex) shl ax, 4
#shift 연산 예제
#AND, OR, XOR, NOT 연산
#and, or, xor operand1, operand2
operand1, operand2
- 연산대상을 레지스터, 메모리, 상수 모두가능
- 모두 메모리인 경우는 연산 불가능
연산 결과는 operand1에 저장
#not operand1
Operand1
-연산대상으로 레지스터, 메모리, 상수 모두 가능
- 연산결과 저장
이진수 형태로 숫자로 입력할 때는 0b로 시작
ex) mov ax, 0b00001000 ;10진수 8
#AND, OR, XOR, NOT 연산 예제
#FLAG Register
- CPU에는 연산결과의 상태를 모니터링 해주는 특별한 레지스터를 운영
#플래그 레지스터에서 대표적인 플래그 2개 학습
- ZF(Zero Flag): 연산 결과가 Zero이면 설정됨
- CF(Carray Flag): 연산에서 캐리가 발생하면 설정됨
-플래그 레지스터의값을 변형시키는 명령어들은 주로산술, 논리연산자들이다.
#test 명령어
- AND 연산과 동일
- AND 연산과의 차이점은 연산 결과를 레지스터에 반영하지 않고, 플래그 레지스터만 반영함
형식] test para1, para2
-para1과 para2의 and 연산을 행하고 결과를 플래그 레지스터에 반영
-para1에는 연산 결과를 반영하지 않는다.