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 = 에러번호
SOURCE:
어셈블리 언어
데이터 형식 타입 설명 BYTE 8비트 부호 없는 정수 SBYTE 8비트 부호 있는 정수 WORD 16비트 부호 없는 정수 SWORD 16비트 부호 있는 정수 DWORD 32비트 부호 없는 정수 SDWORD 32비트 부호 있는 정수 FWORD 48비..
ituner.tistory.com
'어셈블리어 공부용 > x86 어셈블리어(ASSEMBLY)' 카테고리의 다른 글
emu8086으로 어셈블리어연습 [비디오램에 직접 접근 하여 테트리스 미노 그리기] (0) | 2019.08.18 |
---|---|
emu8086 어셈블리어 연습 [이중루프문] (0) | 2019.08.18 |
윈도우 10에서 도스박스로 도스디버거(DOS DEBUG) 실행하기 (0) | 2019.08.16 |
emu8086으로 어셈블리어 연습하기 [로또번호용 난수 6자리 뽑기] (1) | 2019.08.15 |
emu8086으로 어셈블리어 연습 [16진수를 10진수로 변환 후 출력하기] (0) | 2019.08.15 |
댓글