You are on page 1of 11

¾È³çÇϼ¼¿ä.

20ȸ °ÁÂÀÔ´Ï´Ù.

2-2 µð¹ö±×ÀÇ »ç¿ë


µð¹ö±×´Â º¸ÆíÀûÀ¸—Î ½±°Ô ¸¹ÀÌ »ç¿ëÇÏ´Â ÇÁ—αח¥ÀÌ´Ù.
Æ‾È÷ DOS¿¡¼ ±âº»ÀûÀ¸—Î Á¦°øµÈ´Ù´Â°Ô »ç¿ëÀÚ¸¦ ¸¹ÀÌ È®º¸ÇÑ ÀÌÀ‾ÀÏ °ÍÀÌ´Ù.
2-2-1 µµ¿ò¸»ÀÌ´Ù.
Runs Debug, a program testing and editing tool.
(½ÇÇà µð¹ö°Å,ÇÁ—αח¥ÀÇ ±â´ÉÁ¡°Ë¹× ¼öÁ¤ ÇÁ—Î ±×—¥)
DEBUG [[drive:][path]filename [testfile-parameters]]
[drive:][path]filename Specifies the file you want to test.
(´ç½ÅÀÌ Á¡°ËÇÏ°íÀÚ ÇÏ´Â °ÍÀ» ¾²´Â °ÍÀÓ)
testfile-parameters Specifies command-line information requir-
ed by the file you want to test.
(µð¹ö°ÅÀÇ ÄÚ¸àµå ¶óÀο¡¼ ½ÇÇàÀ» ¹Ù—Î ÇÒ
ÄÚ¸àµåÀÇ ÀԗÂ)
After Debug starts, type ? to display a list of debugging commands.
(µð¹ö°Å°¡ ½ÇÇàÇÑ ÈÄ,'?'¶ó°í Ä¡¸é µµ¿ò¸»ÀÌ È¸é¿¡ ³ªÅ¸³À´Ï´Ù.)
<µð¹ö°Å ÄÚ¸àµå ¾µ¼ö ÀÖ´Â ¸í—ɾîÀÇ Çؼ³>
assemble A [address]
¾î¼Àºí ÁÖ¼Ò
;- ¾î¼Àºí¾î¸¦ Á÷Á¢Ä¡¸é ÇØ´ç ¹øÁö¿¡ ¹ø¿ªÀÌ µÇ¾î¼ ¹Ù—Î µé¾î
°£´Ù.(ÇØ´ç ¾ð¾î´Â 8086/8087/8088¸¸ÀÓ)
compare C range address
ºñ±³ ºñ±³°ª ÁÖ¼Ò
;- ºñ±³°ªÀ» °¡Áö°í ±×°ªÀÌ ³ª¿Ã¶§ ±îÁö ºñ±³¸¦ ÇÏ°í °°Àº °ª
ÀÌ ÀÖÀ¸¸é ¸ØÃß°í ¾îµå—¹½º¸¦ ȍ¸é¿¡ ³ªÅ¸³½´Ù.½ÃÀÛÀº ÁöÁ¤
À» ÇØÁÖ´Â ÁÖ¼ÒºÎÅÍ ½ÃÀÛÀ» ÇÑ´Ù.
dump D [range]
´ýÇÁ ¼ýÀÚ
;- ¼ýÀÚ¸¸ÅÀÇ HEXÄڵ带 ȍ¸é¿¡ ³ªÅ¸³½´Ù.
enter E address [list]
¿£ÅÍ ¾îµå—¡½º ¸ñ—Ï
;- ÁöÁ¤µÈ ÁÖ¼Ò¿¡¼ ½ÃÀÛÀ» ÇÏ´Â ¸Þ¸ð¸®ÀÇ ºÎºÐÀ» ÁöÁ¤µÈ °ªÀ¸
—Î ä¿ó´Ï´Ù.
fill F range list
ä¿ì±â Å©±â ä¿ï°ª(º¹¼ö Çã¿ë)
;- ä¿ï°ªÀ» Å©±â ¸¸Å ä¿î´Ù.
go G [=address] [addresses]
½ÇÇà ÁÖ¼Ò Áß´ÜÁ¡
;- ÇöÁ¦ ¸Þ¸ð¸®¿¡ ÀÖ´Â ÇÁ—αח¥À» ½ÌÇàÇÕ´Ï´Ù.
hex H value1 value2
16Áø¼ö ¼öÄ¡1 ¼öÄ¡2
;- ÁöÁ¤ÇÑ µÎ ¸Å°³º‾¼ö »çÀÌ¿¡ 16Áø¼ö ¿¬»êÀ» ¼öÇàÇÕ´Ï´Ù.
input I port
Àԗ Æ÷Æ®
;- ÁöÁ¤ÇÑ Æ÷Æ®¿¡¼ ÇѹÙÀÌÆ®¸¦ ÀÐ°í ³ªÅ¸³À´Ï´Ù.
load L [address] [drive] [firstsector] [number]
Àоîµå¸®±â ÁÖ¼Ò µå¶óÀÌºê ½ÃÀÛÀ§Ä¡ ¼öÄ¡
;- ¸Þ¸ð¸®—Î ÆÄÀÏ ¶Ç´Â µð½ºÅ© ¼½Å͵éÀ» ÀоîµéÀÔ´Ï´Ù.
move M range address
À̵¿ ¹üÀ§ ÁÖ¼Ò
;- ¸Þ¸ð¸®ÀÇ ºí—°À» À̵¿ÇÕ´Ï´Ù.
name N [pathname] [arglist]
À̸§ °æ—Î ÆÄÀÏÀ̸§
;- L(Àоîµå¸®±â) ¶Ç´Â W(¾²±â) ¸í—É¿¡ ´ëÇÑ ½ÇÇà ÆÄÀÏÀ̸§À»
ÁöÁ¤Çϰųª ¼öÁ¤µÉ ½ÇÇà ÆÄÀÏ¿¡ ¸Å°³ º‾¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
output O port byte
Ãâ— Æ÷Æ® ¹ÙÀÌÆ®°ª
;- Ãâ— Æ÷Æ®¿¡ ÇÑ ¹ÙÀÌÆ®ÀÇ °ªÀ» º¸³À´Ï´Ù.
proceed P [=address] [number]
¼öÇà ÁÖ¼Ò ¼öÄ¡
;- —çÇÁ,¹Ýº¹µÈ ¹®ÀÚ¿ ¸í—É,¼ÒÇÁÆ®¿þ¾î ÀÎÅ͗´Æ® ¶Ç´Â ¸ñÀû
´Þ¼ºÀ» À§ÇÑ ¼ºê—çƾ(Subroutine) È£ÃâÀ» ¼öÇàÇϰųª ±×¿Ü
ÀÇ ´Ù¸¥ ¸í—ÉÀ» ÃßÀûÀ» ÇÕ´Ï´Ù.
quit Q
Á¾—á
;- ÇöÀç ÀÛ¾÷ ÆÄÀÏÀ» ÀúÀåÇÏÁö ¾Ê°í µð¹ö±×¸¦ ³¡³À´Ï´Ù.
register R [register]
—¹Áö½ºÅÍ —¹Áö½ºÅÍ
;- Áß¾Óó¸®ÀåÄ¡(CPU)¿¡¼ Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ —¹Áö½ºÅÍ ³»
¿ëÀ» ³ªÅ¸³»°Å³ª ¹Ù²ß´Ï´Ù.
search S range list
ã±â ¹üÀ§ ¸ñ—Ï
;- Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ ¹ÙÀÌÆ® °ªÀÇ ¸ð¾çÀ» ÁöÁ¤µÈ ¹üÀ§¿¡
¼ ã½À´Ï´Ù.
trace T [=address] [value]
ÃßÀû ÁÖ¼Ò ¼öÄ¡
;- ÇÑ ¸í—ÉÀ» ¼öÇàÇÏ°í ¸ðµç —¹Áö½ºÅÍ,Çס±×,Çص¶µÈ ¸í—ÉÀ»
³ªÅ¸³À´Ï´Ù.
unassemble U [range]
¿ª¾î¼Àºí ¹üÀ§
;- ¹ÙÀÌÆ®¸¦ ¿ª¾î¼Àºí(Disassemble)ÇÏ°í,ÁÖ¼Ò¿Í ¹ÙÀÌÆ® °ªÀ»
Æ÷ÇÔÇÏ¿© ±×¿¡ ´ëÀÀµÇ´Â ¿ø—¡ÀÇ ¹®ÀåÀ» ³ªÅ¸³À´Ï´Ù.¿ª¾î¼Àºí
ÄÚµå´Â ¾î¼ÀºíµÈ ÆÄÀÏÀÇ ¸ñ—Ïó—³ º¸ÀÔ´Ï´Ù.
write W [address] [drive] [firstsector] [number]
¾²±â ÁÖ¼Ò µå¶óÀÌºê ½ÃÀÛÀ§Ä¡ ¼öÄ¡
;- µð½ºÅ©¿¡ ¼öÁ¤µÈ ÆÄÀÏÀ» ±â—ÏÇÕ´Ï´Ù.(ÀÌ ¸í—ɾî´Â ¸Å¿ì À§
Ç輺À» °¡Áö°í ÀÖ´Â °ÍÀ¸—Î »ç¿ë¿¡ ÁÖÀǸ¦ ¿äÇÕ´Ï´Ù.)

