Conditional Control Flow Directives
조건부 제어 흐름 지시어(우리는 이거 쓰면 안돼요!)
MASM을 만든 MS에서 조금 더 편하게 하라는 의미로 만들어 준 것이다.
high level에 있는 기능을 MASM에서 제공하는 것이다.
Directive는 기계어로 번역이 안됨 → 대응하는 기계어가 없어요..!
1. Creating IF Statements
- .IF, .ELSE, .ELSEIF, and .ENDIF directives
- 또한 연산자도 이런식으로 사용이 가능하다
- 어셈블링 하기 전에 MASM이 어셈블리어로 바꾼 것이다 강조 !! CPU에서 처리하는 게 아니라 번역해주는 것입니다. 기계어 아니고 어셈블리어로 번역!!
과제를 할 떄는 CONDITIONAL CONTROL FLOW Directive는 사용하지 않을 것이다.!!
자동으로 push pop해주는 명령어 use명령…!(이것도 똑같은데..>) 이런것도 편의기능이니까 편의기능을 쓰는게 목적이 아니니까 ..! 어셈블리 언어를 써봅시당!
singed와 unsigend 구분법
condtional control flag
- MASM은 프로그래머의 변수 선언을 확인해서 어떤걸 쓸지 정한다.
- 부호 있는 정수 비교 예시
SDWORD를 해줬으니 Signed구나!! 이런식이다.
- 레지스터 비교 예시
- 메모리 비교같은 경우는 그럴 수 있는데, 그럼 레지스터 피교는 어떻게 하냐라고 하면 그냥 Unsigned라고 취급한다.
다음 예시
편한 코드(우리는 어렵게 바꾼 코드를 잘 생각해봐요)
바꾼 코드
대학 등록 예시
- 대학생이 강좌를 등록하려고 한다고 가정해 보겠습니다.
- 다음 두 가지 기준을 사용하여 학생의 등록 가능 여부를 결정합니다.
- 첫 번째는 0~400점 척도를 기준으로 한 개인의 성적 평균으로, 400점이 가장 높은 성적입니다.
- 두 번째는 수강하고자 하는 학점 수입니다.
- .IF, .ELSEIF 및 .ENDIF를 포함하는 다방향 분기 구조를 사용할 수 있습니다.
편한 코드
바꾼 코드
if 문 포함하는 while 루프에서 .REPEAT과 .WHILE문
REPEAT 및 .WHILE 지시문
- CMP 및 조건부 점프 명령어를 사용하여 직접 루프를 작성하는 대신 다음과 같은 대안을 제공합니다.
- .REPEAT 지시문은 .UNTIL 지시문에 이어 런타임 조건을 테스트하기 전에 루프 본문을 실행합니다.
- .while 지시문은 루프를 실행하기 전에 조건을 테스트합니다.
high-level
.REPEAT과 .WHILE사용하는 어셈블리 코드
Uploaded by N2T
728x90