조건문 심화

2025. 5. 25. 20:18어셈블리 프로그래밍

CASE  구조

  • AX-BX 식에서 0보다 크면 CX=1, 0이라면 CX=0이고 0보다 작다면 CX=-1로 저장
	CMP AX, BX
    JG @LARGE
    JE @EQUAL
    JL @SMALL
@LARGE:
	MOV CX, 1
    JMP @END_CASE
@EQUAL:
	MOV CX,0
    JMP @END_CASE
@SMALL:
	MOV CX, -1
@END_CASE
  • CASE문의 경우 조건 점프 명령어를 사용하여서 해당 레이블로 이동한 이후에 마지막 레이블로 이동
.MODEL SMALL
.STACK 100H
.DATA
	A DW 2
    B DW 3
.CODE
MAIN PROC
	MOV AX, @DATA
    MOV DS, AX
    
    MOV AX, A
    MOV BX,B
    
    CMP AX, BX
    JG @LARGE
    JE @EQUAL
    JL @SMALL
    
@LARGE:
	MOV CX, 1
    JMP @END_CASE
@EQUAL:
	MOV CX, 0
    JMP @END_CASE
@SMALL:
	MOV CX, -1
@END_CASE:
	MOV AH, 4CH
    INT 21H
MAIN ENDP
END MAIN

IF-THEN-ELSE 구조

  • AL과 BL의 내용을 비교하여 큰 수를 CL저장하는 프로그램
	CMP AL,BL
    JL @THEN
    MOV CL, AL
    JMP @END_IF
    
@THEN:
	MOV CL, BL
@END_IF:
  • AL과 BL의 내용을 비교하기 CMP명령어를 활용 
  • 부호 있는 조건 점프 명령어를 사용하여 THEN 문장이나 ELSE문장 중의 1개를 실행
  • 조건에 따라 두 문장 중에 하나를 실행하기 위해서 JMP명령어가 포함됨
.MODEL SMALL
.STACK 100H
.DATA
    A DB -5
    B DB 10
.CODE 
MAIN PROC
    MOV AX, @DATA
    MOV DS, AX

    MOV AL, A
    MOV BL, B
    CMP AL, BL
    JL @THEN

    MOV CL, AL
    JMP @END_IF

@THEN:
    MOV CL, BL

@END_IF:
    MOV AH, 4CH
    INT 21H
MAIN ENDP
END MAIN

 

'어셈블리 프로그래밍' 카테고리의 다른 글

반복문(2)  (0) 2025.05.25
반복문  (0) 2025.05.25
조건문 구조(2)  (0) 2025.05.22
조건문 구조  (0) 2025.05.22
플래그 래지스터&디버거  (0) 2025.04.27