2-2-2 µð¹ö±×(DEBUG.EXE)ÀÇ »ç¿ë¿¹ÀÌ´Ù.


µð¹ö±×ÀÇ ¸í—ɾî¿Í Àû¿ë ¿¹.
<ASSEMBLE>
¸í—ɾî : ASSEMBLE
±â´É : 8086/8087/8088 ÇÁ—μ¼¼ÀÇ ´Ï¸ð´Ð Äڵ带 Á÷Á¢
±â¾ïÀåÄ¡—Î ¹ø¿ªÇØ ³Ö´Â´Ù.
¹®¹ý : A <Adress>
¹®¹ýÀû ¿¡—‾°¡ ¹ß°ßµÇ¸é "^ Error"¶ó°í Ç¥½ÃµÇ°í ÇöÀçÀÇ ¾î¼Àºí¸®
¹øÁö°¡ ´Ù½Ã ³ªÅ¸³´Ù. ¸ðµç ¼öÄ¡´Â 16Áø¼ö¿©¾ß ÇÏ¸ç ³× ÀÚ¸®±îÁö
Çã¿ëµÈ´Ù. Á¢µÎ ´Ï¸ð´ÐÀº ±×°ÍÀÌ °¡¸®Å°´Â OpcodeÀÇ ¾Õ¿¡ ³ªÅ¸³ª
ÀÖ¾î¾ß ÇÏÁö¸¸ ´Ù¸¥ ÁÙ¿¡ µé¾î ÀÖÀ» ¼öµµ ÀÖ´Ù.
¼¼±×¸ÕÆ®¸¦ º‾°æ½ÃÅ°´Â ´Ï¸ð´ÐÀº CS: DS: ES: SS: ÀÌ°í Far returnÀ»
³ªÅ¸³»´Â ´Ï¸ð´ÐÀº RETFÀÌ´Ù. ¶ÇÇÑ ½ºÆ®¸µ ó¸®¿ë ´Ï¸ð´ÐÀº ½ºÆ®¸µ
ÀÇ ±æÀ̸¦ ¹Ýµå½Ã ¸í½ÃÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ¿öµå ½ºÆ®¸µÀ» ¿Å±æ
¶§´Â "MOVSW" Byte ½ºÆ®¸µÀ» ¿Å±æ ¶§´Â "MOVSB"¸¦ »ç¿ëÇÑ´Ù.
¾î¼Àºí—‾´Â SHORT, NEAR, FAR, JUMP¿Í CALL¸í—ÉÀ» ¸¸³ª¸é ÁöÁ¤ÇÏ´Â
°÷ÀÌ ¾îµò°¡¿¡ µû¶ó ±× °Å¸®¸¦ ÀÚµ¿ÀûÀ¸—Î °è»êÇѴµ¥ NEAR³ª FAR
¿Í °°Àº Á¢µÎ¾î¸¦ ½á¼ º‾°æ½Ãų ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é,
0100:0100 JMP 502 ; 2byte short jump
0100:0102 JMPNEAR 505(JMP NEAR 505) ; 3byte near jump
0100:0105 JMPFAR 50A (JMP FAR 50A) ; 5byte far jump
NEAR´Â NE—Î ÁÙ¿© ¾µ ¼ö ÀÖÀ¸³ª, FAR´Â ÁÙ¿© ¾µ ¼ö ¾ø´Ù.
DEBUG ÇÁ—αח¥ÀÌ ¿ÀÆۗ£µå°¡ ÁöÁ¤ÇÏ´Â °÷ÀÇ ±æÀÌ°¡ ¿öµåÀÎÁö BYTE
ÀÎÁö ¾Ë ¼ö ¾øÀ» ¶§´Â "WORD PTR"À̳ª "BYTE PTR"°ú °°Àº Á¢µÎ¾î¸¦
»ç¿ëÇؼ ¸í½ÃÇØ Áà¾ßÇÑ´Ù. ¿¹¸¦ µé¸é,
¿¹: NEG BYTE PTR [128]
DEC WO[SI}
¿©±â¼ "WORD PTR" Àº "WO"—Î "BYTE PTR"Àº "BY"—Î ÁÙ¿© ¾µ ¼ö
ÀÖ´Ù. (Debug¿¡¼¸¸ °¡´É ÇÕ´Ï´Ù.)
¶ÇÇÑ ¿ÀÆۗ£µå°¡ ±â¾ï ÀåÄ¡¸¦ °¡¸®Å°°í ÀÖ´ÂÁö ¶Ç´Â Àڗá
ÀÚ½ÅÀÎÁö ¾Ë ¼ö ¾øÀ» ¶§´Â º¸Åë »ç¿ëÇÏ´ø ¹æ½Ä¿¡ µû¶ó °ýÈ£¾È¿¡
ÀÖ´Â °ÍÀº ±â¾ïÀåÄ¡ ÁöÁ¤À¸—Î, ±×—¸Áö ¾ÊÀº °ÍÀº Àڗá ÀÚ½ÅÀ¸—Î
±¸ºÐÇÑ´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½°ú °°´Ù.
¿¹: mov ax, 19 ; 19¸¦ AX —¹Áö½ºÅÍ¿¡ ¿Å±ä´Ù.
mov ax, [19] ; ¾ïÀå¼Ò DS:0019¿¡ À§Ä¡ÇÏ´Â ¿öµåÇü
ÀڗḦ AX¿¡ ¿Å±ä´Ù.
ASSEMBLE ¸í—ɾî¿Í ÇÔ²² µÎ °³ÀÇ ÀÇ»ç ¸í—ɾ ¾µ ¼ö Àִµ¥,
DB ¸í—ɾî´Â byte °ªÀ» Á÷Á¢ ±â¾ï ÀåÄ¡¿¡´Ù ³ÖÀ» ¶§ ¾²ÀÌ°í DW
¸í—ɾî´Â ¿öµå °ªÀ» ³ÖÀ» ¶§ ¾²ÀδÙ. ¿¹¸¦ µé¸é,
¿¹: DB 1, 9, 9, 4, 'Jin Seong Park'
DW 1111, 2222, 3333, "BACH"
Assemble ¸í—ɾî´Â ¸ðµç —¹Áö½ºÅÍ °£Á¢ ¸í—ÉÀ» Á¦°øÇÏ´Â µ¥
¾Æ—¡¿Í °°ÀÌ ¾²ÀδÙ.
add bx, 34[BP+2]
pop [bp+di]
push [bx]
¶ÇÇÑ ¸ðµç ¸í—ɾ ´ëÇؼ ±× µ¿ÀǾ ÇÔ²² ¾µ ¼ö Àִµ¥ ´ÙÀ½¿¡
°°´Ù.
loopz 100
loope 100
ja 333
jnbe 333
8087 ÇÁ—μ¼¼¿ë ¸í—ɾ ¾²—Á¸é, Wait³ª FWait¿Í °°Àº Á¢µÎ ¸í—ÉÀ»
µå½Ã ¸í½ÃÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é,
fwait fadd st, st(3) ; This line will assemble
; an FWAIT prefix
ld tbyte ptr[bx] ; This line will not assemble

