May 22, 2004 (02:57) from 211.191.246.62 | |
Written by ¼±ÀÌ (skim@bi.snu.ac.kr) | Hits : 4188 , Lines : 86 |
[½Ç½À] Å°º¸µå ÀÔ·ÂÀ» ¼ýÀÚ·Î º¯È¯ (1¹Ý)(5/21) |
---|
; Å°º¸µå·Î ÀԷ¹ÞÀº ¼ýÀÚ·Î ±¸¼ºµÈ xÀÚ¸® ¹®ÀÚ¿À» ; ½ÇÁ¦ÀÇ ¼ýÀÚ·Î º¯È¯ÇØ º¯¼ö¿¡ ÀúÀåÇÏ´Â ÇÁ·Î±×·¥ ÀÛ¼º .286 SSEG SEGMENT STACK DB 256 DUP(?) SSEG ENDS DSEG SEGMENT BUFFER DB 5 DUP(?) NUM DW ? MULS DW ? DSEG ENDS CSEG SEGMENT 'CODE' ASSUME CS:CSEG, SS:SSEG, DS:DSEG MAIN PROC FAR PUSH DS PUSH 0 ; ÀÔ·Â ·çƾ MOV AX, DSEG MOV DS, AX MOV BUFFER, 4 ; ÀÔ·ÂÇÒ ÃÖ´ë¹®ÀÚ¼ö(+1) MOV AH, 0AH LEA DX, BUFFER ; ¿ÀÇÁ¼Â INT 21H ; ¹®ÀÚ¿ -> ¼ýÀÚ (ÆíÀÇ»ó NUM, MULS ¸ðµÎ WORDÇü) MOV NUM, 0 ; °á°ú º¯¼ö ÃʱâÈ MOV MULS, 1000 ; °ö¼À¿¡ ´ëÇÑ ÃʱⰪ (*10) MOV CX, 3 ; ¹Ýº¹È½¼ö ÁöÁ¤ MOV SI, 2 ; ¹öÆÛ À妽º ÃʱâÈ L1: ; ¼ýÀÚÀÇ °¢ ÀÚ¸®¼ö¿¡ °öÇØÁú ¼ýÀÚ °è»ê(1 or 10 or 100...) ; DIV operand(byte;Á¦¼ö) ; DIV ¸í·É¹® -> AX(word;ÇÇÁ¦¼ö) / operand(byte) ; DIV °á°ú -> AL(¸ò), AH(³ª¸ÓÁö) MOV BL, 10 ; Á¦¼ö ¼¼Æà MOV AX, MULS ; ÇÇÁ¦¼ö ¼¼Æà DIV BL ; ¸òÀº AL¿¡...ÀúÀå MOV AH, 0 ; AL->AX·Î È®ÀåÇϱâ À§ÇÔ. BUT, À̹®Á¦¿¡¼´Â OPTIONAL MOV MULS, AX ; °öÇØ¾ß ÇÏ´Â ¼ö MULS¿¡ ÀúÀå ; ÇöÀç ó¸®ÇÒ ÀÚ¸®ÀÇ ¹®ÀÚ¸¦ ¼ýÀÚ·Î º¯È¯ SUB BUFFER[SI], '0' ; ÇöÀç ó¸®ÇÒ ÀÚ¸®¼ö¿¡ À§¿¡ ±¸ÇÑ ¼ýÀÚ(1 or 10 or 100....)¸¦ °öÇÔ ; MUL operand(byte) ; MUL ¸í·É¹® -> operand * AL(operand) ; MUL °á°ú -> AX(word) MOV AX, MULS MUL BUFFER[SI] ; AX = º¯È¯µÈ ¼ýÀÚ(BUFFER[SI]) * MULS ; Áß°£°á°ú °è»ê(NUM = NUM + °ö¼À °á°ú°ª) ADD NUM, AX ADD SI, 1 ; ´ÙÀ½ LOOP¸¦ À§ÇØ ¹öÆÛ À妽º Áõ°¡ LOOP L1 ; Å×½ºÆ®(Áß¿äºÎºÐÀº ¾Æ´Ô. ´Ü¼ø üũ¿ë) MOV DL, 0DH MOV AH, 02H INT 21H MOV DL, 0AH MOV AH, 02H INT 21H MOV DL, BYTE PTR NUM MOV AH, 02H INT 21H RET MAIN ENDP CSEG ENDS END MAIN |