336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
이번에는 점프 명령어를 알아보려 합니다.
점프 명령어는 프로그램 진행상 필요시 특정 위치로 프로그램의 흐름을 건너뛰는 역할을 합니다.
점프 명령어는 다음과 같이 선언합니다.
명령 1 명령 2 JMP <레이블> 명령 3 명령 4 레이블: 명령 5 명령 6
JMP 명령어가 없다면 프로그램의 순서는 명령 1-2-3-4-5-6의 순차적으로 진행될 것입니다. 그러나 JMP를 통해 특정 레이블로 점프시킨다면 1-2-5-6의 순서로 진행 됩니다. 그럼, 이전에 테스트 해 보았던 헬로 월드 예제로 적용해 보죠.
.386 ; 386 CPU용 명령어들을 사용합니다. .model flat, stdcall ; 메모리 모델은 stdcall을 사용합니다. .stack 1024 .data ; 데이터 영역은 아직 없으므로 비워둡니다. .code ; 코드 영역 시작 main PROC ; main 프로시저 선언합니다. MOV AH, 02h ; AH 레지스터에 문자 1개를 출력하는 명령인 02h를 넣습니다. 반복적으로 사용될 값이므로 첫 번째 예제와는 순서를 바꿔서 가장 처음에 배치해 봤습니다. MOV DL, 48h INT 21h MOV DL, 65h INT 21h MOV DL, 6Ch INT 21h MOV DL, 6Ch INT 21h JMP JUMP_LABEL ; JUMP_LABEL이라 이름 붙인 레이블로 프로그램의 흐름을 건너뜁니다. MOV DL, 6Fh ; 건너 뜀 INT 21h ; 건너 뜀 MOV DL, 2Ch ; 건너 뜀 INT 21h ; 건너 뜀 MOV DL, 20h ; 건너 뜀 INT 21h ; 건너 뜀 JUMP_LABEL: ; JMP 명령어를 통해 이 곳으로 바로 옵니다. MOV DL, 57h INT 21h MOV DL, 6Fh INT 21h MOV DL, 72h INT 21h MOV DL, 6Ch INT 21h MOV DL, 64h INT 21h MOV DL, 21h INT 21h MOV AH, 4Ch INT 21h main ENDP END main
실행 결과는 이렇습니다. Hello, World! 중에서 "o, W" 부분을 건너뛰어 HellWorld!로 출력됨을 알 수 있습니다.
'Programming Language > Assembly' 카테고리의 다른 글
산술 비교 알고리즘 - 1편 "!="과 "==" (0) | 2013.04.11 |
---|---|
산술비교 명령어 모음 (0) | 2013.04.06 |
두 번째 예제: Hello, World! (0) | 2013.03.31 |
첫 예제: 1개의 문자 출력 (0) | 2013.03.31 |
MASM PWB 사용하기 (0) | 2013.03.31 |