<COMPARE>
¸í—ɾî : COMPARE
±â ´É : <Range>¿¡ ÀÇÇؼ ÁöÁ¤µÈ ±â¾ï ÀåÄ¡ÀÇ ÀϺκÐÀ»
<Address>¿¡¼ºÎÅÍ ½ÃÀ۵Ǵ °°Àº Å©±âÀÇ ºÎºÐ°ú
ºñ±³ÇÑ´Ù.
¹® ¹ý : C <Range> <Address>
µÎ ºÎºÐÀÌ °°À¸¸é ¾Æ¹«°Íµµ Ç¥½ÃµÇÁö ¾Ê°í, Ʋ¸®´Â ºÎºÐÀÌ ÀÖÀ»
°æ¿ì´Â ¾Æ—¡¿Í °°Àº Çü½ÄÀ¸—Î ³»¿ëÀ» º¸¿©ÁØ´Ù.
<Address1> <Byte1> <Byte2> <Address2>
¿¹: ¾Æ—¡ÀÇ µÎ ¸í—ɾî´Â °°Àº °á°ú¸¦ º¸À̴µ¥ µÑ ´Ù 100¿¡¼
1FF±îÁöÀÇ ±â¾ïÀåÄ¡»óÀÇ ºí—°°ú 300¿¡¼ 3FF±îÁöÀÇ ºí—°À»
ºñ±³Ç϶ó´Â ¸í—ɾîÀÌ´Ù.
C100, 1FF 300 or C100L100 300

<DUMP>
¸í—ɾî : DUMP
±â ´É : <Range>¿¡ ÀÇÇؼ ÁöÁ¤µÈ ±â¾ïÀåÄ¡»óÀÇ Æ‾Á¤ ºÎºÐÀÇ
³»¿ëÀ» Ç¥½ÃÇÑ´Ù.
¹® ¹ý : D <Range>
<Range>°¡ ÁÖ¾îÁ® ÀÖÀ¸¸é ±× ºÎºÐÀÇ ³»¿ëÀÌ Ç¥½ÃµÇ°í, ÁÖ¾îÁ® ÀÖÁö
¾ÊÀ¸¸é ÀÌ Àü¿¡ DUMP ¸í—ɾ ÀÇÇؼ Ç¥½ÃµÇ¾ú´ø °÷ ´ÙÀ½ (ds:100)
¿¡¼ºÎÅÍ 128byte°¡ Ç¥ »ç¿ëÀÚ ½ºÅà Æ÷ÀÎÅÍ´Â ÀÌ ¸í—ɾîÀÇ
󸮸¦ À§ÇØ Àû¾îµµ 6byte¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ°Ô µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.
ÀÌ GO ¸í—ɾî´Â iret ¸í—ÉÀ» ½á¼ Å×½ºÆ®ÇÏ´Â ÇÁ—αח¥À¸—Î jumpÇÏ°Ô
µÈ´Ù. »ç¿ëÀÚ ½ºÅà Æ÷ÀÎÅÍ°¡ Á¤ÇØÁö°í »ç¿ëÀÚ Ç×¹±×, ÄÚµå ¼¼±×¸ÕÆ®
—¹Áö½ºÅÍ, ÀνºÆ®—°¼Ç Æ÷ÀÎÅ͵îÀÌ »ç¿ëÀÚ ½ºÅÿ¡ ÀúÀåµÈ´Ù.
µû¶ó¼ »ç¿ëÀÚ ½ºÅÃÀÌ À߸ø µÇ¾î °Å³ª ³Ê¹« Á¼À¸¸é ¿ÀÆۗ¹ÀÌÆà ½Ã½ºÅÛ
ÀÌ ¸Á°¡Áø´Ù. ÀÎÅ͗´Æ® ÄÚµå(0CCH)°¡ °¢ ÁßÁöÁ¡¿¡ »ðÀÔµÇ°Ô µÇ´Âµ¥
ÀÌ ÁßÁöÁ¡À» ³ªÅ¸³»´Â ¸í—ÉÀ» ¼öÇàÇÏ°Ô µÇ¸é, ¸ðµç ÁßÁöÁ¡ÀÌ ´Ù½Ã ¿ø—¡ÀÇ
¸í—ÉÀ¸—Î È‾¿øµÈ´Ù. ±×—‾³ª ÁßÁöÁ¡¿¡¼ ³¡³ªÁö ¾ÊÀ¸¸é ¿ø—¡ÀÇ ¸í—ÉÀ¸—Î
È‾¿øµÇÁö ¾Ê´Â´Ù.
¿¹: ´ÙÀ½°ú °°ÀÌ ÀԗÂÇϸé
GCS:7777
ÇöÀç ±â¾ïÀå¼Ò³»¿¡ ÀÖ´Â ÇÁ—αח¥ÀÌ CS¼¼±×¸ÕÆ®ÀÇ 7777h—κÎÅÍ ¼öÇàÀ»
½ÃÀÛÇÏ°Ô µÇ¸ç ¼öÇàÀÌ ³¡³ª¸é —¡Áö½ºÅÍ¿Í Ç×¹±×ÀÇ ³»¿ëÀÌ Ç¥½ÃµÈ´Ù.
ÁßÁöÁ¡À» ¸¸³ª¼ ÀÏ´Ü ÇÁ—αח¥ ½ÇÇàÀÌ Á¤ÁöµÈ ÈÄ ´Ù½Ã GO ¸í—ɾ
ÀԗÂÇÏ¸é ´Ù½Ã ÁßÁöÁ¡¿¡¼ ºÎÅÍ ½ÇÇàÀ» ÇÑ´Ù.

DOSÀÇ DEBUG.EXE¿¡ ´ëÇØ ¿ÏÁÔÈ÷ öÀúÈ÷ ÇغÎÇÕ´Ï´Ù.


ÀÏüÀÇ Áú¹®Àº »ç¾çÇÕ´Ï´Ù.

