어셈블리어를 이용한 Binary Search 구현
- 최초 등록일
- 2004.12.20
- 최종 저작일
- 2004.12
- 4페이지/
한컴오피스
- 가격 1,500원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
바이너리 서치를 어셈블리어로 구현한 것입니다..
제가 어셈블리어 수업 들을때 기말 레포트로 작성하
였던 겁니다..
컴파일 실행환경
바이너리 서치의 기본구조를 어셈블리어로 작성하였
습니다..
기본 주어진 데이터 내에서 찾고,주어진 데이터 범위
를 벗어날 경우 에러 메세지를 출력합니다..
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로 옮긴다.
참고 자료
없음