티스토리 뷰
어셈블리어에서 int 9를 재정의하는 코드입니다.
아래는 코드입니다.
명령어를 조금 설명하자면,
in = input form port
test = logical compare
out = out to port
... 정확한건 명령어 설명은,
http://download.intel.com/design/intarch/manuals/24319101.pdf
여기서 보세요..
1 2 MAIN SEGMENT PUBLIC 3 ASSUME CS:MAIN, DS:MAIN 4 5 MOV AX, MAIN ; Set up the Data Segment address 6 MOV DS, AX 7 8 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 9 10 mov ax, 0 11 mov ds, ax 12 13 mov bx, 09h * 04h ;find the int 9 14 15 mov dx, word ptr [bx] 16 push dx 17 mov dx, word ptr [bx]+2 18 push dx 19 ; 원래의 int 9를 스택에 저장한후 20 21 mov ax, 0 22 mov dx, ax 23 24 mov bx, 09h * 04h 25 26 cli ; disable an interrupt 27 mov word ptr [bx], offset kbd_handler ; load your keyboard ISR 28 mov word ptr [bx]+2, seg kbd_handler 29 sti ;enable interrupts 30 ; 새롭게 정의한 int 9를 삽입합니다. (kbd_handler로 삽입됨) 31 32 33 ;;;;;;;;;;;;;;;;;;;;;; 34 ; 35 ; 원하는 코드 입력 36 ; 37 ;;;;;;;;;;;;;;;;;;;;;;; 38 39 40 ;원래의 코드로 복귀합니다. (스택에 저장된 코드를 다시 백업) 41 mov ax, 0 42 mov dx, ax 43 44 mov bx, 09h * 04h 45 46 cli ; disable interrupt 47 pop dx 48 mov word ptr [bx], dx ;back to normal address 49 pop dx 50 mov word ptr [bx]+2, dx 51 sti ; enalbe interrupts 52 53 54 55 MOV AH, 4CH ; 프로그램을 종료 56 INT 21H 57 58 PUBLIC kbd_handler 59 kbd_handler PROC NEAR 60 push ax 61 push bx 62 push cx 63 push dx 64 push sp 65 push bp 66 push si 67 push di 68 69 in al, 64h 70 test al, 01h 71 72 in al, 60h 73 74 ;;;;;;;;;;;;;;;; 75 ; al 에 키보드 입력값이 들어와 있습니다. 76 ; 아스키 코드가 아니라 scan 코드로 받습니다. 77 ;;;;;;;;;;;;;;;; 78 79 mov al, 20h 80 out 20h, al 81 82 pop di 83 pop si 84 pop bp 85 pop sp 86 pop dx 87 pop cx 88 pop bx 89 pop ax 90 91 IRET 92 kbd_handler ENDP 93 94 MAIN ENDS 95 END |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 슈크림빵
- 사랑
- 퍼프크림
- 선우진
- 미팅싸이트
- 이티오피아
- 정의는 무엇인가
- 롤라 런
- 추억
- 아스트랄
- 여행
- 기본소득
- 안녕
- Je Vais Te Manqué
- 커피
- 그리움
- You'll Miss Me
- 교차하는 여러 감정들
- 다망해라
- 발해성터
- 영화
- 커스터드크림
- 중국탐방
- 대담회
- 기본소득 블로그 선언
- 봉오동승전지
- 서울
- 10년전 메일
- 유 윌 미스 미
- 독립역사탐방
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함