반응형
INT (Interrupt) 명령어는 대부분 입력, 출력을 다룬다.
화면처리를 위한 INT 10H 기능과
입출력처리를 위한 INT 21H 기능에 대해서 살펴보자.
(INT 10H는 INT 21H보다 조금더 low수준)
INT 10H와 같이 낮은 수준의 연산은 BIOS에게 제어를 직접 전달한다.
BIOS : Basic input output system.
그에 반해, INT 21H는 제어를 DOS에 먼저 전달하여,
더 복잡한 연산을 용이하게 하는 서비스를 제공한다.
DOS에서 부가적인 고급 수준의 처리를 수행한 뒤
BIOS에게 제어를 넘김으로써, 좀더 고급수준의 서비스를 제공한다.
1. INT 10 기능
1-1 AH : 02H 커서설정
1-2 AH : 06H 화면스크롤
2. INT 21H 기능
2-1 02H : 문자 디스플레이
2-2 09H : 스트링 디스플레이
2-3 0AH : 키보드로부터 입력
2-4 3FH : 키보드로부터 입력
2-5 40H : 스트링 디스플레이
{
08H : Backspace
09H : Tab
0AH : Line feed
0DH : Carriage return
}
---------------------------------------------------------------------------
INT 10 -------------------
AH : 02H 커서 설정
화면에 출력하는 위치, 키보드로 입력받은 문자가 디스플레이 되는 위치는 커서의 위치이다.
즉 커서의 위치로 출력될 문자의 위치가 지정된다.
AH : 02H 를 설정한 후, INT 10 인터럽트를 걸면
BH, DH, DL에 설정되어있는 옵션들을 참조해 실제 커서의 위치를 이동한다.
MOV AH,02H ; //속성 02H
MOV BH,00 ; //페이지 00
MOV DH,08 ; //08행
MOV DL,15 ; //15열
INT 10H
AH : 06H 화면 지움
원하는 화면의 일부나 전체를 지울 수 있다.
MOV AH,06H ; //속성06H
MOV BH,71H ; //흰색 배경(7), 청색 전경(1)
MOV CX,0000H; //왼 쪽 위 행 : 열
MOV DX,184FH; //오른쪽 아래 행 : 열
INT 10H
INT 21 -------------------
AH : 02H : 문자 디스플레이
MOV AH,02H ;//02H 속성
MOV DL,char ;//한바이트 크기
INT 21H
AH : 09H 화면 디스플레이
MOV AH,09H ;//디스플레이 요청
LEA DX,MSG ;//출력을 원하는 변수의 주소 DX에 저장
INT 21H
AH : 0AH 키보드 입력
.DATA
PARA_LIST LABEL BYTE
MAX_LEN DB 20
ACT_LEN ?
KB_DATA DB 20 DUP(' ')
MOV AH,0AH
LEA DX,PARA_LIST ;//구조체 형식으로 입력 받음
INT 21H
AH : 3FH 키보드로부터 입력
MOV AH,3FH ;//3FH 속성 설정
MOV BX,00 ;//키보드를 위한 파일 핸들
MOV CX,20 ;//최대 20문자
LEA DX,ARR ;//입력 영역
INT 21H
AH : 40H : CX를 이용한 화면 디스플레이
MOV AH,40H ;//속성40H 설정
MOV BX,01 ;//화면 파일 핸들
MOV CX,20 ;//최대 20개의 문자
LEA DX,ARR ;//ARR이란 배열
AH : 02H 커서 설정
화면에 출력하는 위치, 키보드로 입력받은 문자가 디스플레이 되는 위치는 커서의 위치이다.
즉 커서의 위치로 출력될 문자의 위치가 지정된다.
AH : 02H 를 설정한 후, INT 10 인터럽트를 걸면
BH, DH, DL에 설정되어있는 옵션들을 참조해 실제 커서의 위치를 이동한다.
MOV AH,02H ; //속성 02H
MOV BH,00 ; //페이지 00
MOV DH,08 ; //08행
MOV DL,15 ; //15열
INT 10H
AH : 06H 화면 지움
원하는 화면의 일부나 전체를 지울 수 있다.
MOV AH,06H ; //속성06H
MOV BH,71H ; //흰색 배경(7), 청색 전경(1)
MOV CX,0000H; //왼 쪽 위 행 : 열
MOV DX,184FH; //오른쪽 아래 행 : 열
INT 10H
INT 21 -------------------
AH : 02H : 문자 디스플레이
MOV AH,02H ;//02H 속성
MOV DL,char ;//한바이트 크기
INT 21H
AH : 09H 화면 디스플레이
MOV AH,09H ;//디스플레이 요청
LEA DX,MSG ;//출력을 원하는 변수의 주소 DX에 저장
INT 21H
AH : 0AH 키보드 입력
.DATA
PARA_LIST LABEL BYTE
MAX_LEN DB 20
ACT_LEN ?
KB_DATA DB 20 DUP(' ')
MOV AH,0AH
LEA DX,PARA_LIST ;//구조체 형식으로 입력 받음
INT 21H
AH : 3FH 키보드로부터 입력
MOV AH,3FH ;//3FH 속성 설정
MOV BX,00 ;//키보드를 위한 파일 핸들
MOV CX,20 ;//최대 20문자
LEA DX,ARR ;//입력 영역
INT 21H
AH : 40H : CX를 이용한 화면 디스플레이
MOV AH,40H ;//속성40H 설정
MOV BX,01 ;//화면 파일 핸들
MOV CX,20 ;//최대 20개의 문자
LEA DX,ARR ;//ARR이란 배열
'Programing > Assembley 16bit' 카테고리의 다른 글
Assembly INT 10 속성들 정리 (0) | 2010.05.31 |
---|---|
Assembly 04. 변수 Swap 프로그램 (0) | 2010.05.10 |
Assembly 03. 조건, 제어문 (0) | 2010.05.10 |
Assembly 02. 어셈블리 기본 구조 및 변수 (3) | 2010.05.10 |
Assembly 01. IBM assembler MASM 설치 (1) | 2010.05.10 |