span class=postbody옛 DOS시절 무턱대고 한번 해봤다가 효과본 NS라는 작은 램상주 프로그램입니다. br /br /DOS에서 어떤 프로그램 실행하다가 죽는경우 전원을 OFF할수밖에 없었던 시절이야기 입니다. br /개발하다가 보면 조금만 잘못 만들어도 시스템이 죽던 시절 개발의 용이성을 도모하고자 만들어 본건데 헐~ 진짜로 효과를 봤던 의외로 단순한 램상주 프로그램 입니다. br /br /그냥 실행하면 램상주로 올라가며 이후에 아무때나 F12키를 눌러보세요. 시스템이 정지되었다 하더라도 왠만하면 다시 DOS 프롬프트로 돌아오게 될겁니다. br /br //span
table align=center border=0 cellpadding=3 cellspacing=1 width=90%
tbody
tr
tdspan class=genmedb코드:/b/span/td/tr
tr
td class=code; Code by JaeHyuk.CHO br /br /;----------------------------------------------------------- br /.model smallnbsp; nbsp; nbsp; nbsp; nbsp; nbsp;; memory model - small - COM br /.codenbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; ; code segment br /.386pnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; ; operation 286 br /;----------------------------------------------------------- br /br /;exitkey equ 45hnbsp; nbsp; nbsp; nbsp; ; NumLock br /;exitkey equ 37hnbsp; nbsp; nbsp; nbsp; ; Print Screen br /;exitkey equ 46hnbsp; nbsp; nbsp; nbsp; ; Ctrl + Break br /;exitkey equ 57hnbsp; nbsp; nbsp; nbsp; ; F11 br /exitkey equ 58hnbsp; nbsp; nbsp; nbsp; ; F12 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;org 100hnbsp; nbsp; ; offset br /start:nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;; start offset - 100h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push offset entry br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;ret br /keypnbsp; nbsp; nbsp; nbsp;proc interrupt br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp short key00nbsp; nbsp; ; 00h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;keyidnbsp; dw 1a1bhnbsp; nbsp; ; 02h id br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;keyoff dw 6148hnbsp; nbsp; ; 04h org interrupt offset br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;keyseg dw 6b63hnbsp; nbsp; ; 06h org interrupt segment br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;codes1 dw 7265hnbsp; nbsp; ; 08h Code br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;codes2 dw 4449hnbsp; nbsp; ; 0ah PSP Code br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;string06 db 0dh, 0ah, 'Usage: F12 - Force exit', 0dh, 0ah, '$' br /key00: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;in al, 60h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, 20h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out 20h, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp ah, exitkey br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jnz key01 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov eax, cr0 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;and al, 0feh br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cr0, eax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0003h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 10h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor bx, bx br /putslb: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, cs:[string06+bx+09h] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, '$' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz endputs br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 0eh br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bx, 0007h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 10h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc bx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp short putslb br /endputs: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 4c1ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /key01: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pushf br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call dword ptr [keyoff] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;iret br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;endp br /entry: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cld br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 09h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, string00 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov si, 0080h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lodsb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 01h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jbe entryinlb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor ch, ch br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cl, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push offset argvlb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;ret br /entryinlb: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp powerexitlb br /argvlb: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lodsb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, '/' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz argvlbe br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, '-' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz argvlbe br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop argvlb br /argvlbe: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lodsb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 'A' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jbe argvlbe00 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 'Z' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jae argvlbe00 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add al, 20h br /argvlbe00: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 'u' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz uninstall br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 'r' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz uninstall br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 'b' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz rebootlb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 's' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz firelb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 'e' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz powerexitlb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 'p' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz parklb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 'k' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz keydelaylb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp entryin br /firelb: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp firestart br /powerexitlb: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp powerexit br /parklb: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp parkstart br /rebootlb: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0ffffh br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor ax, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop es br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov di, 0472h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;stosw br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf br /keydelaylb: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0305h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 16h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 09h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, faststring br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 20h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;faststring db 0dh, 0ah, 'Setting delay of key -gt; FAST', 0dh, 0ah, '$' br /uninstall: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 3509h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, es:[bx+02h] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp ax, word ptr cs:keyid br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz removed br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 09h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, string05 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 20h br /removed: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ds br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov dx, es:[bx+04h] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ds, es:[bx+06h] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 2509h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, es:[bx+08h] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov es, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 49h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, es:[bx+0ah] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov es, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 49h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop ds br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 09h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, string04 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 20h br /entryin: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 09h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, string03 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 20h br /powerexit: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov word ptr cs:codes1, cs br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr cs:[002ch] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov word ptr cs:codes2, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 3509h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov word ptr cs:keyoff, bx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov word ptr cs:keyseg, es br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, es:[bx+02h] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push cs br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop ds br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp ax, word ptr cs:keyid br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jnz entry00 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 09h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, string01 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 20h br /entry00: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 09h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, string06 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, string02 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 2509h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, keyp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, entry br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 27h br /br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;string00 db '$', 0dh, 0ah, 'PowerEXIT v3.1 by Cho JaeHyuk [Pager:012-846-6420]nbsp; Shareware.', 0dh, 0ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; db 'Copyright(c)1997-1998 All right reserved.', 0dh, 0ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; db '$' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;string01 db '$', 0dh, 0ah, '! Message: Already installed', 0dh, 0ah, '$' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;string02 db '$', 0dh, 0ah, '! Message: Success installed', 0dh, 0ah, '$' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;string03 db '$', 0dh, 0ah, 'Option) /? or /H :Show this help option', 0dh, 0ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; db '$', 09h, '/E', 09h, ' :Terminate PowerEXITnbsp; (DEFAULT)', 0dh, 0ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; db '$', 09h, '/U', 09h, ' :Remove PowerEXIT (/R)', 0dh, 0ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; db '$', 09h, '/P', 09h, ' :Parking', 0dh, 0ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; db '$', 09h, '/S', 09h, ' :Screen saver [FIRE]', 0dh, 0ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; db '$', 09h, '/K', 09h, ' :Set delay of key [FAST]', 0dh, 0ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; db '$', 09h, '/B', 09h, ' :Reboot [COLD]', 0dh, 0ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; db '$', 09h, '$' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;string04 db '$', 0dh, 0ah, '! Message: Removed OK', 0dh, 0ah, '$' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;string05 db '$', 0dh, 0ah, '! Message: Remove error!', 0dh, 0ah, '$' br /br /;=========================================================================== br /; Screen saver srea -------------------------------------------------------- br /;=========================================================================== br /firestart: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, cs br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0a000h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop es br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0013h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 10h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov dx, 03c8h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor ah, ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor ch, ch br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cl, 64 br /setrgb00: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop setrgb00 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor ah, ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cl, 64 br /setrgb01: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, 63 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop setrgb01 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor ah, ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cl, 64 br /setrgb02: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, 63 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop setrgb02 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cl, 64 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, 63 br /setrgb03: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop setrgb03 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cld br /main00: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push si br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ds br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push es br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop ds br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cx, 32320 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov si, 32000 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov di, 32000 br /fire00: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bx, si br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add bx, 320 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xlat br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp al, 04h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jg refire br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc di br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc si br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push offset fire02 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;ret br /refire: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor dx, dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor ah, ah br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bx, si br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add bx, 319 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xlat br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov dl, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc bx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xlat br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add dx, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc bx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xor al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;xlat br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add dx, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lodsb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shr ax, 1 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shr ax, 1 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;dec al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;stosb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp cx, 320 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jb fire02 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push di br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov di, cx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;stosb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop di br /fire02: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop fire00 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop ds br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop si br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cx, 320 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov di, 64320 br /random00: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lodsb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz random00 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;rol al, cl br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;stosb br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop random00 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 0bh br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jnz whilekey0 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp main00 br /whilekey0: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 0bh br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or al, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz whilekey1 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 07h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp short whilekey0 br /whilekey1: br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0003h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 10h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push cs br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop ds br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ah, 09h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea dx, string00 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 21h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;int 20h br /;=========================================================================== br /; Parking srea -------------------------------------------------------- br /;=========================================================================== br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;COMPLETESTRING DB 0dh, 0ah, 'Turn off your computer [Parking complete]', 0Dh, 0Ah, '$' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;ERRORSTRINGnbsp; nbsp; DB 0dh, 0ah, 'Parking error', 0Dh, 0Ah, '$' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;RESETSTRINGnbsp; nbsp; DB 0dh, 0ah, 'Reset disk /Cancel parking/', 0Dh, 0Ah, '$' br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;DRIVEnbsp; nbsp; nbsp; nbsp;DW 0080h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;PARKnbsp; nbsp; nbsp; nbsp; DW 0000h br /parkstart: br /nbsp; nbsp; nbsp; nbsp;MOV AX, 0800h br /nbsp; nbsp; nbsp; nbsp;XOR CX, CX br /nbsp; nbsp; nbsp; nbsp;MOV DX, 0080h br /nbsp; nbsp; nbsp; nbsp;INT 13h br /nbsp; nbsp; nbsp; nbsp;XOR DH, DH br /nbsp; nbsp; nbsp; nbsp;jb MESSAGEPUT br /nbsp; nbsp; nbsp; nbsp;or dx, dx br /nbsp; nbsp; nbsp; nbsp;Jb MESSAGEPUT br /nbsp; nbsp; nbsp; nbsp;CMP DX, 0002h br /nbsp; nbsp; nbsp; nbsp;JLE COUNTJMP br /nbsp; nbsp; nbsp; nbsp;MOV DX, 0002h br /COUNTJMP: br /nbsp; nbsp; nbsp; nbsp;XOR DH, DH br /nbsp; nbsp; nbsp; nbsp;MOV CX, DX br /PARKLOOP: br /nbsp; nbsp; nbsp; nbsp;PUSH CX br /nbsp; nbsp; nbsp; nbsp;MOV AX, 01100h br /nbsp; nbsp; nbsp; nbsp;XOR CX, CX br /nbsp; nbsp; nbsp; nbsp;MOV DX, DRIVE br /nbsp; nbsp; nbsp; nbsp;INT 13h br /nbsp; nbsp; nbsp; nbsp;jb parkcom br /nbsp; nbsp; nbsp; nbsp;MOV PARK, 01h br /nbsp; nbsp; nbsp; nbsp;MOV AX, 0C00h br /nbsp; nbsp; nbsp; nbsp;XOR CX, CX br /nbsp; nbsp; nbsp; nbsp;MOV DX, DRIVE br /nbsp; nbsp; nbsp; nbsp;INT 13h br /nbsp; nbsp; nbsp; nbsp;MOV AX, 0800h br /nbsp; nbsp; nbsp; nbsp;XOR CX, CX br /nbsp; nbsp; nbsp; nbsp;MOV DX, DRIVE br /nbsp; nbsp; nbsp; nbsp;INT 13h br /nbsp; nbsp; nbsp; nbsp;MOV AX, 0C00h br /nbsp; nbsp; nbsp; nbsp;MOV DX, DRIVE br /nbsp; nbsp; nbsp; nbsp;INT 13h br /PARKCOM: br /nbsp; nbsp; nbsp; nbsp;INC DRIVE br /nbsp; nbsp; nbsp; nbsp;POP CX br /nbsp; nbsp; nbsp; nbsp;LOOP PARKLOOP br /MESSAGEPUT: br /nbsp; nbsp; nbsp; nbsp;MOV AH, 09h br /nbsp; nbsp; nbsp; nbsp;CMP PARK, 0FFh br /nbsp; nbsp; nbsp; nbsp;JNE OKMESSAGE br /nbsp; nbsp; nbsp; nbsp;lea dx, errorstring br /nbsp; nbsp; nbsp; nbsp;push offset intput br /nbsp; nbsp; nbsp; nbsp;ret br /OKMESSAGE: br /nbsp; nbsp; nbsp; nbsp;lea dx, completestring br /INTPUT: br /nbsp; nbsp; nbsp; nbsp;INT 21h br /nbsp; nbsp; nbsp; nbsp;MOV AH, 07h br /nbsp; nbsp; nbsp; nbsp;INT 21h br /nbsp; nbsp; nbsp; nbsp;MOV AH, 09h br /nbsp; nbsp; nbsp; nbsp;lea dx, resetstring br /nbsp; nbsp; nbsp; nbsp;INT 21h br /EXITENTRY: br /nbsp; nbsp; nbsp; nbsp;INT 20h br /;----------------------------------------------------------- br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;end start br /; End of source/td/tr/tbody/tablespan class=postbodybr /br /br /또다른 재미있는 이야기를 한다면 이러한 키보드를 가로채는 램상주를 방지하는 br /기법도 있습니다. 관심있으시다면 아래의 링크를 참고하세요. br /https://bbs.minzkn.com/viewtopic.php?t=17/spanbr /
받은 트랙백이 없고,
댓글이 없습니다.
NS.COM
글
댓글을 달아 주세요
댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/165댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/165