<HEX>
¸í—ɾî : HEX
±â ´É : ÁÖ¾îÁø µÎ ÆĶó¹ÌÅ͸¦ °¡Áö°í 16Áø¼ö¸¦ °è»êÇÑ´Ù.
¹® ¹ý : H <Value> <Value>
¸ÕÀú µÎ ÆĶó¹ÌÅ͸¦ ´õÇÏ¿© ±× ÇÕÀ» Ç¥½ÃÇÏ°í ±× ´ÙÀ½ ù ¹ø°
ÆĶó¹ÌÅÍ¿¡¼ µÎ ¹ø° °ÍÀ» »« ÈÄ ±× Â÷¸¦ °°Àº ÁÙ¿¡ Ç¥½ÃÇÑ´Ù.
¿¹: ¾Æ—¡¿Í °°ÀÌ ÀԗÂÇϸé
H 0 1
°á°ú°ª --> 0001 FFFF
<INPUT>
¸í—ɾî : INPUT
±â ´É : <Value>¿¡ ÀÇÇؼ ÁöÁ¤µÈ Æ÷Æ®—κÎÅÍ 1byte¸¦ ÀÐ¾î µé¿©
±× °ªÀ» Ç¥½ÃÇÑ´Ù.
¹® ¹ý : I <Value>
Æ÷Æ®ÀÇ ¹øÁö—δ 16Bit¼ýÀÚ¸¦ ¾´´Ù.
¿¹: ¾Æ—¡¿Í °°ÀÌ ÀԗÂÇϸé
I2F8
ÁöÁ¤µÈ Æ÷Æ®¿¡ ÀÖ´Â µ¥ÀÌŸ °ªÀÌ 55h¶ó Çϸé, Debug ÇÁ—αח¥Àº
ÀÌ °ªÀ» ¹Þ¾ÆµéÀÌ°í
55
¶ó°í Ç¥½ÃÇÑ´Ù.
<LOAD>
¸í—ɾî : LOAD
±â ´É : ÆÄÀÏÀ» ÀÐ¾î µé¿© ±â¾ï Àå¼Ò³»¿¡ —εåÇÑ´Ù.
¹® ¹ý : L <address> [<Drive> <Record> <Record>]
BX:CX¿¡ ÀÐ¾î µéÀÏ ÆÄÀÏÀÇ Byte ¼ö¸¦ ³Ö´Â´Ù. ÆÄÀϸíÀº Debug
ÇÁ—αח¥À» ºÒ—‾ ¼öÇà½ÃÅ°´Â ¸í—ɾ Ä¥ ¶§Ã³—³ Ç¥½ÃÇϰųª
N ¸í—ɾ ½á¼ Ç¥½ÃÇÒ ¼ö Àִµ¥, ÀÌ µÎ ¹æ¹ý ¸ðµÎ CS:5C¿¡ ÀÖ´Â
CONTROL ºí—°¿¡¼ ¾²´Â Çü½Ä¿¡ µû¶ó ÆÄÀϸíÀ» ÁöÁ¤ÇØ ÁØ´Ù.
ÆĶó¹ÌÅÍ ¾øÀÌ L ¸í—ɾ Ä¡°Ô µÇ¸é CS:0100¿¡¼ºÎÅÍ ÆÄÀÏÀÇ ³»¿ëÀÌ
—εåµÇ¸ç BX:CX¿¡´Â ÀÐ¾î µéÀÎ Byte ¼ö°¡ ³Ö¾îÁø´Ù. <Address>ÆĶó¹ÌÅÍ
´Â ÆÄÀÏÀ» —εåÇÏ´Â ½ÃÀÛ¹øÁö¸¦ ÁöÁ¤Çϸç, <Drive> <Record> <Record>
°¡ ÁÖ¾îÁö¸ç ÆÄÀÏÀÌ ¾Æ´Ï¶ó µð½ºÅ©»óÀÇ ¼½ÅÍ´ÜÀ§—Î —ε尡 ¼öÇàµÈ´Ù.
<Drive>ÀÇ ÁöÁ¤Àº 0=A; 1=B; 2=C¿Í °°ÀÌ ³ª°¡¸ç ù ¹ø° <Record>
ÆĶó¹ÌÅ͗ΠÁöÁ¤µÈ ¼½ÅÍ¿¡¼ºÎÅÍ µÎ ¹ø° <Record> ÆĶó¹ÌÅ͗ΠÁöÁ¤µÈ
°¹¼ö ¸¸ÅÀÇ ¼½ÅÍ°¡ —εåµÈ´Ù.
¿¹: ¾Æ—¡¿Í °°ÀÌ DEBUG ÇÁ—αח¥À» ½ÃÀÛÇß´Ù°í °¡Á¤Çϸé
C:\debug
-nfile.com
ÀÌÁ¦ file.comÀ̶õ ÆÄÀÏÀ» —εå½ÃÅ°—Á¸é
-L
À̶ó°í ÇÏ¸é µÈ´Ù. ±×—‾¸é DEBUG ÇÁ—αח¥¿¡ ÀÇÇؼ —ε尡
¼öÇàµÇ°í ´Ù½Ã DEBUG ÇÁ—ÒÇÁÆ®°¡("-")°¡ ³ªÅ¸³´Ù.
¾î¶² ÆÄÀÏÀÇ ÀϺκÐÀ̳ª Æ‾Á¤ —¹Äڵ常À» —εåÇÏ°í ½ÍÀ» ¶§ÀÇ
¿¹¸¦ µé¸é,
L0BBA:0100 0 0F FF
(Address) (Drive) (óÀ½ ÀÐÀ» ¼½ÅÍ) (255°³ÀÇ —εåÇÒ ¼½ÅÍ)
DEBUG¿¡ ÀÇÇØ 15¹ø(0Fh) —¹Äڵ忡¼ ½ÃÀÛÇؼ 255°³(FFh)ÀÇ
—¹Äڵ尡 ¹øÁö 0BBA:0100¿¡¼ºÎÅÍ —ε尡 ³¡³ª¸é ´Ù½Ã DEBUG
ÇÁ—ÒÇÁÆ®°¡ ³ªÅ¸³´Ù. ¸¸ÀÏ ÁÖ¾îÁø ÆÄÀÏÀÌ .exe È®Àå¸íÀ» °¡Áø
ÆÄÀÏÀ̶ó¸é ±× ÆÄÀÏÀÇ Çì´õ¿¡ ¸í½ÃµÈ —Îµå ¹øÁö¿¡ RelocationµÉ
°ÍÀÌ°í <Address> ÆĶó¹ÌÅÍ°¡ ÀÖ´Ù¸é ¹«½ÃµÈ´Ù. ÆÄÀÏÀÇ Çì´õ
ÀÚüµµ —εåµÉ ¶¼´Â ºüÁö±â ¶§¹®¿¡ ½ÇÁ¦ ÆÄÀÏÀÇ Å©±â¿Í ±â¾ï
Àå¼Ò¿¡ —εåµÈ Å©±â¿Í´Â ´Ù¸£´Ù.
¶ÇÇÑ ÁÖ¾îÁø ÆÄÀÏÀÌ .hex ÆÄÀÏÀ϶§¿¡´Â ±× ÆÄÀÏÀÇ ¸í½ÃµÈ ¹øÁö¿¡
—εåµÇ´Âµ¥ <Address> ÆĶó¹ÌÅÍ°¡ ÀÖ´Â °æ¿ì´Â ±× °ªÀ» ´õÇؼ
—εåÇÒ ¹øÁö¸¦ °áÁ¤ÇÑ´Ù.
¼½Å͸¦ Á÷Á¢ ÀÐ¾î µé¿© ¿¡µðÆ®ÇÒ Á¤µµÀÇ ½Ç—ÂÀº µÇÁö ¾ÊÀº °ü°è
—Î ´õ ÀÌ»óÀÇ Ãß°¡ ¼³¸íÀ» ¸ø µå¸®°Ú±º¿ä.
´ë ºÎºÐ ÀÌ°ÍÀº ±×¸® ÇÊ¿äÇÏÁö ¾ÊÀ» °Í °°±º¿ä.
<MOVE>
¸í—ɾî : MOVE
±â ´É : <Range>¿¡ ÀÇÇØ ÁÖ¾îÁø ±â¾ï Àå¼ÒÀÇ ÀϺκÐÀ» <Address>
—Î ºÎÅÍ ½ÃÀ۵Ǵ °÷¿¡ ¿Å±ä´Ù.
¹® ¹ý : M <Range> <Address>
¿Å±ä Àå¼Ò¿Í ¿Å°ÜÁö´Â Àå¼Ò°¡ ÁßøµÇ´Â °æ¿ì¿¡µµ µ¥ÀÌŸ°¡ ¼Õ½ÇµÇ´Â
ÀϾøÀÌ À̵¿ÀÌ ÁøÇàµÇ´Âµ¥ ÁßøµÇ¾î ¼Õ½ÇµÉ °¡´É¼ºÀÌ ÀÖ´Â °÷ºÎÅÍ ¸ÕÀú
À̵¿µÈ´Ù. <Range> ¿Í <Address>°¡ ÀÛÀº ¹øÁö¿¡¼ Å« ¹øÁö—Î µÇ¾î
ÀÖÀ¸¸é ºí—°ÀÇ µÞºÎºÐºÎÅÍ À̵¿ÀÌ ÁøÇàµÇ°í ¹Ý´ë—Î Å« ¹øÁö¿¡¼ ÀÛÀº
¹øÁö—Î µÇ¾î ÀÖÀ¸¸é ¾ÕÂÊ¿¡¼ ºÎÅÍ À̵¿ÀÌ ÁøÇàµÈ´Ù.
ÀÌ M ¸í—ɾ ¼öÇàÇÒ ¶§ ¿Å°ÜÁö´Â ºí—°¿¡´Â »õ—Î¿î µ¥ÀÌÅ͸¦ ½á ³Ö´Â°Í
ÀÌ ¾Æ´Ï¹Ç—Î ±×´ë—Î ³²¾ÆÀÖ°Ô µÈ´Ù. µû¶ó¼ ½ÇÁ¦ÀûÀ¸—Î ÇÑ ºÎºÐÀÇ ³»¿ëÀ»
´Ù¸¥ ºÎºÐ¿¡ º¹»çÇØ ³Ö´Â °Í°ú °°°Ô µÈ´Ù. ±×—¡¼ À̵¿ÀÇ ¼ø¼°¡ Áß¿äÇÑ
°ÍÀÌ´Ù.
¿¹: ¾Æ—¡¿Í °°ÀÌ ÀԗÂÇϸé
MCS:0100 110 CS:500
DEBUG´Â CS:0100À» CS:0510¿¡, CS:10F¸¦ CS:50F¿¡ ÇÏ´Â ½ÄÀ¸—Î µ¥ÀÌÅ͸¦
º¹»çÇØ ³ª°£´Ù. À̗‾ÇÑ À̵¿ÀÇ °á°ú¸¦ º¸°í ½ÍÀ¸¸é M ¸í—É¿¡ »ç¿ëÇÑ
<Address>ÆĶó¹ÌÅ͸¦ °¡Áö°í D ¸í—ɾ ¼öÇàÇÏ¸é µÈ´Ù.

