-
[ 어셈블리 ] INT 21H에 대한 설명Operation System/Embeded System 2009. 5. 24. 10:23
INT 21H - 01H
키보드로부터 문자를 기다린다.
호출
AH = 01H
리턴
AL = 입력된 문자의 ASCII 코드
INT 21H - 02H
현재의 커서 위치에 문자를 출력한다. 속성은 커서 위치의 문자의 속성에 따른다.
호출
AH = 02H
DL = 문자의 ASCII 코드
INT 21H - 07H
키보드로부터 한 문자를 에코없이 입력받는다.
호출
AH = 07H
리턴
AL = 1byte의 ASCII 코드
INT 21H - 09H
문자열을 화면으로 출력한다.
호출
AH = 09H
DS:DX = 문자열의 세그먼트와 오프셋
※ 문자열은 반드시 '$' 알아서 오던데... ㅋㅋ
INT 21H - 0AH
키보드로부터 리턴키가 들어올때 까지 입력받은 문자를 버퍼에 저장한다.
AH = 0AH
DS:DX = 버퍼의 서그먼트와 오프셋
INT 21H - 19H
현재 드라입의 번호를 리턴한다.
호출
AH = 19H
리턴
AL = 드라이브 번호(0=A, 1=B, 2=C, 3=D, ...)
INT 21H - 25H
인터럽트 번호에 해당하는 입터럽트 백터의 내용을 바꾼다.
호출
AH = 25H
AL = 인터럽트 번호
DS:DX = 새로운 인터럽트 백터의 내용(세그먼트와 오프셋)
INT 21H - 2AH
시스템 날짜를 얻는다.
호출
AH = 2AH
리턴
CX = 년(1980~2099)
DH = 월(1~12)
DL = 일(1~31)
AL = 요일을 반환(0=Sun, 1=Mon)
INT 21H - 2BH
시스템의 날자를 설정한다.
호출
AH = 2BH
CX = 년(1980~2099)
DH = 월(1~12)
DL = 일(1~31)
리턴
호출이 성공하면 AL = 00H
호출이 실패하면 AL = FFH
INT 21H - 2CH
시스템의 시간을 얻어온다.
호출
AH = 2CH
리턴
CH = 시(0~23)
CL = 분(0~59)
DH = 초(0~59)
DL = 100분의 1초(0~99)
INT 21H - 2DH
시스템의 시간을 설정한다.
호출
AH = 2DH
CH = 시(0~23)
CL = 분(0~59)
DH = 초(0~59)
DL = 100분의 1초(0~99)
리턴
호출이 성공하면 AL = 00H
호출이 실패하면 AL = FFH
INT 21H - 35H
인터럽트 번호에 해당하는 인터럽트 백터의 값(리턴할 주소)을 얻는다.
호출
AH = 35H
AL = 인터럽트 번호
리턴
ES:BX = 인터럽트 백터의 내용(리턴할 주소의 세그먼트와 오프셋)
INT 21H - 36H
드라이브의 할당 정보를 얻는다.
호출
AH = 36H
DL = 드라이브 번호(0=Default, 1=A)
리턴
호출이 성공하면
AX = 클러스터당 섹터수
BX = 이용가능한 공간의 클러스터 수
CX = 섹터당 바이트수
DX = 드라이브당 클러스터 수
호출이 실패하면 AX = FFFFH
INT 21H - 3BH
현재의 디렉터리를 바꾼다.
호출
AH = 3BH
DS:DX = 디렉터리 이름이 담긴 ASCII 문자열의 세그먼트와 오프셋
리턴
호출이 성공하면 carry flag = 0
호출이 실패하면 carry flag = 1, AX = 에러번호
INT 21H - 3CH
파일을 만든다.
호출
AH = 3CH
CX = 속성 (00=normal, 01=readonly, 02=hidden, 03=system)
DS:DX = 파일 이름의 ASCII 문자열의 세그먼트와 오프셋
리턴
호출이 성공하면 carry flag = 0, AX = 파일 핸들
호출이 실패하면 carry flag = 1, AX = 에러번호
INT 21H - 3DH
파일 핸들에 따라 파일을 오픈한다.
AH = 3DH
AL = 파일의 엑세스 모드
파일 엑세스 모드
8비트로 구성
7 bit : 파일 핸들의 인계(0=자프로세스로 파일 핸들이 인계, 1=파일 핸들이 현재 프로세스에 존재)
4~6 bit : 분할모드(000=FCB오픈과 호환모드, 001=입출력 불가능, 010=출력 불가능, 011=입력 불가능, 100=모두 불가능)
3 bit : reserved
0~2 bit : (000=입력 엑세스, 001=출력 엑세스, 010=입출력 엑세스)
DS:DX = 파일명의 ASCII 문자열의 세그먼트와 오프셋
리턴
호출이 성공하면 carry flag = 0, AX = 파일 핸들
호출이 실패하면 carry flag = 1, AX = 에러번호
INT 21H - 3EH
파일을 닫는다.
호출
AH = 3EH
DX = 파일 핸들
리턴
호출이 성공하면 carry flag = 0
호출이 실패하면 carry flag = 1, AX = 에러번호
INT 21H - 3FH
파일 핸들을 이용하여 파일에서 자료를 읽는다.
호출
AH = 3FH
BX = 파일 핸들
CX = 읽을 바이트수
DS:DX = 읽어들인 자료가 저장될 버퍼의 세그먼트와 오프셋
리턴
호출이 성공하면 carry flag = 0, AX = 읽어들인 바이트 수
호출이 실패하면 carry flag = 1, AX = 에러번호
INT 21H - 40H
파일 핸들을 이용하여 파일에 자료를 쓴다.
호출
AH = 40H
BX = 파일 핸들
CX = 쓸 바이트수
DS:DX = 쓸 자료가 저장되어 있는 버퍼의 세그먼트와 오프셋
리턴
호출이 성공하면 carry flag = 0, AX = 쓴 바이트 수
호출이 실패하면 carry flag = 1, AX = 에러번호
INT 21H - 42H
파일의 현재 포인터를 옮긴다.
호출
AH = 42H
AL = (00H=파일의 시작에서부터, 01H=현재 포인터부터, 02H=화일의 끝에서부터)
BX = 파일 핸들
CX = 파일 포인터를 옮길 거리의 상위 워드
DX = 파일 포인터를 옮길 거리의 하위 워드
리턴
호출이 성공하면 carry flag = 0, DX = 옮겨진 파일 포인터의 상위워드, AX = 옮겨진 파일 포인터의 하위워드
호출이 실패하면 carry flag = 1, AX = 에러번호
INT 21H - 43H
화일의 속성을 얻거나 새로운 속성으로 변경한다. 디스크상의 절대 섹터를 읽어들인다.
호출
AH = 43H
AL = (00H=파일의 속성을 얻는다, 01H=파일의 속성을 변경한다)
CX = 만일 AL=01H라면 화일의 새로운 속성
5 bit = archive
2 bit = system
1 bit = hidden
0 bit = readonly
DS:DX = 파일명의 ASCII 문자열의 세그먼트와 오프셋
리턴
호출이 성공하면 carry flag = 0, CX = 파일의 속성
호출이 실패하면 carry flag = 1, AX = 에러번호
INT 21H - 4BH
다른 프로그램을 실행한다.
호출
AH = 4BH
AL = 부함수(00H=프로그램을 실행, 03H=오버레이 프로그램을 메모리에 올림)
ES:BX = 파라메터 블럭의 세그먼트와 오프셋
DS:DX = 실행 파일 이름의 세그먼트와 오프셋
리턴
호출이 성공하면 carry flag = 0
호출이 실패하면 carry flag = 1, AX = 에러번호
AL=00H 일때 파라메터 블럭의 내용
00H~01H = 환경 블럭의 세그먼트
02H~03H = 명령어 꼬리의 오프셋
04H~05H = 명령어 꼬리의 세그먼트
06H~07H = 자프로세서의 PSP에 복사될 첫번째 FCB의 오프셋
08H~09H = 첫번째 FCB의 세그먼트
0AH~0BH = 두번째 FCB의 오프셋
0CH~0DH = 두번째 FCB의 세그먼트
INT 21H - 4EH
ASCII 문자열에 따라 파일을 찾는다.
호출
AH = 4EH
CX = 찾을 파일의 속성
DS:DX = ASCII 문자열의 세그먼트와 오프셋
리턴
호출이 성공하면 carry flag = 0, 현재 DTA의 내용이 다음과 같이 변경된다.
0~20 byte = reserved
21 byte = 찾은 파일의 속성
22~23 byte = 파일이 생성, 변경된 시간(bit : 0BH~0FH=시, 05H~0AH=분, 00H~04H=2초단위 초)
24~25 byte = 파일이 생성, 변경된 날짜(bit : 09H~0FH=년, 05H~08H=월, 00H~04H=일)
26~29 byte = 파일의 크기
30~42 byte = ASCII 문자열의 파일 이름과 확장자
호출이 실패하면 carry flag = 1, AX = 에러번호
INT 21H - 4FH
4EH가 수행되고 난 후 계속해서 파일을 찾을 떄 사용한다. 그러므로 이 인터럽트를 사용하기 위해서는 4EH를 먼저 사용해야 한다.
호출
AH = 4FH
리턴
호출이 성공하면 carry flag = 0
0~20 byte = reserved
21 byte = 찾은 파일의 속성
22~23 byte = 파일이 생성, 변경된 시간(bit : 0BH~0FH=시, 05H~0AH=분, 00H~04H=2초단위 초)
24~25 byte = 파일이 생성, 변경된 날짜(bit : 09H~0FH=년, 05H~08H=월, 00H~04H=일)
26~29 byte = 파일의 크기
30~42 byte = ASCII 문자열의 파일 이름과 확장자
호출이 실패하면 carry flag = 1, AX = 에러번호
'Operation System > Embeded System' 카테고리의 다른 글
어셈블리 언어 (0) 2009.07.09 [ Embeded System ] 1학기 수업 종강을 하면서.. (0) 2009.06.03 7segment count up/down/zero (0) 2009.05.26 [ 수업 ] Embeded 장비의 Led 제어하기!! (0) 2009.05.12 [ 수업 ] 임베디드 -- TFTP를 이용해서 TARGET에 BOOTLOADER를 올리는 법 (0) 2009.04.29