어셈블리어를 이용한 Binary Search 구현
- 최초 등록일
- 2004.12.20
- 최종 저작일
- 2004.12
- 4페이지/ 한컴오피스
- 가격 1,500원
소개글
바이너리 서치를 어셈블리어로 구현한 것입니다..
제가 어셈블리어 수업 들을때 기말 레포트로 작성하
였던 겁니다..
컴파일 실행환경
바이너리 서치의 기본구조를 어셈블리어로 작성하였
습니다..
기본 주어진 데이터 내에서 찾고,주어진 데이터 범위
를 벗어날 경우 에러 메세지를 출력합니다..
C++이나 C언어로 구현하는것은 쉬우나 어셈블리어로
구현하는 것은 어렵더군요..
본문내용
CODE SEGMENT
ASSUME CS:CODE
ASSUME DS:DATA
MOV AX, DATA
MOV DS, AX
CALL FIRST_MESSAGE ;***BINARY Search ( data: A B C D E F G H I J K )***라는 문자열을 출력하는 프로시져를 CALL
CALL KEY_MOVE ;스택을 이용하여 커서를 다음줄 맨 앞으로 이동시키는 프로시저를 CALL한다.
CALL KEY_MOVE ;즉 한칸 띄우는 역할을 한다.
CALL INPUT_CHAR ;Input character:라는 문자를 출력하는 프로시저를 CALL
MOV AH, 01H ; 키보드에서 문자를 입력받고 입력받은 내용을 보여주는 인터럽트.
INT 21H ;AH에 입력받아서 AL에서 리턴.(여기서 Search하고자 하는 데이터를 키보드로 입력받는다)
CALL KEY_MOVE ;스택을 이용하여 커서를 다음줄 맨 앞으로 이동시키는 프로시저를 CALL한다.
CALL BINSEAR ;Binary Search를 구현한 프로시저를 CALL한다.
;***BINARY Search ( data: A B C D E F G H I J K )***라는 문자열을 출력하는 프로시져
FIRST_MESSAGE PROC NEAR
MOV BX, OFFSET AA1 ;BX에 변수 AA1의 주소값을 넣는다.
MOV CX, 51 ;문자의 갯수가 51개 이므로 51번 카운터를 돌려서 데이터를 출력해야한다..
AGAIN: MOV DL, [BX] ;그래서 51을 CX에 넣는다.
MOV AH, 02H ;BX에 저장된 내용을 출력하는 인터럽트.
INT 21H
INC BX ;BX+1 을 해주면서
LOOP AGAIN ;카운터에 저장된 51번 동안 루프를 돌린다. 즉 변수AA1에 저장된 51개의 문자가 출력된다.
RET ;프로시저 실행이 끝나면 원래 위치로 돌아간다.
FIRST_MESSAGE ENDP
;Input character: 라는 문자열을 출력하는 프로시져
INPUT_CHAR PROC NEAR
MOV BX, OFFSET AA2 ;BX에 변수 AA2의 주소값을 넣는다.
MOV CX, 17 ;문자의 갯수가 17개 이므로 17번 카운터를 돌려서 데이터를 출력해야한다..
AGAIN1: MOV DL, [BX] ;그래서 17을 CX에 넣는다.
MOV AH, 02H ;BX에 저장된 내용을 출력하는 인터럽트.
INT 21H
INC BX ;BX+1 을 해주면서
LOOP AGAIN1 ;카운터에 저장된 17번 동안 루프를 돌린다. 즉 변수AA2에 저장된 17개의 문자가 출력된다.
RET ;프로시저 실행이 끝나면 원래 위치로 돌아간다.
INPUT_CHAR ENDP
;스택을 이용하여 커서를 다음줄 맨 앞으로 이동시키는 프로시저
KEY_MOVE PROC NEAR
PUSH AX ;AX값을 스택에 저장한다.
MOV DL, 0AH
MOV AH, 02H
INT 21H ;커서를 다음줄 맨 왼쪽으로 옮긴다.
MOV DL, 0DH
MOV AH, 02H
INT 21H
POP AX ;AX값을 스택에서 꺼내서 AX로 옮긴다.
참고 자료
없음