<NAME>
¸í—ɾî : NAME
±â ´É : ÆÄÀϸíÀ» ÁöÁ¤ÇÑ´Ù.
¹® ¹ý : N <Filename> [<Filename>........]]
N ¸í—ɾî´Â µÎ °¡Áö ±â´ÉÀ» ¼öÇàÇÑ´Ù. ù°´Â ´ÙÀ½¿¡ ¿Ã LOAD³ª
WRITE ¸í—ɾ¼ »ç¿ëµÉ ÆÄÀÏÀÇ À̸§À» ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù.
±×—¡¼ ÆÄÀϸíÀ» ÁöÁ¤ÇØ ³õÁö ¾Ê°í DEBUG¸¦ ½ÃÀÛÇß´õ¶óµµ µÚ¿¡ ¿øÇÏ´Â
ÆÄÀÏÀ» ¾µ ¼ö ÀÖ°è µÈ´Ù. µÑ°´Â ÇöÀç µð¹ö±ëÇÏ°í ÀÖ´Â ÆÄÀÏ (ÇÁ—Î
±×—¥)¿¡ ÆĶó¹ÌÅ͗Π¾²ÀÌ´Â ÆÄÀϸíÀ» ÁöÁ¤ÇÏ´Â °ÍÀí—ɾ ½ÇÇàÇÑ´Ù¸é ÇöÀç

µð¹ö±ëÇÏ°í ÀÖ´Â ÆÄÀÏ qedit.exe°¡ file2.dat¶ó´Â À̸§À¸—Î


ÀúÀåµÈ´Ù. ÀÌ¿Í °°Àº ¶æÇÏÁö ¾ÊÀº °á°ú¸¦ ÇÇÇϗÁ¸é N ¸í—ɾî
¸¦ ¹Ýµå½Ã LOAD³ª WRITE ¸í—ɾî Á÷Àü¿¡ »ç¿ëÇϵµ—Ï ÇØ¾ß ÇÑ´Ù.
N ¸í—ɾ »ç¿ëÇÏ¸é ³× ±ºµ¥ÀÇ ±â¾ï Àå¼Ò°¡ ¿µÇâÀ» ¹Þ°Ô µÇ´Âµ¥
´ÙÀ½°ú °°´Ù.
CS:5C ù ¹ø° ÆÄÀÏÀÇ FCB
CS:6C µÎ ¹ø° ÆÄÀÏÀÇ FCB
CS:80 ¸í—ɾî—Î ÁÖ¾îÁø ¹®ÀÚ¿ÀÇ ¼ö
CS:81 ¸í—ɾî—Î ÁÖ¾îÁø ¸ðµç ¹®ÀÚ¿.
N ¸í—ɾ ù ¹ø° ÆĶó¹ÌÅ͗ΠÁÖ¾îÁø ÆÄÀÏÀÇ FCB(File Control
Block)°¡ CS:5C¿¡ ¸¸µé¾îÁö°í, µÎ ¹ø° ÆĶó¹ÌÅÍ°¡ ÁÖ¾îÁ³À¸¸é ±×
ÆÄÀÏÀÇ FCB°¡ CS:6C¿¡ ¸¸µé¾îÁø´Ù. ±×¸®°í N ¸í—ɾ Ä¥ ¶§ ÀԗÂÇÑ
¹®ÀÚ ¼ö(Á¦ÀÏ ¾Õ¿¡ ÀÖ´Â N ¸í—ɾî Á¦¿Ü)°¡ CS:80¿¡ ±â—ÏµÇ¸ç ±×¶§
ÀԗÂÇÑ ½ÇÁ¦ÀÇ ¹®ÀÚµéÀÌ CS:81¿¡¼ºÎÅÍ ½ÃÀÛÇؼ Â÷—Ê—Î ÀúÀåµÈ´Ù.
(¿ª½Ã ÀÌ °æ¿ì¿¡µµ N ¸í—ɾî Á¦¿Ü)
¿¹: DEBUG qedit.exe
-Ntest.txt
-G
-
À§ÀÇ °æ¿ì GO ¸í—ɾî´Â ±â¾ï Àå¼Ò¿¡ ÀÖ´Â ÆÄÀÏÀ» ´ÙÀ½°ú °°Àº
¸í—ɾ ÁÖ¾îÁø°Íó—³ ½ÇÇàµÈ´Ù.
qedit.exe test.txt
À§¿Í °°ÀÌ Çϸé DEBUG ÇÁ—αח¥Àº 4F°ªÀ» Ãâ— Æ÷Æ® 2F8—Î
º¸³½´Ù.
<QUIT>
¸í—ɾî : QUIT
±â ´É : DEBUG ÇÁ—αח¥ÀÇ ¼öÇàÀ» Á¾—á
¹® ¹ý : Q
Q ¸í—ɾî´Â ÆĶó¹ÌÅ͸¦ ÇÏÁö ¾Ê´Â´Ù. ÀÌ ¸í—ɾ´Â Àç
µð¹ö±ëÇÏ°í ÀÖ´ø ÇÁ—αח¥À» µð½ºÅ©¿¡ ÀúÀåÇÏÁö ¾Ê°í ±×´ë—Î DEBUG
ÇÁ—αח¥ÀÇ ¼öÇàÀ» ³¡³½ ÈÄ DOS—Î µ¹¾Æ°£´Ù.

<REGISTER>
¸í—ɾî : REGISTER
±â ´É : ÇÑ °³ ÀÌ»óÀÇ CPU —¹Áö½ºÅÍÀÇ ³»¿ëÀ» Ç¥½ÃÇÑ´Ù.
¹® ¹ý : R <Register_name>
<Register_name>ÀÌ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é —¹Áö½ºÅÍ save¿µ¿ªÀÇ ³»¿ëÀÌ
´ýÇÁµÇ°í, ¸ðµç —¹Áö½ºÅÍ¿Í Ç×¹±×ÀÇ ³»¿ëÀÌ Ç¥½ÃµÈ´Ù.
ÇÑÆí <Register_name>À» ÁÖ°Ô µÇ¸é ±× —¹Áö½ºÅÍÀÇ °ª PE NC_
¿©±â¼ ÀǹÌÀÖ´Â Ç×¹±×ÀÇ °ªÀ» ¾Æ¹« ¼ø¼—γª ÁְԵǸé DEBUG
ÇÁ—αח¥Àº Ç×¹±×ÀÇ ³»¿ëÀ» ¹Ù²Û ÈÄ DEBUG ÇÁ—ÒÇÁÆ®ÀÎ "-"¸¦
Ç¥½ÃÇÒ °ÍÀÌ´Ù.
NV UP DI NG NZ AC PE NC_OVDNDIPLZRACPECY (Return)
ÀÌÁ¦ ¿øÇÏ´Â ´ë—Î Ç×¹±×°¡ ¹Ù²î¾ú´ÂÁö º¸—Á¸é R ¶Ç´Â RF ¸í—ɾ
´Ù½Ã »ç¿ëÇÏ¸é µÈ´Ù.
RF
OV DN DI PL ZR AC PE CY_

