谁帮我解释下debug这个命令啊。有什么作用。我好像听说有关于CMOS设置的。到底是怎么用的?
ããDEBUGæ¯ä¸ä¸ªDOSå®ç¨ç¨åºï¼æ¯ä¾ç¨åºå使ç¨çç¨åºè°è¯å·¥å
·ï¼å¯ä»¥ç¨å®æ£æ¥å
åä¸ä»»ä½å°æ¹çåè以åä¿®æ¹ä»»ä½å°æ¹çåèãå®å¯ä»¥ç¨äºéæ令æ§è¡æ个ç¨åºä»¥éªè¯ç¨åºè¿è¡çæ£ç¡®æ§ï¼ä¹å¯ä»¥è¿½è¸ªæ§è¡è¿ç¨ãæ¯è¾ä¸ä¸ªæ令æ§è¡ååçå¼ä»¥åæ¯è¾ä¸ç§»å¨å
åä¸æ°æ®çèå´ï¼è¯»åæ件ä¸ç£çæåºã
ããå®çåè½å æ¬ä»¥ä¸å 个æ¹é¢ã
ããâ ç´æ¥è¾å ¥ï¼æ´æ¹ï¼è·è¸ªï¼è¿è¡æ±ç¼è¯è¨æºç¨åºï¼
ããâ è§å¯æä½ç³»ç»çå 容ï¼
ãã3.æ¥çROM BIOSçå 容ï¼
ããâè§å¯æ´æ¹RAMå é¨ç设置å¼ï¼
ããâ以æåºææ件çæ¹å¼è¯»å软çæ°æ®ã
ããA æ±ç¼å½ä»¤
ããåè½ï¼ å°æ令ç´æ¥æ±ç¼ææºå¨ç è¾å ¥å°å åä¸ã
ãã说æï¼ ç¨äºå°æ®µç¨åºçæ±ç¼åä¿®æ¹ç®æ ç¨åºï¼ææè¾å ¥çæ°ååéç¨åå è¿å¶ï¼ ç¨æ·è£ å ¥å åçæ±ç¼è¯å¥æ¯è¿ç»åæ¾çï¼è¥æ²¡ææå®å°åï¼å¹¶ä¸åé¢æ²¡æ使ç¨æ±ç¼å½ä»¤ï¼è¯¥è¯å¥è¢«æ±ç¼å° CS:0100åºåã
ããä¾Aï¼>DEBUG
ãã-a 0100
ãã08F1ï¼0100 MOV AHï¼09
ãã08F1ï¼0102 MOV DXï¼109
ãã08F1ï¼0105 INT 21H;
ãã08F1ï¼0107 INT 21H;<-XPä¸è¿è¡cmd debugæ¶,åºè¯¥æ¯INT 20H,21Hä¼åºéæ ææ令é误
ãã08F1ï¼0109 db 'May I help you $'
ãã08F1ï¼0115â离å¼aç¶æ
ãã-g âè¿è¡
ããMay I help you è¿è¡ç»æ
ããProgram terminated normally表示è¿è¡æ£å¸¸
ããCæ¯è¾å½ä»¤
ããåè½ï¼ æ¯è¾ä¸¤å ååºåä¸çå 容æ¯å¦ç¸åï¼è¥ä¸ååæ¾ç¤ºå ¶å°ååå 容ã
ããå¦ï¼C4000ï¼0 3F 100
ããå°±æ¯ç¨æ¥æ¯è¾4000ï¼0000-4000ï¼003Fä¸DSï¼0100-DSï¼013Fä¹é´çå 容ï¼å ¶æ¾ç¤ºæ ¼å¼å¦ä¸ï¼
ããå åå°å1å å«å¼1å å«å¼2å åå°å2
ããä¾ï¼æ¯è¾4000ï¼0 3F 100å 容çå·®å¼
ãã-C4000ï¼0 3F 100
ãã4000ï¼0000 64 43 08F1ï¼0100
ãã4000ï¼0001 3E 69 08F1ï¼0101 æ¾ç¤ºå 容çå·®å¼å¤
ãã4000ï¼0002 78 FF 08F1ï¼0102
ããâ¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦
ããå¦æè¦æ¯è¾çèå´å¨DSå ï¼å段å°åä¸å¿ æåºï¼
ããå¦ï¼-C 0 4 100ï¼æ¯è¾DSï¼0---DSï¼4ä¸DSï¼100---DSï¼104
ããCå½ä»¤çå¦ä¸ç§æ ¼å¼å¦ä¸ï¼Cå°å1 L é¿åº¦ å°å2
ããå¦ï¼-C000ï¼0 L4 0ï¼ç±0000ï¼0ä¸ä¸DSï¼0å¼å§æ¯è¾å®å-C0000ï¼0 3 0å½ä»¤ç¸çï¼æ¾ç¤ºç»æå¦ä¸ï¼
ãã0000ï¼0000 8A C0 08F1ï¼0000
ãã0000ï¼0001 10 20 08F1ï¼0001 å®ä»¬é½æ¯è¾4个åè
ãã0000ï¼0002 1C 00 08F1ï¼0002
ãã0000ï¼0003 49 7F 08F1ï¼0003
ãã转å¨å½ä»¤
ãã* D[å°å] æD[èµ·å§å°å][ç®çå°å] 转å¨å½ä»¤
ããåè½ï¼ 以å åæ 象æ¹å¼æ¾ç¤ºå åä¸çä¿¡æ¯ã
ãã说æï¼ è½¬å¨ç¨å·¦å³ä¸¤é¨åæ¾ç¤ºå åæ 象å 容ï¼å·¦è¾¹ä»¥åå è¿å¶ï¼å³è¾¹ä»¥ASCâ ¡å符æ¾ç¤ºï¼ææä¸å¯æå°å符ç¨å¥å·ï¼ãï¼è¡¨ç¤ºãæ¯è¡æ¾ç¤º16个åèçå 容ï¼å¨ç¬¬å «å第ä¹ä¸ªåèä¹é´æä¸ä¸ªè¿å符 - æ¤å½ä»¤éå«ç段å°å为DSçå¼ãè¥æªæå®èµ·å§å°åï¼åDå½ä»¤ä»æ¾ç¤ºçæåä¸ä¸ªåå çä¸ä¸ä¸ªåå å¼å§æ¾ç¤ºï¼è¥ä»¥å没æ使ç¨ç»Då½ä»¤ï¼ åä»å使åç段å¯åå¨çå 容ï¼å ä¸å°åå移é 0100H å¼å§æ¾ç¤ºã
ããä¾ï¼-d10ï¼4få³ä¸ºæ¾ç¤ºDSï¼4fçå 容å¨Då½ä»¤ä¸å¦ä¸æåºæ®µå°åï¼åå ¶é»è®¤ä¸ºDS段ã
ããå¦ææ段å°åï¼åä»ææç段å°åååºæå®çèå´
ããå¦ï¼-dfffï¼00ï¼0f
ããæ们ä¹å¯ä»¥æå®é¿åº¦æ¥ååºæéè¦å åå 容
ããå¦ï¼-d 100 L20å³ä¸ºæ¾ç¤ºç±DSï¼100-DSï¼11Fçå 容ï¼å ±20H个åèï¼
ãã* E[å°å] [åèä¸²ï¼ ä¿®æ¹å åå½ä»¤
ããåè½ï¼ ä»æå®çå°åå¼å§ä¿®æ¹å åå¼ã
ããæ ¼å¼ï¼Eèµ·å§å°å[æ°æ®è¡]
ããâ´ç¨ç»å®å 容代æ¿æå®èå´çåå å 容
ãã-Eå°å å 容表
ããä¾ï¼-E100 41 42 43 44 48 47 46 45
ãã-D 100ï¼L08
ãã08F1ï¼0100 41 42 43 44 48 47 46 45 ABCDHGFEâ¦
ããâµé个å åå 容
ããä¾ï¼-E 100ï¼
ãã08F1ï¼0100 76 42 ï¼42æ¯æä½åé®å ¥
ããæ¤å½ä»¤æ¯å°å100å·å åå 容76ä¿®æ¹ä¸º42ï¼ç¨Då½ä»¤å¯å¯çã
ãã* F[å°åèå´] [åèæåè串] å¡«åå½ä»¤
ããåè½ï¼ å°è¦å¡«åçåèæåèä¸²å¡«å ¥ç±å°åèå´æå®çåå¨å¨ä¸ã
ããä¾ï¼-f100 120 61 62 63 64
ãã-d100 11f
ãã08F1:0100 61 62 63 64 61 62 63 64 -61 62 63 64 61 62 63 abcd abcd abcd abcd
ãã08F1:0110 13 67 98 E3 C8 2E B3 B6 -03 21 AC 19 3121 4E 96 gâ¦â¦1â¦
ããå¦ææ°æ®è¡è¶ åºæå®çèå´ï¼åå¡«ä¸ä¸çæ°å¼ä¼è¢«å¿½ç¥ã
ããä¾ï¼-f 100 107 41 43 43 44 45 46 47 48 49 4A 4B 4C 4D -d 100ï¼lof
ãã08F1ï¼0100 41 42 43 44 45 46 47 64 -61 62 63 64 ABCDEFGdabcdabcd
ããç±ä¸ä¾å¯çåºï¼è¶ åºèå´çæ°æ®è¢«å¿½ç¥
ããå¦å¤ï¼FåEå½ä»¤é½å¯å¡«å ¥å符串ï¼
ããå¦ï¼-F 100 105 "MSDOS"
ãã-d 100 l0f
ãã08F1ï¼0100 4D 53 44 4F 53 46 47 64 -61 62 63 64 MS DOS FGabcd abcd
ããGæ§è¡å½ä»¤
ããåè½ï¼ æ§è¡æ£å¨è°è¯çç¨åºï¼å½è¾¾å°æç¹æ¶åæ¢æ§è¡ï¼ 并ä¸æ¾ç¤ºå¯åå¨æ å¿åä¸ä¸æ¡è¦æ§è¡çå½ä»¤ã
ãã说æï¼ å¦æ没ææå®èµ·å§å°åï¼é£ä¹å½åæ令å°åç±CSï¼IPå¯åå¨çå 容æ¥å³å®ï¼å¦æç¨æ·æå®èµ·å§å°åå°±ä»æå®çèµ·å§å°åå¼å§æ§è¡ãå¦ææå®æç¹ï¼å½æ令å°è¾¾æ令å°åæ¶åæ¢æ§è¡ï¼å¹¶æ¾ç¤ºåå¯åå¨æ å¿ä½çå 容åä¸ä¸æ¡è¦æ§è¡çå½ä»¤ï¼æå¤å 许ç¨æ·è®¾å®10个æç¹ã
ããä¾ï¼Aï¼\>debug tan.exe
ãã-uï¼åç¼è¯ææ±ç¼è¯è¨ç¨ç
ããâ¦â¦â¦â¦
ãã. .
ãã-g 100 æå®ä¸æç¹
ããProgram terminated normally:
ããå¦å¤ï¼æ们å¨DEBUGä¸å¯è¿è¡ä¸ä¸ªæ件.EXE
ããå¦ï¼Aï¼\>debug tan.exe
ãã-g
ããå³å¯å¼å§è¿è¡æ¤ç¨åºï¼åå¨DOSä¸å®å ¨ä¸æ ·ï¼
ãã* H[æ°å¼][æ°å¼] åå è¿å¶ç®æ¯è¿ç®å½ä»¤
ããåè½ï¼ åå«æ¾ç¤ºä¸¤ä¸ªåå è¿å¶æ°ç¸å çå以å第ä¸ä¸ªæ°åå»ç¬¬äºä¸ªæ°çå·®ã
ãã说æï¼ æ¿ç¨æ·å®æç®åçåå è¿å¶æ°çè¿ç®ã
ããä¾ï¼-h4538 5623
ãã9B5B EF15
ããIå½ä»¤
ããåè½ï¼ ä»æå®ç端å£è¾å ¥å¹¶æ¾ç¤ºï¼ç¨åå è¿å¶ï¼çä¸ä¸ªåèã
ããä¾ï¼-i70
ããF9ï¼æ¾ç¤º70端å£çå 容为F9
ããIå½ä»¤å¯ç±80X86ç64K个端å£åæ°æ®
ããLå½ä»¤
ããåè½ï¼ å°ä¸ä¸ªæ件æççç»å¯¹æåºè£ å ¥åå¨å¨ã
ãã说æï¼ å个Lå½ä»¤è½å¤è£ å ¥çæ大æåºæ°æ¯ 80Hï¼å ¶ä¸çå· 0ï¼1ï¼2ï¼3â¦â¦åå«ä»£è¡¨ Aï¼Bï¼Cï¼â¦â¦åºç°è¯»çéï¼æ¾ç¤ºé误信æ¯ã
ããâ´æ ¼å¼1.Lè£ å ¥å°å 驱å¨å¨å èµ·å§æåº/æåºæ°
ããè¿ç§æ¹å¼å¯æç£çä¸æå®æåºèå´çå å®¹è£ å ¥å°åå¨å¨ä»æå®å°åå¼å§çåºåä¸ï¼å¨æ¤å¤æåºç¼å·å¼ç¨é»è¾/æåºçæ¹å¼ã
ããä¾ï¼-L 100 0 01ï¼å°A驱ç0æåºè£ è³CSï¼100ä¸
ãã-d 100 10f
ãã08F1:0100 EB 3C 90 3C 53 44 4F 53 -36 2E 32 32 02 01 01 00.Lï¼MSDOS 6.22â¦â¦
ããâµæ ¼å¼2ï¼Lè£ å ¥å°å
ããè¿ç§æ¹å¼å¯ææå®æä»¶è£ å ¥å åï¼è£ å ¥çæ件å¯å¨è¿å ¥DEBUGæ¶æå®äº¦å¯ç¨Nå½ä»¤å»ºç«ï¼æ ¼å¼ä¸º-næ件åï¼
ããä¾1 DEBUG tan.pas
ãã-L 100
ããä¾2 DEBUG
ãã-n tan.pas
ãã-L 100
ããé¡»ç¥ï¼Lå½ä»¤åªè½è¯»åé»è¾æåºï¼ä¸è½è¯»å硬çååºè¡¨
ããLå½ä»¤ä¸æç¨çç£ç代ç A=00ï¼B=01ï¼C=02â¦â¦
ãã
ããå®çåè½å æ¬ä»¥ä¸å 个æ¹é¢ã
ããâ ç´æ¥è¾å ¥ï¼æ´æ¹ï¼è·è¸ªï¼è¿è¡æ±ç¼è¯è¨æºç¨åºï¼
ããâ è§å¯æä½ç³»ç»çå 容ï¼
ãã3.æ¥çROM BIOSçå 容ï¼
ããâè§å¯æ´æ¹RAMå é¨ç设置å¼ï¼
ããâ以æåºææ件çæ¹å¼è¯»å软çæ°æ®ã
ããA æ±ç¼å½ä»¤
ããåè½ï¼ å°æ令ç´æ¥æ±ç¼ææºå¨ç è¾å ¥å°å åä¸ã
ãã说æï¼ ç¨äºå°æ®µç¨åºçæ±ç¼åä¿®æ¹ç®æ ç¨åºï¼ææè¾å ¥çæ°ååéç¨åå è¿å¶ï¼ ç¨æ·è£ å ¥å åçæ±ç¼è¯å¥æ¯è¿ç»åæ¾çï¼è¥æ²¡ææå®å°åï¼å¹¶ä¸åé¢æ²¡æ使ç¨æ±ç¼å½ä»¤ï¼è¯¥è¯å¥è¢«æ±ç¼å° CS:0100åºåã
ããä¾Aï¼>DEBUG
ãã-a 0100
ãã08F1ï¼0100 MOV AHï¼09
ãã08F1ï¼0102 MOV DXï¼109
ãã08F1ï¼0105 INT 21H;
ãã08F1ï¼0107 INT 21H;<-XPä¸è¿è¡cmd debugæ¶,åºè¯¥æ¯INT 20H,21Hä¼åºéæ ææ令é误
ãã08F1ï¼0109 db 'May I help you $'
ãã08F1ï¼0115â离å¼aç¶æ
ãã-g âè¿è¡
ããMay I help you è¿è¡ç»æ
ããProgram terminated normally表示è¿è¡æ£å¸¸
ããCæ¯è¾å½ä»¤
ããåè½ï¼ æ¯è¾ä¸¤å ååºåä¸çå 容æ¯å¦ç¸åï¼è¥ä¸ååæ¾ç¤ºå ¶å°ååå 容ã
ããå¦ï¼C4000ï¼0 3F 100
ããå°±æ¯ç¨æ¥æ¯è¾4000ï¼0000-4000ï¼003Fä¸DSï¼0100-DSï¼013Fä¹é´çå 容ï¼å ¶æ¾ç¤ºæ ¼å¼å¦ä¸ï¼
ããå åå°å1å å«å¼1å å«å¼2å åå°å2
ããä¾ï¼æ¯è¾4000ï¼0 3F 100å 容çå·®å¼
ãã-C4000ï¼0 3F 100
ãã4000ï¼0000 64 43 08F1ï¼0100
ãã4000ï¼0001 3E 69 08F1ï¼0101 æ¾ç¤ºå 容çå·®å¼å¤
ãã4000ï¼0002 78 FF 08F1ï¼0102
ããâ¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦
ããå¦æè¦æ¯è¾çèå´å¨DSå ï¼å段å°åä¸å¿ æåºï¼
ããå¦ï¼-C 0 4 100ï¼æ¯è¾DSï¼0---DSï¼4ä¸DSï¼100---DSï¼104
ããCå½ä»¤çå¦ä¸ç§æ ¼å¼å¦ä¸ï¼Cå°å1 L é¿åº¦ å°å2
ããå¦ï¼-C000ï¼0 L4 0ï¼ç±0000ï¼0ä¸ä¸DSï¼0å¼å§æ¯è¾å®å-C0000ï¼0 3 0å½ä»¤ç¸çï¼æ¾ç¤ºç»æå¦ä¸ï¼
ãã0000ï¼0000 8A C0 08F1ï¼0000
ãã0000ï¼0001 10 20 08F1ï¼0001 å®ä»¬é½æ¯è¾4个åè
ãã0000ï¼0002 1C 00 08F1ï¼0002
ãã0000ï¼0003 49 7F 08F1ï¼0003
ãã转å¨å½ä»¤
ãã* D[å°å] æD[èµ·å§å°å][ç®çå°å] 转å¨å½ä»¤
ããåè½ï¼ 以å åæ 象æ¹å¼æ¾ç¤ºå åä¸çä¿¡æ¯ã
ãã说æï¼ è½¬å¨ç¨å·¦å³ä¸¤é¨åæ¾ç¤ºå åæ 象å 容ï¼å·¦è¾¹ä»¥åå è¿å¶ï¼å³è¾¹ä»¥ASCâ ¡å符æ¾ç¤ºï¼ææä¸å¯æå°å符ç¨å¥å·ï¼ãï¼è¡¨ç¤ºãæ¯è¡æ¾ç¤º16个åèçå 容ï¼å¨ç¬¬å «å第ä¹ä¸ªåèä¹é´æä¸ä¸ªè¿å符 - æ¤å½ä»¤éå«ç段å°å为DSçå¼ãè¥æªæå®èµ·å§å°åï¼åDå½ä»¤ä»æ¾ç¤ºçæåä¸ä¸ªåå çä¸ä¸ä¸ªåå å¼å§æ¾ç¤ºï¼è¥ä»¥å没æ使ç¨ç»Då½ä»¤ï¼ åä»å使åç段å¯åå¨çå 容ï¼å ä¸å°åå移é 0100H å¼å§æ¾ç¤ºã
ããä¾ï¼-d10ï¼4få³ä¸ºæ¾ç¤ºDSï¼4fçå 容å¨Då½ä»¤ä¸å¦ä¸æåºæ®µå°åï¼åå ¶é»è®¤ä¸ºDS段ã
ããå¦ææ段å°åï¼åä»ææç段å°åååºæå®çèå´
ããå¦ï¼-dfffï¼00ï¼0f
ããæ们ä¹å¯ä»¥æå®é¿åº¦æ¥ååºæéè¦å åå 容
ããå¦ï¼-d 100 L20å³ä¸ºæ¾ç¤ºç±DSï¼100-DSï¼11Fçå 容ï¼å ±20H个åèï¼
ãã* E[å°å] [åèä¸²ï¼ ä¿®æ¹å åå½ä»¤
ããåè½ï¼ ä»æå®çå°åå¼å§ä¿®æ¹å åå¼ã
ããæ ¼å¼ï¼Eèµ·å§å°å[æ°æ®è¡]
ããâ´ç¨ç»å®å 容代æ¿æå®èå´çåå å 容
ãã-Eå°å å 容表
ããä¾ï¼-E100 41 42 43 44 48 47 46 45
ãã-D 100ï¼L08
ãã08F1ï¼0100 41 42 43 44 48 47 46 45 ABCDHGFEâ¦
ããâµé个å åå 容
ããä¾ï¼-E 100ï¼
ãã08F1ï¼0100 76 42 ï¼42æ¯æä½åé®å ¥
ããæ¤å½ä»¤æ¯å°å100å·å åå 容76ä¿®æ¹ä¸º42ï¼ç¨Då½ä»¤å¯å¯çã
ãã* F[å°åèå´] [åèæåè串] å¡«åå½ä»¤
ããåè½ï¼ å°è¦å¡«åçåèæåèä¸²å¡«å ¥ç±å°åèå´æå®çåå¨å¨ä¸ã
ããä¾ï¼-f100 120 61 62 63 64
ãã-d100 11f
ãã08F1:0100 61 62 63 64 61 62 63 64 -61 62 63 64 61 62 63 abcd abcd abcd abcd
ãã08F1:0110 13 67 98 E3 C8 2E B3 B6 -03 21 AC 19 3121 4E 96 gâ¦â¦1â¦
ããå¦ææ°æ®è¡è¶ åºæå®çèå´ï¼åå¡«ä¸ä¸çæ°å¼ä¼è¢«å¿½ç¥ã
ããä¾ï¼-f 100 107 41 43 43 44 45 46 47 48 49 4A 4B 4C 4D -d 100ï¼lof
ãã08F1ï¼0100 41 42 43 44 45 46 47 64 -61 62 63 64 ABCDEFGdabcdabcd
ããç±ä¸ä¾å¯çåºï¼è¶ åºèå´çæ°æ®è¢«å¿½ç¥
ããå¦å¤ï¼FåEå½ä»¤é½å¯å¡«å ¥å符串ï¼
ããå¦ï¼-F 100 105 "MSDOS"
ãã-d 100 l0f
ãã08F1ï¼0100 4D 53 44 4F 53 46 47 64 -61 62 63 64 MS DOS FGabcd abcd
ããGæ§è¡å½ä»¤
ããåè½ï¼ æ§è¡æ£å¨è°è¯çç¨åºï¼å½è¾¾å°æç¹æ¶åæ¢æ§è¡ï¼ 并ä¸æ¾ç¤ºå¯åå¨æ å¿åä¸ä¸æ¡è¦æ§è¡çå½ä»¤ã
ãã说æï¼ å¦æ没ææå®èµ·å§å°åï¼é£ä¹å½åæ令å°åç±CSï¼IPå¯åå¨çå 容æ¥å³å®ï¼å¦æç¨æ·æå®èµ·å§å°åå°±ä»æå®çèµ·å§å°åå¼å§æ§è¡ãå¦ææå®æç¹ï¼å½æ令å°è¾¾æ令å°åæ¶åæ¢æ§è¡ï¼å¹¶æ¾ç¤ºåå¯åå¨æ å¿ä½çå 容åä¸ä¸æ¡è¦æ§è¡çå½ä»¤ï¼æå¤å 许ç¨æ·è®¾å®10个æç¹ã
ããä¾ï¼Aï¼\>debug tan.exe
ãã-uï¼åç¼è¯ææ±ç¼è¯è¨ç¨ç
ããâ¦â¦â¦â¦
ãã. .
ãã-g 100 æå®ä¸æç¹
ããProgram terminated normally:
ããå¦å¤ï¼æ们å¨DEBUGä¸å¯è¿è¡ä¸ä¸ªæ件.EXE
ããå¦ï¼Aï¼\>debug tan.exe
ãã-g
ããå³å¯å¼å§è¿è¡æ¤ç¨åºï¼åå¨DOSä¸å®å ¨ä¸æ ·ï¼
ãã* H[æ°å¼][æ°å¼] åå è¿å¶ç®æ¯è¿ç®å½ä»¤
ããåè½ï¼ åå«æ¾ç¤ºä¸¤ä¸ªåå è¿å¶æ°ç¸å çå以å第ä¸ä¸ªæ°åå»ç¬¬äºä¸ªæ°çå·®ã
ãã说æï¼ æ¿ç¨æ·å®æç®åçåå è¿å¶æ°çè¿ç®ã
ããä¾ï¼-h4538 5623
ãã9B5B EF15
ããIå½ä»¤
ããåè½ï¼ ä»æå®ç端å£è¾å ¥å¹¶æ¾ç¤ºï¼ç¨åå è¿å¶ï¼çä¸ä¸ªåèã
ããä¾ï¼-i70
ããF9ï¼æ¾ç¤º70端å£çå 容为F9
ããIå½ä»¤å¯ç±80X86ç64K个端å£åæ°æ®
ããLå½ä»¤
ããåè½ï¼ å°ä¸ä¸ªæ件æççç»å¯¹æåºè£ å ¥åå¨å¨ã
ãã说æï¼ å个Lå½ä»¤è½å¤è£ å ¥çæ大æåºæ°æ¯ 80Hï¼å ¶ä¸çå· 0ï¼1ï¼2ï¼3â¦â¦åå«ä»£è¡¨ Aï¼Bï¼Cï¼â¦â¦åºç°è¯»çéï¼æ¾ç¤ºé误信æ¯ã
ããâ´æ ¼å¼1.Lè£ å ¥å°å 驱å¨å¨å èµ·å§æåº/æåºæ°
ããè¿ç§æ¹å¼å¯æç£çä¸æå®æåºèå´çå å®¹è£ å ¥å°åå¨å¨ä»æå®å°åå¼å§çåºåä¸ï¼å¨æ¤å¤æåºç¼å·å¼ç¨é»è¾/æåºçæ¹å¼ã
ããä¾ï¼-L 100 0 01ï¼å°A驱ç0æåºè£ è³CSï¼100ä¸
ãã-d 100 10f
ãã08F1:0100 EB 3C 90 3C 53 44 4F 53 -36 2E 32 32 02 01 01 00.Lï¼MSDOS 6.22â¦â¦
ããâµæ ¼å¼2ï¼Lè£ å ¥å°å
ããè¿ç§æ¹å¼å¯ææå®æä»¶è£ å ¥å åï¼è£ å ¥çæ件å¯å¨è¿å ¥DEBUGæ¶æå®äº¦å¯ç¨Nå½ä»¤å»ºç«ï¼æ ¼å¼ä¸º-næ件åï¼
ããä¾1 DEBUG tan.pas
ãã-L 100
ããä¾2 DEBUG
ãã-n tan.pas
ãã-L 100
ããé¡»ç¥ï¼Lå½ä»¤åªè½è¯»åé»è¾æåºï¼ä¸è½è¯»å硬çååºè¡¨
ããLå½ä»¤ä¸æç¨çç£ç代ç A=00ï¼B=01ï¼C=02â¦â¦
ãã
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-09-19
Debug原意是杀虫子。这里是机器调试工具。
他的用处有很多
启动 Debug,它是可用于测试和调试 MS-DOS 可执行文件的程序。
Debug [[drive:][path] filename [parameters]]
参数
[drive:][path] filename
指定要测试的可执行文件的位置和名称。
parameters
指定要测试的可执行文件所需要的任何命令行信息。
++
说明
使用 Debug 命令但不指定要测试的文件
如果使用没有位置和文件名的 Debug 命令,然后键入所有的 Debug 命令以响应 Debug 提示符,连字符 (-)。
Debug 命令
以下是 Debug 命令列表:
? 显示 Debug 命令列表。
a 汇编 8086/8087/8088 记忆码。
c 比较内存的两个部分。
d 显示部分内存的内容。
e 从指定地址开始,将数据输入到内存。
f 使用指定值填充一段内存。
g 运行在内存中的可执行文件。
h 执行十六进制运算。
i 显示来自特定端口的 1 字节值。
l 将文件或磁盘扇区内容加载到内存。
m 复制内存块中的内容
/n 为 l 或 w 命令指定文件,或者指定正在测试的文件的参数。
o 向输出端口发送 1 个字节的值。
p 执行循环、重复的字符串指令、软件中断或子例程。
q 停止 Debug 会话。
r 显示或改变一个或多个寄存器。
s 在部分内存中搜索一个或多个字节值的模式。
t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和 Debug 下一步要执行的指令的解码形式。
u 反汇编字节并显示相应的原语句。
w 将被测试文件写入磁盘。
xa 分配扩展内存。
xd 释放扩展内存。
xm 映射扩展内存页。
xs 显示扩展内存的状态。
他的用处有很多
启动 Debug,它是可用于测试和调试 MS-DOS 可执行文件的程序。
Debug [[drive:][path] filename [parameters]]
参数
[drive:][path] filename
指定要测试的可执行文件的位置和名称。
parameters
指定要测试的可执行文件所需要的任何命令行信息。
++
说明
使用 Debug 命令但不指定要测试的文件
如果使用没有位置和文件名的 Debug 命令,然后键入所有的 Debug 命令以响应 Debug 提示符,连字符 (-)。
Debug 命令
以下是 Debug 命令列表:
? 显示 Debug 命令列表。
a 汇编 8086/8087/8088 记忆码。
c 比较内存的两个部分。
d 显示部分内存的内容。
e 从指定地址开始,将数据输入到内存。
f 使用指定值填充一段内存。
g 运行在内存中的可执行文件。
h 执行十六进制运算。
i 显示来自特定端口的 1 字节值。
l 将文件或磁盘扇区内容加载到内存。
m 复制内存块中的内容
/n 为 l 或 w 命令指定文件,或者指定正在测试的文件的参数。
o 向输出端口发送 1 个字节的值。
p 执行循环、重复的字符串指令、软件中断或子例程。
q 停止 Debug 会话。
r 显示或改变一个或多个寄存器。
s 在部分内存中搜索一个或多个字节值的模式。
t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和 Debug 下一步要执行的指令的解码形式。
u 反汇编字节并显示相应的原语句。
w 将被测试文件写入磁盘。
xa 分配扩展内存。
xd 释放扩展内存。
xm 映射扩展内存页。
xs 显示扩展内存的状态。
第2个回答 2019-08-15
DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。
它的功能包括以下几个方面。
⒈
直接输入,更改,跟踪,运行汇编语言源程序;
⒉
观察操作系统的内容;
3.查看ROM
BIOS的内容;
⒋观察更改RAM内部的设置值;
⒌以扇区或文件的方式读写软盘数据。
A
汇编命令
功能:
将指令直接汇编成机器码输入到内存中。
说明:
用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制,
用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到
CS:0100区域。
例A:>DEBUG
-a
0100
08F1:0100
MOV
AH,09
08F1:0102
MOV
DX,109
08F1:0105
INT
21H;
08F1:0107
INT
21H;<-XP下运行cmd
debug时,应该是INT
20H,21H会出遇无效指令错误
08F1:0109
db
'May
I
help
you
$'
08F1:0115←离开a状态
-g
←运行
May
I
help
you
运行结果
Program
terminated
normally表示运行正常
C比较命令
功能:
比较两内存区域中的内容是否相同,若不同则显示其地址和内容。
如:C4000:0
3F
100
就是用来比较4000:0000-4000:003F与DS:0100-DS:013F之间的内容:其显示格式如下:
内存地址1内含值1内含值2内存地址2
例:比较4000:0
3F
100内容的差异
-C4000:0
3F
100
4000:0000
64
43
08F1:0100
4000:0001
3E
69
08F1:0101
显示内容的差异处
4000:0002
78
FF
08F1:0102
……………………………………
如果要比较的范围在DS内,则段地址不必指出:
如:-C
0
4
100;比较DS:0---DS:4与DS:100---DS:104
C命令的另一种格式如下:C地址1
L
长度
地址2
如:-C000:0
L4
0;由0000:0与与DS:0开始比较它同-C0000:0
3
0命令相等,显示结果如下:
0000:0000
8A
C0
08F1:0000
0000:0001
10
20
08F1:0001
它们都比较4个字节
0000:0002
1C
00
08F1:0002
0000:0003
49
7F
08F1:0003
转储命令
*
D[地址]
或D[起始地址][目的地址]
转储命令
功能:
以内存映象方式显示内存中的信息。
说明:
转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCⅡ字符显示,所有不可打印字符用句号(。)表示。每行显示16个字节的内容,在第八和第九个字节之间有一个连字符
-
此命令隐含的段地址为DS的值。若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令,
则从初使化的段寄存器的内容,加上地址偏移量
0100H
开始显示。
例:-d10,4f即为显示DS:4f的内容在D命令中如不指出段地址,则其默认为DS段。
如指明段地址,则从指明的段地址列出指定的范围
如:-dfff:00:0f
我们也可以指定长度来列出所需要内存内容
如:-d
100
L20即为显示由DS:100-DS:11F的内容,共20H个字节:
*
E[地址]
[字节串)
修改内存命令
功能:
从指定的地址开始修改内存值。
格式:E起始地址[数据行]
⑴用给定内容代替指定范围的单元内容
-E地址
内容表
例:-E100
41
42
43
44
48
47
46
45
-D
100,L08
08F1:0100
41
42
43
44
48
47
46
45
ABCDHGFE…
⑵逐个内存内容
例:-E
100:
08F1:0100
76
42
:42是操作员键入
此命令是将原100号内存内容76修改为42,用D命令可察看。
*
F[地址范围]
[字节或字节串]
填写命令
功能:
将要填写的字节或字节串填入由地址范围指定的存储器中。
例:-f100
120
61
62
63
64
-d100
11f
08F1:0100
61
62
63
64
61
62
63
64
-61
62
63
64
61
62
63
abcd
abcd
abcd
abcd
08F1:0110
13
67
98
E3
C8
2E
B3
B6
-03
21
AC
19
3121
4E
96
g……1…
如果数据行超出指定的范围,则填不下的数值会被忽略。
例:-f
100
107
41
43
43
44
45
46
47
48
49
4A
4B
4C
4D
-d
100,lof
08F1:0100
41
42
43
44
45
46
47
64
-61
62
63
64
ABCDEFGdabcdabcd
由上例可看出,超出范围的数据被忽略
另外,F和E命令都可填入字符串:
如:-F
100
105
"MSDOS"
-d
100
l0f
08F1:0100
4D
53
44
4F
53
46
47
64
-61
62
63
64
MS
DOS
FGabcd
abcd
G执行命令
功能:
执行正在调试的程序,当达到断点时停止执行,
并且显示寄存器标志和下一条要执行的命令。
说明:
如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。如果指定断点,当指令到达指令地址时停止执行,并显示各寄存器标志位的内容和下一条要执行的命令,最多允许用户设定10个断点。
例:A:\>debug
tan.exe
-u:反编译成汇编语言程码
…………
.
.
-g
100
指定中断点
Program
terminated
normally:
另外:我们在DEBUG下可运行一个文件.EXE
如:A:\>debug
tan.exe
-g
即可开始运行此程序,和在DOS下完全一样:
*
H[数值][数值]
十六进制算术运算命令
功能:
分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。
说明:
替用户完成简单的十六进制数的运算。
例:-h4538
5623
9B5B
EF15
I命令
功能:
从指定的端口输入并显示(用十六进制)的一个字节。
例:-i70
F9;显示70端口的内容为F9
I命令可由80X86的64K个端口取数据
L命令
功能:
将一个文件或盘的绝对扇区装入存储器。
说明:
单个L命令能够装入的最大扇区数是
80H,其中盘号
0,1,2,3……分别代表
A,B,C,……出现读盘错,显示错误信息。
⑴格式1.L装入地址
驱动器名
起始扇区/扇区数
这种方式可把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中,在此外扇区编号引用逻辑/扇区的方式。
例:-L
100
0
01,将A驱的0扇区装至CS:100上
-d
100
10f
08F1:0100
EB
3C
90
3C
53
44
4F
53
-36
2E
32
32
02
01
01
00.L,MSDOS
6.22……
⑵格式2:L装入地址
这种方式可把指定文件装入内存,装入的文件可在进入DEBUG时指定亦可用N命令建立,格式为-n文件名:
例1
DEBUG
tan.pas
-L
100
例2
DEBUG
-n
tan.pas
-L
100
须知:L命令只能读取逻辑扇区,不能读取硬盘分区表
L命令中所用的磁盘代码A=00,B=01,C=02……
它的功能包括以下几个方面。
⒈
直接输入,更改,跟踪,运行汇编语言源程序;
⒉
观察操作系统的内容;
3.查看ROM
BIOS的内容;
⒋观察更改RAM内部的设置值;
⒌以扇区或文件的方式读写软盘数据。
A
汇编命令
功能:
将指令直接汇编成机器码输入到内存中。
说明:
用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制,
用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到
CS:0100区域。
例A:>DEBUG
-a
0100
08F1:0100
MOV
AH,09
08F1:0102
MOV
DX,109
08F1:0105
INT
21H;
08F1:0107
INT
21H;<-XP下运行cmd
debug时,应该是INT
20H,21H会出遇无效指令错误
08F1:0109
db
'May
I
help
you
$'
08F1:0115←离开a状态
-g
←运行
May
I
help
you
运行结果
Program
terminated
normally表示运行正常
C比较命令
功能:
比较两内存区域中的内容是否相同,若不同则显示其地址和内容。
如:C4000:0
3F
100
就是用来比较4000:0000-4000:003F与DS:0100-DS:013F之间的内容:其显示格式如下:
内存地址1内含值1内含值2内存地址2
例:比较4000:0
3F
100内容的差异
-C4000:0
3F
100
4000:0000
64
43
08F1:0100
4000:0001
3E
69
08F1:0101
显示内容的差异处
4000:0002
78
FF
08F1:0102
……………………………………
如果要比较的范围在DS内,则段地址不必指出:
如:-C
0
4
100;比较DS:0---DS:4与DS:100---DS:104
C命令的另一种格式如下:C地址1
L
长度
地址2
如:-C000:0
L4
0;由0000:0与与DS:0开始比较它同-C0000:0
3
0命令相等,显示结果如下:
0000:0000
8A
C0
08F1:0000
0000:0001
10
20
08F1:0001
它们都比较4个字节
0000:0002
1C
00
08F1:0002
0000:0003
49
7F
08F1:0003
转储命令
*
D[地址]
或D[起始地址][目的地址]
转储命令
功能:
以内存映象方式显示内存中的信息。
说明:
转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCⅡ字符显示,所有不可打印字符用句号(。)表示。每行显示16个字节的内容,在第八和第九个字节之间有一个连字符
-
此命令隐含的段地址为DS的值。若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令,
则从初使化的段寄存器的内容,加上地址偏移量
0100H
开始显示。
例:-d10,4f即为显示DS:4f的内容在D命令中如不指出段地址,则其默认为DS段。
如指明段地址,则从指明的段地址列出指定的范围
如:-dfff:00:0f
我们也可以指定长度来列出所需要内存内容
如:-d
100
L20即为显示由DS:100-DS:11F的内容,共20H个字节:
*
E[地址]
[字节串)
修改内存命令
功能:
从指定的地址开始修改内存值。
格式:E起始地址[数据行]
⑴用给定内容代替指定范围的单元内容
-E地址
内容表
例:-E100
41
42
43
44
48
47
46
45
-D
100,L08
08F1:0100
41
42
43
44
48
47
46
45
ABCDHGFE…
⑵逐个内存内容
例:-E
100:
08F1:0100
76
42
:42是操作员键入
此命令是将原100号内存内容76修改为42,用D命令可察看。
*
F[地址范围]
[字节或字节串]
填写命令
功能:
将要填写的字节或字节串填入由地址范围指定的存储器中。
例:-f100
120
61
62
63
64
-d100
11f
08F1:0100
61
62
63
64
61
62
63
64
-61
62
63
64
61
62
63
abcd
abcd
abcd
abcd
08F1:0110
13
67
98
E3
C8
2E
B3
B6
-03
21
AC
19
3121
4E
96
g……1…
如果数据行超出指定的范围,则填不下的数值会被忽略。
例:-f
100
107
41
43
43
44
45
46
47
48
49
4A
4B
4C
4D
-d
100,lof
08F1:0100
41
42
43
44
45
46
47
64
-61
62
63
64
ABCDEFGdabcdabcd
由上例可看出,超出范围的数据被忽略
另外,F和E命令都可填入字符串:
如:-F
100
105
"MSDOS"
-d
100
l0f
08F1:0100
4D
53
44
4F
53
46
47
64
-61
62
63
64
MS
DOS
FGabcd
abcd
G执行命令
功能:
执行正在调试的程序,当达到断点时停止执行,
并且显示寄存器标志和下一条要执行的命令。
说明:
如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。如果指定断点,当指令到达指令地址时停止执行,并显示各寄存器标志位的内容和下一条要执行的命令,最多允许用户设定10个断点。
例:A:\>debug
tan.exe
-u:反编译成汇编语言程码
…………
.
.
-g
100
指定中断点
Program
terminated
normally:
另外:我们在DEBUG下可运行一个文件.EXE
如:A:\>debug
tan.exe
-g
即可开始运行此程序,和在DOS下完全一样:
*
H[数值][数值]
十六进制算术运算命令
功能:
分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。
说明:
替用户完成简单的十六进制数的运算。
例:-h4538
5623
9B5B
EF15
I命令
功能:
从指定的端口输入并显示(用十六进制)的一个字节。
例:-i70
F9;显示70端口的内容为F9
I命令可由80X86的64K个端口取数据
L命令
功能:
将一个文件或盘的绝对扇区装入存储器。
说明:
单个L命令能够装入的最大扇区数是
80H,其中盘号
0,1,2,3……分别代表
A,B,C,……出现读盘错,显示错误信息。
⑴格式1.L装入地址
驱动器名
起始扇区/扇区数
这种方式可把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中,在此外扇区编号引用逻辑/扇区的方式。
例:-L
100
0
01,将A驱的0扇区装至CS:100上
-d
100
10f
08F1:0100
EB
3C
90
3C
53
44
4F
53
-36
2E
32
32
02
01
01
00.L,MSDOS
6.22……
⑵格式2:L装入地址
这种方式可把指定文件装入内存,装入的文件可在进入DEBUG时指定亦可用N命令建立,格式为-n文件名:
例1
DEBUG
tan.pas
-L
100
例2
DEBUG
-n
tan.pas
-L
100
须知:L命令只能读取逻辑扇区,不能读取硬盘分区表
L命令中所用的磁盘代码A=00,B=01,C=02……
第3个回答 2020-12-23
debug命令:程序调试工具
第4个回答 2013-09-19
修复安装你电脑比如出什么问题了,DLL什么被误删导致开不了机这时就需要用系统盘进入故障恢复台修复安装