#시작하기 전에, 왜 기존에 썼던게 날아갔는지 모르겠어요. 오프로 정리해뒀던 문서까지 날아가서 멘탈 조금 깨질 것 같네요 야호
어셈블리도 다른 언어들이 함수를 미리 선언한 후 사용하는 것처럼 인터럽트를 사용하여 정의한 함수를 호출할 수 있다. INT 21H는 MS-DOS API로, MS-DOS 및 기타 도스 호환 운영 체제에 쓰이는 API이다.도스 API의 대부분은 INT 21H를 통해 호출할 수 있다. 해당 도스 서비스에는 키보드 입력, 비디오 출력, 디스크 파일 접근, 프로그램 실행, 메모리 할당 등이 있다.
도스에 쓰이는 다른 인터럽트 벡터는 다음과 같다.
인터럽트 | 내용 |
20h | 프로그램 끝내기 |
21h | 주요 DOS API |
22h | 프로그램 끝내기 주소 |
23h | Ctrl-C 핸들러 주소 |
24h | 심각한 오류 핸들러 주소 |
25h | 절대 디스크 읽기 |
26h | 절대 디스크 쓰기 |
27h | 종료 후 상주 |
28h |
유휴 호출 |
29h | 고속 콘솔 출력 |
2Ah | 네트워크 및 중요 섹션 |
2Bh | 사용 안 함 |
2Ch | 사용 안 함 |
2Dh | 사용 안 함 |
2Eh | 임시 항목 다시 불러오기 (Reload transient) |
2Fh | 다중 송신 |
특히 어셈블리를 쓰면서 21H 서비스를 많이 사용하게 된다. 21H 서비스는 INT 호출시 AH 레지스터에 저장된 값에 따라 호출되는 함수가 달라진다.
21H 서비스 목록
AH 레지스터 | 내용 |
00 | 프로그램 종료 |
01 | 표준 입력장치로 한 문자 입력받은 후 출력장치로 출력. AL레지스터에 8비트 문자 리턴 |
02 | 한 문자 출력, DL레지스터로 8비트 문자 리턴 |
03 | 보조 장치에서 한 문자 입력, AL레지스터에 8비트 문자 리턴 |
04 | 보조 장치에서 한 문자 출력, DL레지스터로 8비트 문자 리턴 |
05 | DL레지스터에 저장한 문자를 프린터로 출력 (한 문자) |
06 | 콘솔 장치에 문자 입출력, 제로 플래그에 따라 입력/출력 판단. |
07 | 한 문자 입력, AL에 입력한 문자가 저장됨. (브레이크 감지 X) |
08 | 한 문자 입력, AL에 입력한 문자가 저장됨. (브레이크 감지 O) |
09 | 문자열 출력, 문자열의 끝은 $ 로 판단. DS:DX = 문자열 세그먼트:오프셋 |
0A | 버퍼화된 문자열 입력. |
0B | 문자열의 입력 상태 검사. AL = 0xFF : 입력된 값 존재 0x00: 입력 없음 |
0C | 입력 버퍼를 비우고, 한 문자 or 문자열을 입력받음. |
19 | 현재 드라이버의 번호를 리턴한다 |
2C | 시스템의 시간을 얻어온다 |
35 | AL에 저장된 번호에 해당하는 인터럽트 벡터의 값을 얻는다. |
3B | 현재 디렉터리를 바꾼다. DS:DX = 디렉터리 명이 담긴 문자열 |
3C | 파일 생성. DS:DX = 파일 명이 담긴 문자열 |
3D | 파일 오픈 AL = 파일 엑세스 모드 |
3E | 파일 닫기. DX = 파일 핸들 |
아래 링크에서 더 자세한 정보 확인 가능.
https://ituner.tistory.com/124
'Computer' 카테고리의 다른 글
BOF 기초 정리 (0) | 2019.11.27 |
---|---|
운영체제 12주차 (0) | 2019.11.22 |
GDB 실습하면서 정리하는 명령어 (0) | 2019.09.25 |
메모리 구조 (0) | 2019.09.24 |
Register - 간단 개념 정리 (0) | 2019.09.23 |