<SEARCH>
¸í—ɾî : SEARCH
±â ´É : ÁÖ¾îÁø ±â¾ïÀå¼Ò»óÀÇ <Range>¿¡¼ <List>¿Í °°Àº ½ºÆ®¸µ
ÀÌ ÀÖ³ª °Ë»öÇÑ´Ù.
¹® ¹ý : S <Range> <List>
<List>´Â Çϳª ÀÌ»óÀÇ Byte°ªÀ¸—Î µÇ¾î Àִµ¥ °°Àº Byte°ªÀº
½ºÆäÀ̽º³ª Ä¿¸Ó—Î ºÐ¸®µÈ´Ù. <List>°¡ µÎ °³ ÀÌ»óÀÇ Byte°ªÀ¸—Î
À̗ç¾îÁ® ÀÖÀ» ¶§´Â Á¦ÀÏ Ã³À½¿¡ ÀÖ´Â ByteÀÇ ¹øÁö¸¸ÀÌ ±¸ÇØÁö°í
ÇÑ °³ÀÇ Byte°ªÀ¸—Î µÇ¾î ÀÖÀ» °æ¿ì¿¡´Â <Range>»ó¿¡ ³ªÅ¸³ ¸ðµç
¹øÁö°¡ ±¸ÇØÁø´Ù.
¿¹: ´ÙÀ½°ú °°ÀÌ ÀԗÂÇϸé
SCS:100 110 45
¾Æ—¡¿Í °°ÀÌ µð½ºÇ×¹ÀÌ µÇ°Å³ª ¸¸¾à ÀÏÄ¡µÇ´Â °ªÀ̾ø´Ù¸é
´ÜÁö DEBUG ÇÁ—ÒÇÁÆ®¸¸À» Ç¥½ÃÇÒ °ÍÀÌ´Ù.
04EE:0104
04EE:010F
-
<TRACE>
¸í—ɾî : TRACE
±â ´É : ÇÑ ÀνºÆ®—°¼ÇÀ» ¼öÇàÇÑ ÈÄ ¸ðµç —¹Áö½ºÅÍ¿Í Ç×¹±×ÀÇ
³»¿ëÀÌ ¼öÇàµÈ ÀνºÆ®—°¼ÇÀ» Ç¥½ÃÇÑ´Ù.
¹® ¹ý : T [=<Address>] [<Value>]
=<Address>°¡ ÁÖ¾îÁö¸é ±× ÁÖ¾îÁø ¹øÁö¿¡¼ºÎÅÍ TRACE°¡ ¼öÇàµÇ¸ç
<Value>°¡ ÁÖ¾îÁö¸é ±× °ª ¸¸ÅÀÇ ´Ü°è¸¦ TraceÇÑ´Ù.
ÀÌ ¸í—ɾ´Â 8086, 8088 ÇÁ—μ¼¼ÀÇ Çϵå¿þ¾î Trace ±â´ÉÀ» ÀÌ¿ë
ÇϹǗΠROM¿¡ µé¾î ÀÖ´Â ÀνºÆ®—°¼Çµµ TRACEÇÒ ¼ö ÀÖ´Ù.
¿¹: T ¶ó°í ¸í—ɾ ÀԗÂÇϸé DEBUG ÇÁ—αח¥Àº ±× ÇÑ ÀνºÆ®—°¼ÇÀ»
¼öÇàÇÑ ÈÄ —¹Áö½ºÅÍ¿Í Ç×¹±×ÀÇ ³»¿ëÀ» Ç¥½ÃÇØ ÁØ´Ù.
ÇöÀçÀÇ À§Ä¡°¡ 04EE:0113À̶ó ÇÑ´Ù¸é
AX=0E00 BX=09FD CX=9FDA DX=10FF SP=1000 BP=0100
SI=0000 DI=0000 DS=04EE ES=04EE SS=04EE CS=04EE
IP=0113 NV UP DI NG NZ AC PE NC
04EE:0113 CD21 INT 21
¾Æ—¡¿Í °°ÀÌ ÀԗÂÇϸé
T=0113 10
DEBUG ÇÁ—αח¥Àº 0113À¸—κÎÅÍ ½ÃÀÛÇؼ 10h°³ÀÇ ÀνºÆ®—°¼Ç
À» ½ÇÇàÇϸ鼍 °¢ ÀνºÆ®—°¼ÇÀÌ ³¡³‾ ¶§¸¶´Ù —¹Áö½ºÅÍ¿Í Ç×¹±×ÀÇ
³»¿ëÀ» Ç¥½ÃÇÑ´Ù. ÀνºÆ®—°¼ÇÀÌ ÁøÇàµÇ°í »õ—οî Á¤º¸°¡ Ç¥½ÃµÉ
¶§¸¶´Ù ȍ¸éÀº Â÷—Ê´ë—Î ¿Ã¶ó°¡¸ç Áß°£¿¡ Á¤Áö½ÃÄÑ ³õ°í º¸°í
½ÍÀ¸¸é <CONTROL-S>¸¦ »ç¿ëÇÑ´Ù.

<UNASSEMBLE>
¸í—ɾî UNASSEMBLE
±â ´É : ±â¾ïÀå¼ÒÀÇ ³»¿ëÀ» ÀÐ¾î µé¿© ±×°ÍÀ» ´Ù½Ã ¼Ò½º ÇÁ—αח¥
À¸—Î ¹Ù²ãÁØ´Ù. À̶§ ±× ¹øÁö¿Í ¸Þ¸ð¸®»óÀÇ °ªµµ
Ç¥½ÃµÈ´Ù.
¹® ¹ý : U <Range>
ÀÌ ¸í—ɾ ¼öÇàÇÏ°í ³ °á°ú´Â ¾î¼Àºí¸®¾î ÇÁ—αח¥°ú ºñ½ÁÇÒ
°ÍÀÌ´Ù. ÆĶó¹ÌÅ;øÀÌ U ¸í—ɾ Ä¡¸é Àü¿¡ U ¸í—ɾ ÀÇÇØ ¹ø¿ªµÇ´ø
´ÙÀ½¿¡¼ºÎÅÍ 20h byte¸¸Å ´Ù½Ã ¹ø¿ªµÇ¸ç <Range>¸¦ ÁöÁ¤ÇÏ¸é ±×
<Range>¿¡ Æ÷ÇԵǴ ¸ðµç ByteµéÀÌ ¹ø¿ªµÇ´Âµ¥ <Range>°¡ <Address>
¸¸À¸—Î ÁÖ¾îÁö¸é ±× ¹øÁö¿¡¼ºÎÅÍ 20h byte ¸¸Å¸¸ ¹ø¿ªµÈ´Ù.
¿¹: ´ÙÀ½°ú °°ÀÌ ÀԗÂÇϸé
U04EE:0100 L10
DEBUG ÇÁ—αח¥Àº 04EE:0100¿¡¼ºÎÅÍ 16Byte¸¦ ¹ø¿ªÇÑ´Ù.
±× °á°ú´Â ¾Æ—¡¿Í °°Àº Çü½ÄÀÏ °ÍÀÌ´Ù.
04EE:0100 206472 AND [si-72],ah
04EE:0103 69 DB 69
04EE:0104 7665 JBE 016B
04EE:0106 207370 AND [BP+DI-70],DH
04EE:0109 65 DB 65
04EE:010A 63 DB 63
04EE:010B 69 DB 69
04EE:010C 66 DB 66
04EE:010D 69 DB 69
04EE:010E 63 DB 63
04EE:010F 61 DB 61
¾Æ—¡¿Í °°ÀÌ Çϸé,
U04EE:0100 0108
04EE:0100 206472 AND [si-72],ah
04EE:0103 69 DB 69
04EE:0104 7665 JBE 016B
04EE:0106 207370 AND [BP+DI-70],DH
¸Þ¸ð¸®ÀÇ ³»¿ëÀÌ ¹Ù²î¸é ¿ø—¡ÀÇ ¼Ò½º ÇÁ—αח¥ÀÇ ³»¿ë°ú ¹Ù²ï
³»¿ëÀÌ µð½º¾î¼Àºí¸®ÇÑ ³»¿ë°ú´Â ´Ù¸¦ °ÍÀÌ´Ù. µû¶ó¼ ÀÌ U
¸í—ɾ »ç¿ëÇϸé ÀÌ º‾ȍ¸¦ ½±°Ô ¼Ò½º ÇÁ—αח¥¿¡ ¹Ý¿µ½Ãų
¼ö ÀÖ´Ù.

