IF-ELSEIF-ELSE-ENDIF (점없이) 컴파일 시간 지시어이다. 어셈블러는 조건을 테스트하고 결과에 따라 결과 프로그램에 일련의 명령문 중 하나만 포함시킵니다. C 전 처리기 지시문 #if
, #elif
, #else
및 #endif
과 동일한 용도로 사용됩니다.
.IF - .ELSEIF - .ELSE - .ENDIF (점으로 표시)는 실행 시간 지정 문입니다. 어셈블러는 비교 및 점프 명령을 생성합니다. 이들은 if (...) { ... } else if (...) { ... } else { ... }
양식으로 C 명령문과 동일한 목적을 수행합니다.
참고 : 나는 MASM 유창하지, 그래서이 예제의 표기에 오류가있을 수 있습니다. 컴파일의 전처리 단계에서
something EQU 1
somewhere:
mov ax, 42
IF something == 1
xor bx, 10
ELSE
mov bx, 20
ENDIF
add ax, bx
, (점 제외) IF
및 ELSEIF
문에서 조건을 테스트하고, 프로그램 종료됩니다 코드의 블록 중 하나를 선택합니다 컴파일러. 상기 코드는 다음에 온 :
somewhere:
mov ax, 42
xor bx, 10
add ax, bx
다른 예 :
something EQU 1
somewhere:
mov ax, 42
mov dx, something
.IF dx == 1
xor bx, 10
.ELSE
mov bx, 20
.ENDIF
add ax, bx
를 컴파일 상기 전처리 단계에서, 컴파일러는 조립 안내로 (도트)와 .IF
-statements 바뀔 것이다. 위의 코드는 아마도 다음과 같이 바뀌었을 것입니다 :
something EQU 1
somewhere:
mov ax, 42
mov dx, 1
cmp dx, 1
jnz else_clause
xor bx, 10
jmp past_endif
else_clause:
mov bx, 20
past_endif:
add ax, bx
조건은 실제로 실행시 검사됩니다.
당신이 diffrent을 보여줄 수있는 예를 들어이 있습니까? –
요청에 따라 예제를 추가했습니다. –
감사합니다. 예 : –