Á¦ 6Àå ºñ±³ºÐ±â¿Í ¼­ºê·çƾ -------------------------------------------------------------------------------- µð¹ö±×(DEBUG)ÀÇ Ä¿¸ÇµåÀÇ ¿ä¾à -------------+----------------------------------------+------------------------- Ä¿¸Çµå | ¸ñÀû(Purpose) |¸í·É COMMAND | |Çü½Ä(Format) -------------+----------------------------------------+------------------------- Assemble |¹®ÀåÀ» ¾î¼ÀºíÇÑ´Ù. A[¹øÁö] Compare |¸Þ¸ð¸®¸¦ ºñ±³ÇÑ´Ù. C¹üÀ§¹øÁö Dump |¸Þ¸ð¸®¸¦ Ç¥½ÃÇÑ´Ù. D[¹øÁö]À̰ųª | D[¹üÀ§] Enter |¸Þ¸ð¸®¸¦ º¯°æÇÑ´Ù. E ¹øÁö [¸®½ºÆ®] Fill |¸Þ¸ð¸® ºí·°À» º¯°æÇÑ´Ù. F¹üÀ§ ¸®½ºÆ® Go |¼±ÅÃÀû ºê·¹ÀÌÅ© Æ÷ÀÎÆ®¸¦ °®°í ½ÇÇàÇÑ´Ù. G [=¹øÁö] | [¹øÁö | [¹øÁö...]] Hexarithmetic|16Áø¼öµ¡¼À,»¬¼À H °ª °ª Input |ÀÔ·Â ¹ÙÀÌÆ®¸¦ Àаųª Ç¥½ÃÇÑ´Ù. I Æ÷Æ®¹øÁö Load |È­ÀÏÀ̳ª Àý´ë µð½ºÄÏ ¼½Å͸¦ ¸Þ¸ð¸®¿¡ ·ÎµåÇÑ´Ù. L[¹øÁö[µå¶óÀ̺ê | ¼½ÅÍ ¼½ÅÍ]] Move |¸Þ¸ð¸® ºí·°À» Àü¼ÛÇÑ´Ù. M ¹üÀ§¹øÁö Name |È­ÀÏÀ̳ª Æз¯¹ÌÅ͸¦ Á¤ÀÇÇÑ´Ù. [d:] | [Æнº]È­ÀÏÀ̸§[.È®ÀåÀÚ] Output |Ãâ·Â¹ÙÀÌÆ®¸¦ ³»º¸³½´Ù. O Æ÷Æ®¹øÁö ¹ÙÀÌÆ® Quit |µð¹ö±× ÇÁ·Î±×·¥À» ³¡³½´Ù. Q Register |·¹Áö½ºÅͳª Ç÷¹±×¸¦ Ç¥½ÃÇÑ´Ù. R[·¹Áö½ºÅÍÀ̸§] Search |¹®ÀÚ¸¦ ã´Â´Ù. S ¹üÀ§¸®½ºÆ® Trace |ÁýÇàÇÏ°í Ç¥½ÃÇÑ´Ù. T [=¹øÁö][°ª] Unassemble |¸í·ÉÀ» µð¾î¼ÀºíÇÑ´Ù. U[¹øÁö]À̰ųª | U[¹üÀ§] Write |È­ÀÏÀ̳ª Àý´ë µð½ºÄÏ ¼½Å͸¦ ±â·ÏÇÑ´Ù. W[¹øÁö][µå¶óÀ̺ê | ¼½ÅÍ ¼½ÅÍ] -------------+------------------------------------------------------------------ 6.1 ¹Ýº¹Ã³¸®¿Í Á¶°ÇºÐ±â ¸í·É(conditional branch instruction) -------------------------------------------------------------------------------- Á¶°ÇºÐ±â ¸í·É:¹Ýº¹À» ÇÒ¶§ ÇÊ¿ä ºÒ°¡°áÇÑ ¿ä¼Ò CMP AX,0 ; AX·¹Áö½ºÅÍÀÇ °ªÀ» 0 °ú ºñ±³Ç϶ó JE 100 ; ¹Ù·Î À§ÀÇ ºñ±³ °á°ú°¡ °°´Ù¸é 100¹øÁö·Î ºÐ±âÇ϶ó CMP(compare) : ·¹Áö½ºÅͳª ¸Þ¸ð¸® ¹× ¼ýÀÚÀÇ Å©±â¸¦ ºñ±³ÇÕ´Ï´Ù. JE(Jump if Equal) °°´Ù¸é ºÐ±âÇ϶ó JNE(Jump if Nor Equal) °°Áö ¾Ê´Ù¸é ºÐ±âÇ϶ó JA(Jump if Above) ~ ÀÌ»ó À̶ó¸é ºÐ±âÇ϶ó JC(Jump if Carry) ij¸®Ç÷¡±×°¡ 1 À̶ó¸é ºÐ±âÇ϶ó CMP +- ¹ü¿ë ·¹Áö½ºÅÍ(8/16ºñÆ®)-+ +-·¹Áö½ºÅÍ(8/16ºñÆ®) +- ¸Þ¸ð¸® (8/16ºñÆ®)-+ +-¸Þ¸ð¸® (8/16ºñÆ®) +-¼ýÀÚ (8/16ºñÆ®) ¿¹Á¦) JMP1.ASM 1ºÎÅÍ 100 ±îÁö ÀÇ ¼ö¸¦ ´õÇÏ´Â ÇÁ·Î±×·¥ CODE SEGMENT ASSUME CS:CODE,DS:CODE MOV AX,CODE ; DS¼³Á¤ MOV DS,AX ; MOV CX,100 ;CX¿¡ 100À» ÁöÁ¤ MOV AX,0 ;AX ¿¡ 0À» ÁöÁ¤ MEXT: ADD AX,CX SUB CX,1 CMP CX,0 ; CXÀÇ ³»¿ëÀÌ 0Àΰ¡ ºñ±³ JNE NEXT ;0ÀÌ¸é ¹ØÀ¸·Î ¾Æ´Ï¸é NEXT ¶ó´Â ¶óº§·Î À̵¿ MOV TOTAL,AX MOV AH,4CH ;³¡³»°í MS-DOS·Î µ¹¾Æ°£´Ù. INT 21H ; TOTAL DW ? ; CODE ENDS END ¶óº§(label)ÀÇ »ç¿ë: ¶óº§À̶ó´Â °ÍÀº ¸í·ÉµîÀÌ ÀÖ´Â ¹øÁö¿¡ ºÙ¿©Áø À̸§ÀÔ´Ï´Ù. ¶óº§À̸§ÀÇ Á÷ÈÄ¿¡ ÄÝ·Ð" : " À» ³Ö´Â´Ù INC,DEC ¸í·É: ·¹Áö½ºÅͳª ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» +/-1 ÇϱâÀ§ÇÑ ¸í·ÉÀ¸·Î¼­ INC(increment.Áõ°¡) DEC(decrement.°¨¼Ò)¸í·ÉÀÌ ÁغñµÇ¾î ÀÖÀ¾´Ï´Ù. SUB CX,1 ´ë½Å DEC CX ·Î ¾µ¼ö°¡ ÀÖÀ¾´Ï´Ù. INC +- ¹ü¿ë ·¹Áö½ºÅÍ(8/16ºñÆ®) +- ¸Þ¸ð¸® (8/16ºñÆ®) DEC +- ¹ü¿ë ·¹Áö½ºÅÍ(8/16ºñÆ®) +- ¸Þ¸ð¸® (8/16ºñÆ®) ¶ÇÇÑ ¿©»ê Á÷ÈÄ¿¡ ±×°á°ú°¡ 0 ÀÎÁö ¾Æ´ÑÁö¸¦ ºñ±³ÇÏ¿© ºÐ±âÇÏ´Â °æ¿ì¿¡´Â ºñ±³¸í·ÉÀ» »ý·« ÇÒ¼ö°¡ ÀÖÀ¾´Ï´Ù. Ç÷¹±× ·¹Áö½ºÅÍÀÇ µ¿ÀÛ¿¡ °üÇÑ Àý¿¡¼­ ¼³¸íÇÏ°ÚÁö¸¸ ,ADD³ª SUB,INC,DEC µîÀÇ ¿¬»ê ¸í·É ´ÙÀ½¿¡ ´Â Á÷Á¢ Á¶°Ç ºÐ±â ¸í·ÉÀ» ³ÖÀ» ¼ö°¡ ÀÖÀ¾´Ï´Ù. ( ÀÌ °æ¿ì ¿¡ ´Â °á°ú°¡ 0 À¸·Î ºñ±³µÈ °ÍÀ¸·Î °£ÁÖ µË´Ï´Ù.) µû¶ó¼­ NEXT: ADD AX,CX DEC CX CMP CX,0 JNE NEXT ´Â NEXT: ADD AX,CX DEC CX JNE NEXT °¡ µË´Ï´Ù. ¹Ýº¹À» ³¡³»´Â Á¶°ÇÀº ,óÀ½ÀÇ Çϳª ,¸¶Áö¸·ÀÇ Çϳª¿¡ ÁÖÀÇ L1: ADD AX,CX INC CX CMP CX,100 JBE CX=100 À¸·Î Çعö¸°¸é AX ¿¡´Â 100 ÀÌ ´õÇØÁöÁö ¾ÊÀ¾´Ï´Ù. ±×·¡¼­ ¹Ýº¹ÇÏ´Â Á¶°ÇÀ¸·Î CX < 100 ÀÇ »çÀÌ¿¡¼­°¡ ¾Æ´Ï¶ó CX<=100ÀÇ Á¶°ÇºÐ±â ¸í·É ¿¡´Â JBE(Jump if Below or Equal)¸¦ »ç¿ëÇÕ´Ï´Ù. DUPÀÇ»ç¸í·É°ú ºí·°Àü¼Û: ---------------------- DB 16 DUP (?) | +--->DUP´Â duplication ÀÇ ¾àÀÚ ¿©±â¿¡¼­ ÇàÇÑ Á¤ÀÇ Áß¿¡ »ç¿ëµÇ°í ÀÖ´Â DUP´Â ()¼Ó¿¡ °ÍÀ» ()¿ÞÂÊÀÇ °¹¼ö¸¸Å­ ¹Ýº¹ÇÏ ¶ó´Â ÀǹÌÀÔ´Ï´Ù. ¿¹Á¦)JMP3.ASM MSG1ºÎÅÍ ÀúÀåµÈ 10¹ÙÀÌÆ®¸¦ MSG2 ·Î Àü¼ÛÇÏ´Â ÇÁ·Î±×·¥ CODE SEGMENT ASSUME CS:CODE,DS:DATA ; MOV AX,DATA ; DS¼³Á¤ MOV DS,AX MOV SI,OFFSET MSG1 ;SI ¿¡ MSG1 ¹øÁö°ªÀ» ÁöÁ¤ÇÑ´Ù. MOV DI,OFFSET MSG2 MOV CX,10 CONT: MOV AL,BYTE PTR [SI] ;MSG1 ºÎÅÍ MSG2 ·Î 1¹ÙÀÌÆ®Àü¼Û MOV BYTE PTR [DI],AL INC SI ;Àü¼ÛÇÏ´Â ¹øÁö¸¦ Çϳª¾¿ Áõ°¡½ÃŲ´Ù. INC DI DEC CX ;Àü¼ÛÇؾßÇÒ °¹¼öÀÇ Ä«¿îÆ®¸¦ Çϳª¾¿ ÁÙÀδÙ. JNE CONT MOV AH,4CH ; ³¡³»´Â ½Ã½ºÅÛÈ£Ãâ INT 21H ; CODE ENDS ;---------------- DATA SEGMENT MSG1 DB 'ABCDEFGHIJKLMNOP' MSG2 DB 16 DUP (?) ;16¹ÙÀÌÆ® ¸¸Å­ÀÇ ºñÃʱâÈ­ ¸Þ¸ð¸®¸¦ È®º¸ DATA ENDS END µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®(DS;data segment)°ªÀ» ¾Æ´Â ¹æ¹ý: À§ÇÁ·Î±×·¥ÀÇ ½ÇÇà°á°ú¸¦ È®ÀÎÇÏ·Á¸é ,MSG1 ¹× MSG2 ¿¡ ÀÖ´Â ¹øÁö¸¦ ¾ËÁö¾ÊÀ¸¸é ¾ÈµË ´Ï´Ù. ±×·¯³ª ÇÁ·Î±×·¥À» ½ÇÇàÇϱâÀü¿¡´Â DS ÀÇ °ªÀº PSP(program segment prefix)ÀÇ ¼±µÎ¸¦ °¡¸®Å°°í Àֱ⠶§¹®¿¡ µ¥ÀÌÅ͸¦ ÀÐÀ» ¼ö°¡ ¾øÀ¾´Ï´Ù. +--------------------------------------------------+ DS:µ¥ÀÌÅÍ ¼¼±×¸ÕÆ® | +---------------+--->DS,ES | ·¹Áö½ºÅÍ | | PSP | | ES:¿¢½ºÆ®¶ó ¼¼±×¸ÕÆ® | +---------------+--->CS,SS | ·¹Áö½ºÅÍ | |ÄÚµå ¼¼±×¸ÕÆ® | | | +---------------+<-- ¿©±â¿¡ ¼¼±×¸ÕÆ® ¹øÁö¸¦ | | |µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®| ¾Ë°í½Í´Ù | | +---------------+ | +--------------------------------------------------+ ¸Þ¸ð¸®¿¡ ·ÎµåµÇ¾úÀ» ¶§ÀÇ EXEÈ­ÀÏÀÇ ¿¹ ½ÇÁ¦·Î µ¥ÀÌÅÍ°¡ ÀúÀåµÇ¾î ÀÖ´Â ¼¼±×¸ÕÆ® ¹øÁö¸¦ ¾ËÇÊ¿ä°¡ ÀÖÀ¾´Ï´Ù. MOV AX,DATA MOV DS,AX ¿¡¼­ DATA ÀÇ ³»¿ëÀ» ´ëÄ¡ÇÏ´Â MOV AX,2244 ·Î ¿ª¾î¼Àºí µË´Ï´Ù. 2244´Â °¢ PC ÀÇ »óȲ¿¡µû¶ó ´Ù¸¨´Ï´Ù. -D2244:0,1F 2244:0000 41 42 43 44 45 46 47 48-49 4A 4B 4C 4D 4E 4F 50 ABCDEFGHIJKLMNOP ·¹Áö½ºÅÍ Àд R Ä¿¸Çµå¿¡ ÀÇÇØ µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®ÀÇ°ªÀ» ¼¼Æ®ÇÑ´ÙÀ½,´ÙÀ½°ú °°ÀÌ º¼¼ö µµÀÖÀ¾´Ï´Ù. -RDS DS 2232 :2244 -D0,1F 2244:0000 41 42 43 44 45 46 47 48-49 4A 4B 4C 4D 4F 50 Á¶°Ç ºÐ±â ¸í·É¿¡ ´ëÇÑ À϶÷Ç¥¸¦ ¸¸µé¾úÀ¾´Ï´Ù. +-----------------+----------------+---------------------+ |ºÐ±âÇϱâÀ§ÇÑ A,B |ºÎÈ£¾ø´Â ¼ýÀÚÀÎ |ºÎÈ£ÀÖ´Â ¼ýÀÚÀÎ | |ÀÇ ´ë¼Ò°ü°è |°æ¿ì |°æ¿ì | +-----------------+----------------+---------------------+ |A>B |JA/JNBE |JG/JNLE | |A>=B |JNB/JAE |JGE/JNL | |A=B |JZ/JE |JZ/JE | |A<=B |JBE/JNA |JLE/JNG | |AB |JA/JNBE | 0 | 0 |JG/JNLE | 0 | 0 | |A>=B |JNB/JAE | 0 | * |JGE/JNL | 0 | * | |A=B |JZ/JE | * | 1 |JZ/JE | * | 1 | |A<=B |JBE/JNA | 1 | 1 |JLE/JNG | 1 | 1 | |A=B),Áï A|0 |F | --->¾Æ½ºÅ° ÄÚµå·Î º¯È¯ --> Ãâ·Â | |+--+--+ +--+--+ | | DL | | | +--+--+ | | +------->|0 |3 | --->¾Æ½ºÅ° ÄÚµå·Î º¯È¯ --> Ãâ·Â | | +--+--+ | +--------------------------------------------------------+ ·¹Áö½ºÅÍÀÇ ºñÆ® ´ÜÀ§·Î µ¥ÀÌÅ͸¦ Ãë±ÞÇÏ·Á¸é,º¸Åë ³í¸® ¿¬»ê¸í·ÉÀ̳ª,½¬ÇÁÆ®(À̵¿) ·ÎÅ×ÀÌÆ®(rotate, ȸÀü ) ¸í·ÉÀ» »ç¿ëÇÑ´Ù. ¿©±â¼­´Â ÇнÀÀ» À§ÇØ °ö¼À°ú ³ª´°¼ÀÀ» »ç¿ëÇÑ´Ù. AL 3F \/ * 10H AX 03F0 / | »óÀ§ÀÚ¸® º¸Á¸ <--- 03 | AH 00 | \ \/ AX 00F0 \/ %10H AX 000F \/ <-------- 0F ¿¹Á¦)PUTAL.ASM AL·¹Áö½ºÅÍ ³»ÀÇ °ªÀ» ASCIIÄÚµå 16Áø¼ö°ªÀ¸·Î È­¸é¿¡ Ç¥½ÃÇÏ´Â ÇÁ·Î±×·¥ (¼­ºê·çƾÀ» »ç¿ëÇÑ´Ù.)AL ³»ÀÇ °ªÀº 3FH°ªÀ» ¿¹·Î µé¾ú´Ù. CODE SEGMENT ASSUME CS:CODE,DS:CODE ; MOV AX,CODE ; DSÀÇ ÃʱâÄ¡ ¼³Á¤ MOV DS,AX ; MOV AL,3FH ;óÀ½AL¿¡ 3FH°¡ µé¾î ÀÖ´Ù°í ÇÏÀÚ CALL PUTAL ;¼­ºê·çƾÀ» È£ÃâÇÑ´Ù. ; MOV AH,4CH INT 21H ;----------------------- PUTAL: MOV BL,10H ;ALÀ» 10H Çϸé AH,AL -----+»óÀ§ÀÚ¸® MUL BL ; 03 F0 °¡ µÈ´Ù. |ÇÏÀ§ÀÚ¸®·Î MOV LEVEL2,AH ; |ºÐÇÒÇÏ´Â MOV AH,0 ;AX¸¦ 10H ºÐÀÇ 1 ·Î ³ª´©¸é AH AL |¼­ºê·çƾ MOV BL,10H 00 0F °¡ µÈ´Ù | DIV BL | MOV LEVEL1,AL ; ÇÏÀ§ÀÚ¸® º¸Á¸ | MOV DL,LEVEL2 ; -+ »óÀ§ÀÚ¸® Ç¥½Ã | CALL PUTHEX -+ | MOV DL,LEVEL1 ; -+ ÇÏÀ§ÀÚ¸® Ç¥½Ã | CALL PUTHEX -+ | RET ----+ ;--------------------------- PUTHEX: CMP DL,0AH JAE HEX2 ADD DL,'0' ; 0 ÀÇ ASCII ÄÚµå °ªÀÌ 30H ÀÌ´Ù. ----+¼öÄ¡¿¡ ´ëÇÑ JMP HEX3 (0 ¿¡¼­ 9 Àΰæ¿ì) |¾Æ½ºÅ° Äڵ带 HEX2: ADD DL,'A'-0AH ; A ¿¡¼­ F Àΰæ¿ì |»êÃâ,Ç¥½ÃÇÏ´Â HEX3: MOV AH,2 'A' ÀÇ ASCIIÄڵ尪Àº 41ÀÌ´Ù |¼­ºê·çƾ INT 21H 'B'´Â 42°¡ Ç¥½Ãµµ±â À§Çؼ­´Â | RET 41+1ÀÌ µÇ¾î¾ß Çϴµ¥ ÀÌ°ÍÀº | 'A'+(BH-AH)ÀÇ °è»êÀ¸·Î °¡´ÉÇÏ´Ù. --+ LEVEL2 DB ? LEVEL1 DB ? ; CODE ENDS END ¼­ºê·çƾ PUTAL ¼Ó¿¡¼­ ´Ù½Ã ¼­ºê·çƾ PUTHEX ¸¦ È£ÃâÇÒ¼öµµ ÀÖÀ¾´Ï´Ù. ¿©±â¿¡¼­ Ãâ·Â½Ã½ºÅÛ INT 21Àº DL ·¹Áö½ºÅÍ¿¡ ASCIIÄڵ尪À» ³ÖÀ» ¶§ ±×¿¡ ÇØ´çÇÏ´Â ASCII ¹®ÀÚ°¡ È­¸é¿¡ Ãâ·ÂµÈ´Ù. 0 ¿¡¼­ 9 ±îÁöÀÇ ¼ýÀÚ¿¡ ´ëÀÀÇÏ´Â ¾Æ½ºÅ° ÄÚµå¿Í A ¿¡¼­ F ±îÁö ´ëÀÀ ÇÏ´Â ¾Æ½ºÅ°ÄÚµå °¡ ¿¬¼ÓÇÏ¿© ÀÖÁö¾ÈÀ¸¹Ç·Î ,¼ýÀÚ°¡ 0AH ¹Ì¸¸ÀÎÁö ¾Æ´ÑÁö ¿¡ µû¶ó º¯È¯À» À§Çؼ­ ´õÇÏ ´Â ¼ýÀÚ°¡ ´Þ¶ó Áý´Ï´Ù. +-------------+--------------+--------------+ | ¹®ÀÚ | 0 ~ 9 | A ~ F | | ¾Æ½ºÅ° ÄÚµå | 30 ~ 39 | 41 ~ 46 | +-------------+--------------+--------------+ ¼ýÀÚ¸¦ Ç¥½ÃÇÒ°æ¿ì¿¡´Â À­ÀÚ¸®¸¦ ¸ÕÀú, ¾Æ·§ÀÚ¸®¸¦ ³ªÁß¿¡ Ç¥½ÃÇÏÁö ¾ÊÀ¸¸é ¾È µË ´Ï´Ù. ±¸ÇÑ ¼ø¼­¿Í Ç¥½ÃÇÑ ¼ø¼­°¡ ÀÏÄ¡ÇÏÁö ¾ÊÀ» ¶§µµ ÀÖÀ¸¹Ç·Î ,±× ¿Í °°Àº °æ¿ì¿¡´Â °¢ ÀÚ¸®ÀÇ ¼ýÀÚ¸¦ º¸Á¸ÇØ µÎ´Â °ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù. PROC¿¡ ÀÇÇÏ ¼­ºê·çƾÀÇ ±¸Á¶È­: ¼­ºê·çƾÀ» º¸´Ù ±¸Á¶ÀûÀ¸·Î Ç¥ÇöÇϱâÀ§Çؼ­ ÇÁ·Î½Ãµà¾î(procedure)ÀÇ»ç ¸í·É¿¡ ÀÇÇØ ¼­ºê·çƾÀÇ ¾ÕµÚ¸¦ ¸í½Ã Çϵµ·Ï ÇÕ´Ï´Ù. SUB1 PROC ¼­ºê·çƾ º»Ã¼ SUB1 ENDP 16Áø¼ö°ªÀÇ ÀԷ¹ý ¿¹Á¦)GETAL.ASM Å°º¸µå·Î ºÎÅÍ ASCIIÄڵ带 ÀÔ·ÂÇÏ¿© ÀÌÄڵ忡 ÇØ´çÇÏ´Â ASCII¹®ÀÚ Ãâ·Â CODE SEGMENT ASSUME CS:CODE CR EQU 0DH LF EQU 0AH ; NEXT: CALL GETAL ; Å°º¸µå·Î ºÎÅÍ µÎ°³ÀÇ ¼ýÀÚ ÀÔ·Â JC EXITP ;¿¡·¯ÀÌ¸é ³¡³¿ MOV DL.AL CALL PUTASC ;¾Æ½ºÅ° ÄÚµåÀÇ Ãâ·Â JMP NEXT EXITP: MOV AH,4CH ;Á¾·áÇÏ¿© MS-DOS·Îµ¹¾Æ°£´Ù. INT 21H ;----------------------- GETAL PROC MOV AH,1 ; ¿ì¼±ÇÑÀÚ¸¦ ÀÔ·ÂÇÑ´Ù. INT 21H CALL CVTAL ; ¾Æ½ºÅ° ÄÚµå ---> ¼ýÀÚ JC GETEND ;¿¡·¯ÀÌ¸é µÇµ¹¾Æ °£´Ù. MOV DH,AL ; º¸Á¸ MOV AH,1 ;µÎ¹ø°±ÛÀÚÀÔ·Â INT 21H CALL CVTAL --- ¾Æ½ºÅ° ÄÚµå ---> ¼ýÀÚ JC GETEND ;¿¡·¯ÀÌ¸é µÇµ¹¾Æ°£´Ù. MOV DL,AL MOV BH,10H ;»óÀ§ÀÚ¸®¸¦ 10¹è MOV AL,DH MUL BH ADD AL,DL ;ÇÏÀ§ÀÚ¸®¿Í ´õÇÑ´Ù GETEND: RET GETAL ENDP ;-------------------------- CVTAL PROC CMP AL,'0' JB ERR1 ;ASCII Äڵ尪À¸·ÎºÎÅÍ CMP AL,'9' 30Hº¸´Ù ÀûÀ»°æ¿ì ERR1 JA SKIP1 SUB AL,'0' JMP SKIP2 SKIP1: CMP AL,'A' ---+ 'A'~'F'À̸é JB ERR1 | ¾Æ½ºÅ° ÄÚµåÀÇ CMP AL,'F' | 'A'¸¦ »©°í JA ERR1 | 0AH¸¦ ´õÇÑ´Ù. SUB AL,'A'-OAH -+ SKIP2: CLC ;¿¡·¯°¡¾øÀ¸¸é JMP CVTEND ij¸®¸¦ Ŭ¸®¾î ERR1: STC ;¿¡·¯À̸é ij¸®¸¦ ¼¼Æ® CVTEND: RET CVTAL ENDP ;--------------------- PUTASC PROC MOV DH,DL ; DL ¿¡ÀÖ´Â ASCIIÄÚµå 16Áø °ªÀ»Àá±ñ ´ëÇǽÃŲ´Ù. MOV DL,' ' -+ ; DL¿¡ ÀÖ´Â ¾Æ½ºÅ°ÄÚµå 16Áø°ªÀ» Àá±ñ´ëÇǽÃŲ´Ù. MOV AH,2 |°ø¹éÃâ·Â INT 21H -+ MOV DL,DH -+ ; ´ëÇǽÃÄ×´ø°ÍÀ» µÇ ã´Â´Ù MOV AH,2 |¾Æ½ºÅ°ÄÚµå Ãâ·Â INT 21H -+ MOV DL,CR -+ ; carriage return À» Ãâ·Â MOV AH,2 | º¹±Í °³Çà INT 21H | MOV DL,LF | ; line feed MOV AH,2 | INT 21H -+ RET PUTASC ENDP CODE ENDS END CVTALÀº ,GETAL·ÎºÎÅÍ È£ÃâµÈ ¼­ºê·çƾ¿¡¼­ ¾Æ½ºÅ° Äڵ带¼ýÀÚ·Î º¯È¯Çϴ°ÍÀÔ´Ï´Ù. ¸¸ÀÏ ¼ýÀÚÀÌ¿Ü¿¡ ÀÔ·ÂÀÌ ÀÖÀ» ¶§¿¡´Â ij¸®Ç÷¡±×°¡ ¼¼Æ®µÇ¾î µ¹¾Æ¿É´Ï´Ù. PUTASC ´Â 1¹®ÀÚ¸¦ ¶ç°í ÁöÁ¤µÈ ¾Æ½ºÅ° Äڵ忡 »ó´çÇÏ´Â ¹®ÀÚ¸¦ Ãâ·ÂÇÏ°í ,ÁÙÀ» ¹Ù²Ù ´Â°ÍÀÔ´Ï´Ù. GETAL¿¡¼­´Â ij¸®Ç÷¹±×°¡ ¼¼Æ®µÇ¾î ÀÖ´ÂÁö ¾î¶²Áö¸¦ üũÇÏ¿©,¼¼Æ®µÇ¾îÀÖÀ¸¸é ¿¡·¯·Î °£ÁÖ ¸ÞÀηçƾÀ¸·Î µ¹¾Æ¿É´Ï´Ù. ¸ÞÀÎ ·çƾ¿¡¼­µµ, ¿ª½Ã ij¸®Ç÷¡±×°¡ ¼¼Æ®µÇ¾î ÀÖ´Ù¸é ¿¡·¯·Î °£ÁÖÇÏ°í 󸮸¦ ³¡³À´Ï ´Ù. ij¸® Ç÷¡±×¿¡ ÀÇÇؼ­ ºÐ±âÇÏ´Â ¸í·ÉÀÌ JC¸í·ÉÀÔ´Ï´Ù.