<WRITE>
¸í—ɾî : WRITE
±â ´É : µð¹ö±ëÇÏ°í ÀÖ´Â ÆÄÀÏÀ» µð½ºÅ©¿¡ ÀúÀåÇÑ´Ù.
¹® ¹ý : W [<Address> [<Drive> <Record> <Record>]]
ÆĶó¹ÌÅ;øÀÌ W ¸í—ɾ ¼öÇàÇÏ¸é ¹Ì¸® BX:CX¿¡´Ù µð½ºÅ©—Î Ãâ—ÂÇÒ
ÆÄÀÏÀÇ Byte¼ö¸¦ ±â—ÏÇØ ³õ¾Æ¾ß Çϸç ÆÄÀÏÀº CS:0100¿¡¼ºÎÅÍ
½ÃÀÛÇÑ´Ù. <Address>¸¸À» ÁöÁ¤ÇÏ¸é ±× ¹øÁö¿¡¼ºÎÅÍ ÆÄÀÏÀÌ ½ÃÀ۵ǴÂ
°ÍÀ¸—Î µÈ´Ù. ¶ÇÇÑ LOAD³ª GO ¸í—ɾ »ç¿ëÇÑ ÈÄ W ¸í—ɾ
ÆĶó¹ÌÅÍ ¾øÀÌ ¾²—Á¸é BX:CXÀÇ °ªÀ» ´Ù½Ã Á¤ÇØ¾ß ÇÑ´Ù. ¾î¶² ÆÄÀÏÀ»
—εåÇؼ ¼öÁ¤À» °¡Çß´Ù ÇÏ´õ¶óµµ ±× ÀüüÀÇ ±æÀ̸¸ º‾ÇÏÁö ¾Ê¾Ò´Ù¸é
À̸§À̳ª ½ÃÀÛ¹øÁö´Â ¹Ù²îÁö ¾Ê´Â´Ù´Â »ç½Ç¿¡ ÁÖ¸ñÇÑ´Ù.
ÆÄÀϸíÀº DEBUG¸¦ ºÎ¸¦ ¶§ Áְųª N ¸í—ɾ »ç¿ëÇؼ ÁöÁ¤Çؾß
ÇÏ´Â µ¥ ÀÌ µÎ°¡Áö ¹æ¹ý¿¡ ÀÇÇؼ ÆÄÀÏÀ» ÁöÁ¤ÇÏ¸é ±× ÆÄÀϸíÀÌ CS:5C
¿¡ ÀÖ´Â FCB¿¡¼ ¾²ÀÌ´Â Çü½Ä°ú °°ÀÌ ÁÖ¾îÁö°Ô µÈ´Ù.
<Drive>´Â ÆÄÀÏÀÌ ¾²¿©Áú µð½ºÅ© µå¶óÀ̺긦 ÁöÁ¤ÇÏ¸ç ¾ÕÀÇ <Record>´Â
½á ³Ö±â ½ÃÀÛÇÏ´Â ³í¸®Àû —¹ÄÚµåÀÇ ¹øÈ£¸¦, µÚÀÇ <Record>´Â ¾²¿©Áú
—¹ÄÚµå ¼ö¸¦ ³ªÅ¸³½´Ù.
##ÁÖÀÇ: ¹°¸®Àû —¹ÄÚµå¹øÈ£¸¦ °¡Áö°í Àý´ë ¼½ÅÍ¿¡´Ù Ãâ—ÂÇÏ´Â °ÍÀº
¸Å:0100
¿¡¼ºÎÅÍ ½ÃÀ۵Ǵ ÆÄÀÏÀ» Áý¾î ³Ö´Â´Ù.

Error ¸Þ¼¼Áö ----------


DEBUG ÇÁ—αח¥À» »ç¿ëÇÏ´Â µ¿¾È ¾Æ—¡¿Í °°Àº ¿¡—‾ ¸Þ¼¼Áö¸¦ ¹ÞÀ» ¼ö
Àִµ¥ ¿¡—‾ ¸Þ¼¼Áö°¡ ³ªÅ¸³ª¸é ÇöÀç ¼öÇà ÁßÀÌ´ø ¸í—ɾî´Â ÁߴܵǾî
¹ö¸°´Ù. ±×—‾³ª DEBUG ÇÁ—αח¥ ÀÚü´Â ³¡³ªÁö ¾Ê´Â´Ù.
______________________________________________________________
| ¿¡—‾ ÄÚµå | Á¤ ÀÇ |
|___________|__________________________________________________|
| |À߸øµÈ Ç×¹±× °ª |
| BF |À߸øµÈ °ªÀ» °¡Áö°í Ç×¹±×ÀÇ °ªÀ» ¹Ù²Ù—Á°í ÇÒ ¶§ |
| |¹ß»ýÇÑ´Ù. |
|___________|__________________________________________________|
| |³Ê¹« ¸¹Àº ÁßÁöÁ¡ |
| |GO ¸í—ɾ¼ ¿ °³ ÀÌ»óÀÇ ÁßÁöÁ¡À» ÁöÁ¤ÇßÀ» °æ¿ì |
| BP |¹ß»ýÇÑ´Ù. ¿ °³ ÀÌÇϗΠÁßÁöÁ¡ÀÇ °¹¼ö¸¦ ÁÙ ¿© ´Ù½Ã|
| |GO ¸í—ɾ ¼öÇàÇÑ´Ù. |
|___________|__________________________________________________|
| |À߸øµÈ —¹Áö½ºÅÍ ÁöÁ¤ |
| BR |Çã¿ëµÇÁö ¾Ê´Â —¹Áö½ºÅÍ À̸§À» °¡Áö°í Register¸í—É |
| |¾î¸¦ ½èÀ» °æ¿ì¿¡ ¹ß»ýÇÑ´Ù. |
|___________|__________________________________________________|
| |µÎ °³ ÀÌ»óÀÇ Ç×¹±×°ª |
| |ÇÑ °³ÀÇ Ç×¹±×¿¡ ¼—Î ¹Ý´ëµÇ´Â µÎ°¡Áö Ç×¹±× °ªÀ»|
| DF |ÁÖ¾úÀ» °æ¿ì¿¡ ¹ß»ýÇÑ´Ù. RF ¸í—É¿¡¼´Â Ç×¹±×¿¡ |
| |ÇÑ °¡Áö °ª ¸¸ ÁÖ¾î¾ß ÇÑ´Ù. |
|___________|__________________________________________________|

±×—³ °£´ÜÇÑ ½Ç½ÀÀ» Çغ¸°Ú½À´Ï´Ù.


