span class=postbody이것은 EXE파일(16bit) 을 binary 또는 .COM인듯이 가공해주는 Overlap 코드입니다. br / _OVERLAY 세그먼트의 위치에 EXE파일 그대로 복사해넣으면 됩니다. br / 초기 CS:IP를 검출하여 EXE파일 이미지를 적절히 재배치해주게 되는 그런겁니다. br / (PSP를 대체한다고 하면 이해가 쉬울려나?) br / 옛날에 16bit 커널개발하시려고 도전해보셨던 분들이라면 이런것쯤 하나 만들어 두셨을거라 생각합니다. br / 저 역시 예전부터 커널 개발한답시고 이것을 만들었지만 지금은 DOS가 아닌 32bit OS를 만들기 br / 때문에 이런거는 불필요해보이기도 합니다. br / 하지만 이 개념 자체는 알아두면 좋은 내용인듯 하여 적어둡니다. br / (컴파일러가 요즘에는 좋아져서 이제는 이런 코드를 만들일은 없습니다만 알아두면 응용할곳은 많습니다.) br / br / /spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb코드:/b/span/td /tr tr td class=code br / ; /**************************** br / ;nbsp; *nbsp; nbsp; MINZ kernel overaynbsp; nbsp; * br / ;nbsp; * Copyright(c)1998 by MINZ * br / ;nbsp; *nbsp; nbsp; Code by Cho JaeHyuknbsp; nbsp;* br / ;nbsp; ****************************/ br / ;nbsp; ------- MZIPOVER.ASM ------- br / br / .286 br / br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;OGROUP group _TEXT, _OVERLAY br / br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;assume cs:OGROUP, ds:OGROUP, es:nothing, ss:nothing br / _TEXTnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; segment byte public use16 'CODE' br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;org 0hnbsp; nbsp; br / _start@nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; label nearnbsp; nbsp; nbsp; nbsp; nbsp; br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cli br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call near ptr $ + 3 + 2 br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp short _getip0@ br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bx, word ptr [bp] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;sub bx, 4 br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retn br / _getip0@nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;label short br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push cs br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop ds br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea ax, OGROUP:_run_data@[bx] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shr ax, 4 br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cx, cs br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr OGROUP:_run_data@[bx + 8] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov word ptr OGROUP:_run_seg@[bx], ax br / br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cx, 16 br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, cs br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mul cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;lea cx, OGROUP:_run_data@[bx] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;adc dx, 0 br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr OGROUP:_run_data@[bx + 24] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov word ptr OGROUP:_run_src@[bx + 0], ax br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov word ptr OGROUP:_run_src@[bx + 2], dx br / br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr OGROUP:_run_seg@[bx] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr OGROUP:_run_data@[bx + 22] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov word ptr OGROUP:_run_jump@[bx + 3], ax br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr OGROUP:_run_data@[bx + 20] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov word ptr OGROUP:_run_jump@[bx + 1], ax br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr OGROUP:_run_seg@[bx] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr OGROUP:_run_data@[bx + 14] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ss, ax br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov sp, word ptr OGROUP:_run_data@[bx + 16] br / br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cx, word ptr OGROUP:_run_data@[bx + 6] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or cx, cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jz short _run_norelocate@ br / _run_relocate@nbsp; nbsp; nbsp;label short br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cx, 16 br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr OGROUP:_run_src@[bx + 0] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov dx, word ptr OGROUP:_run_src@[bx + 2] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov di, ax br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;and di, 0fh br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;div cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov es, ax br / br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr OGROUP:_run_seg@[bx] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mul cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push dx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr es:[di + 2] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mul cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr es:[di] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;adc dx, 0 br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop di br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop si br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, di br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;adc dx, si br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov di, ax br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;and di, 0fh br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;div cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov es, ax br / br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr OGROUP:_run_seg@[bx] br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add word ptr es:[di], ax br / br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add word ptr OGROUP:_run_src@[bx + 0], 4 br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;adc word ptr OGROUP:_run_src@[bx + 2], 0 br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop cx br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop short _run_relocate@ br / _run_norelocate@nbsp; nbsp;label short br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push cs br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop ds br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push cs br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop es br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;sti br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jmp short $ + 2 br / _run_jump@nbsp; nbsp; nbsp; nbsp; nbsp;db 0eahnbsp; nbsp; nbsp; br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;db 'MINZ' br / _run_seg@nbsp; nbsp; nbsp; nbsp; nbsp; db ' k' br / _run_src@nbsp; nbsp; nbsp; nbsp; nbsp; db 'ernel o' br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;db 'verlay ' br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;db 'by Cho JaeHyuk' br / _TEXTnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; ends br / _OVERLAYnbsp; nbsp; nbsp; nbsp; nbsp; nbsp;segment para public use16 'OVERLAY' br / _run_data@nbsp; nbsp; nbsp; nbsp; nbsp;label bytenbsp; nbsp; nbsp; br / _OVERLAYnbsp; nbsp; nbsp; nbsp; nbsp; nbsp;ends br / nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;end _start@ br / br / ; End of source /td/tr/tbody/table
크리에이티브 커먼즈 라이센스
Creative Commons License
2007/05/07 11:05 2007/05/07 11:05
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/64

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/64

트랙백 주소 :: http://blog.minzkn.com/trackback/64

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/64

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/64

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/64
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/64