Programing/Assembley 16bit

Assembly 05. 비디오, 키보드 처리 인터럽트

sosal 2010. 5. 31. 01:52
반응형

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이란 배열