¸¸¹°»ó 2.0 µ¥¸ðÆÇÀ» »ç¿ëÇϸé 10Ãʵ¿¾È ±â´Ù¸®¶ó´Â ¸Þ½ÃÁö°¡ ¶å´Ï´Ù.
ÀÌ°ÍÀº Àü¿¡ ¸»ÇÑ cshow ÀÇ 15ÃÊ ¸Þ½ÃÁö¿Í ¾ÆÁÖ À‾»çÇÕ´Ï´Ù.
ÀÌ°ÍÀ» µð¹ö±×—Î Àâ¾Æº¸°Ú½À´Ï´Ù.
debug seemain.exe
l
g
ÇÏ°í¼ Ctrl+BreakÅ°¸¦ ´©¸£¸é Ä«¿îÅ͸¦ ¼¼´øÁß¿¡ ºüÁ® ³ª¿É´Ï´Ù.
¹Ø¿¡ º¸¸é Cmp ºñ±³ JZ 01AE À̗± ¸Þ½ÃÁö°¡ ¶å´Ï´Ù.
XXXX:036B ¹øÁöÀÔ´Ï´Ù.
±×°÷À» 9090(NOP)—Î ¿ì¸é µü Çѹø¸¸ Ä«¿îÅ͸¦ ¼Á´Ï´Ù.
°£´ÜÇÏÁÒ?
¿©±âÀÇ µð¹ö±× ¸Þ´º¾óÀ» Àß Àо¸é ½±°Ô ÀÌÇØ°¡ °¥°Ì´Ï´Ù.

**´ÙÀ½Àº Debug Script ÆÄÀÏÀ» ÀÌ¿ëÇÑ ÆÐÄ¡ ÇÁ—αח¥ ÀÛ¼ºÀÔ´Ï´Ù.


¾Æ—¡ ¿¹Á¦´Â ÆÐÄ¡ ÇÁ—αח¥ÀÌ ¾î¶² ½ÄÀ¸—Î ±¸¼ºµÇ¾î Áö³ª¸¦ ¾Ë—ÁÁÖ±â À§ÇÑ °ÍÀÔ´Ï´Ù.
µð¹ö±×/¹èÄ¡¸¸ ¾Ë¸é °£´ÜÇÑ ÆÐÄ¡´Â ³ë— ¿©ÇÏ¿¡ µû¶ó ÀÛ¼º °¡´ÉÇÕ´Ï´Ù.
µð¹ö±× ½ºÅ©¸³Æ® ÆÄÀÏÀ» ÀÌ¿ëÇÏ¸é ¾ÆÁÖ ÀûÀº ¿ë—®À¸—Î ÆÐÄ¡½ÃÅ°´Â ÇÁ—αח¥À» ÀÛ¼ºÇÒ ¼ö
ÀÖ½À´Ï´Ù.
µð¹ö±×ÀÇ ±âº»ÀûÀÎ ¸í—ɾî¿Í ¹èÄ¡ÆÄÀÏ¿¡ ´ëÇÑ ±âÃÊÁö½Ä¸¸ ¾Ë¸é ´©±¸³ª ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÆÐÄ¡ ÇÁ—αח¥À» ÀÛ¼ºÇϗÁ¸é ÀÌ°Í ¿ª½Ã ¾î´À ºÎºÐÀ» ÆÐÄ¡ÇØ¾ß ÇÒÁö¸¦ ¸ÕÀú ¾Ë¾Æ¾ß ÇÕ´Ï´Ù.
ÀÏ´Ü µð¹ö±×—Î —εåÇؼ S(ã±â) ¸í—ÉÀ¸—Î ÇØ´ç ¿ÀÇÁ¼Â ¹øÁö¸¦ È®ÀÎÇÏ°í
ÆÐÄ¡ÇÒ µ¥ÀÌÅÍ¿Í ÇÔ²² ¾Æ—¡¿Í °°ÀÌ Àû½À´Ï´Ù.

E 323C 90 90
E 3B48 90 90
E 3B4D 90 90

±× ´ÙÀ½ ¹èÄ¡ÆÄÀÏ ¾È¿¡ ¸í±âµÈ ÆÄÀϸíÀ» ÇØ´ç ÆÄÀϗΠ°íÄ¡±â¸¸ ÇÏ¸é µË´Ï´Ù.
(¿©±â¿¡¼´Â TELIX.EXE) TELIX.EXE¸¦ TELIX.EX_—Î ¹Ù²Û °ÍÀº
EXE/HEXÆÄÀÏÀº µð¹ö±×¿¡¼ ÀúÀåÀÌ µÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ÆÐÄ¡°¡ ³¡³ª¸é
´Ù½Ã ¿ø—¡´ë—Î ¸®³×ÀÓÇÕ´Ï´Ù.
¾Æ—¡´Â µð¹ö±× ½ºÅ©¸³Æ® ÆÄÀÏÀ» Æ÷ÇÔÇÑ ¹èÄ¡ÆÄÀÏ ÇüÅÂÀÇ ÆÐÄ¡ ÇÁ—αח¥ ¼Ò½º—Î
ÆÄÀϸíÀº TELIX322.BATÀÔ´Ï´Ù.
@echo off
goto batch
N TELIX.EX_
L
E 323C 90 90
E 3B48 90 90
E 3B4D 90 90
W
Q
:Batch
if not exist TELIX.EXE goto error
ren TELIX.EXE TELIX.EX_ > nul
debug < TELIX322.BAT > nul
echo Patched complete!
ren TELIX.EX_ TELIX.EXE > nul
goto end
:Error
echo TELIX.EXE not found!
:End

ÀÌ»óÀÔ´Ï´Ù.

À§ ¹èÄ¡ÆÄÀÏ ÀÚ¼¼ÇÑ ¼³¸í ÀÔ´Ï´Ù.


@echo off <¸í—É ÁøÇà »óȲÀ» Ç¥½ÃÇÏÁö ¾Ê´Â´Ù.>
goto batch <—¹À̺í batch—Î Á¡ÇÁÇÑ´Ù.>
N TELIX.EX_ ¦¤<Telix.ex_ÆÄÀÏÀ» µð¹ö±×—Î —εåÇÑ´Ù.> ¦¡¦¤
L ¦¥ ¦¢½ÇÁ¦ µð¹ö±×¿¡¼
E 323C 90 90 <¿ÀÇÁ¼Â ¹øÁö 323C, 323D ¹øÁö¸¦ 90h—Î ´ëÄ¡.> ¦¢Ã³¸®µÇ´Â ¸í—ɾî
E 3B48 90 90 < " 3B48, 3B49 " > ¦¢(À ºÎºÐÀº ¸ðµÎ
E 3B4D 90 90 < " 3B4D, 3B4E " > ¦¢ ¿¡—‾ 󸮵Ê.)
W <¹Ù²ï ¸Þ¸ð¸®¸¦ ÀúÀåÇÑ´Ù.> ¦¢
Q <µð¹ö±×¸¦ ºüÁ® ³ª¿Â´Ù.> ¦¡¦¥
:Batch
if not exist TELIX.EXE goto error <TELIX.EXEÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é Á¡ÇÁ.>
ren TELIX.EXE TELIX.EX_ > nul <TELIX.EXE¸¦ TELIX.EX_—Î ¸®³×ÀÓ.>
debug < TELIX322.BAT > nul <µð¹ö±× »óÀÇ ÆÐÄ¡—Î ÇÙ½É(!) ºÎºÐ.>
echo Patched complete! <ÆÐÄ¡°¡ ¿Ï—áµÇ¾ú´Ù´Â ¸Þ½ÃÁö Ç¥½Ã.>
ren TELIX.EX_ TELIX.EXE > nul <´Ù½Ã ¿ø—¡´ë—Î ¸®³×ÀÓ.>
goto end <—¹À̺í end—Î Á¡ÇÁ.>
:Error
echo TELIX.EXE not found! <TELIX.EXE°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù´Â ¸Þ½ÃÁö
:End Ãâ—Â.>

20ȸ°Á ±îÁö ³¡ÀÌ ³µ½À´Ï´Ù.

You might also like