asm_87.
³ª´°¼À ¸í·É DIV,IDIV
38 ÀÌÇü¹® buju8t 01/13 873
11 ³ª´°¼À ¸í·É DIV,IDIV ¸¦ ¾Ë¾Æ º¸ÀÚ..
³ª´°¼À ¸í·É¿¡´Â ºÎÈ£¾ø´Â ³ª´°¼ÀÀ» ÇÏ´Â DIV(divide)¸í·É°ú ,ºÎÈ£°¡
ºÙÀº ³ª´°¼ÀÀ» ÇÏ´Â IDIV(integer divide)¸í·É µîÀÌ ÀÖÀ¾´Ï´Ù.
³ª´°¼À ¸í·ÉÀº ´Ù¸¥ ¸í·É¿¡ ¾ø´Â ±ÍÂúÀº ¼ºÁúÀÌ Àִµ¥, ±×°ÍÀº
³ª´ ¼ö ¾ø´Â °æ¿ìÀÇ Ã³¸®ÀÔ´Ï´Ù. Á¤¼ö³¢¸®ÀÇ ³ª´°¼ÀÀ» ÇÏ¿´À» ¶§,
±ú²ýÀÌ ³ª´²Á® °á°ú°¡ ¾ò¾îÁø´Ù°í ¸»ÇÒ ¼ö ¾øÀ¾´Ï´Ù. ±×·¡¼ 8086 CPU
¿¡¼´Â ³ª´°¼ÀÀÇ °á°ú´Â ¸ò°ú ³ª¸ÓÁö·Î ³ª´©¾î 2°³ÀÇ ·¹Áö½ºÅÍ¿¡ ÀúÀå
ÇÕ´Ï´Ù.
+-------------------------------------------------------------+
16ºñÆ® /8ºñÆ®
ÇÇÁ¬¼ö Á¬¼ö
³ª¸ÓÁö ¸ò
+----+ +------------------+
+----+ +----+
AX / 8ºñÆ®ÀÇ
·¹Áö½ºÅÍ ---> AH AL
+----+ ȤÀº
¸Þ¸ð¸® +----+ +----+
+------------------+
32ºñÆ® /16ºñÆ®
ÇÇÁ¬¼ö Á¬¼ö
³ª¸ÓÁö ¸ò
+----+----+ +------------------+ +----+
+----+
DX AX / 8ºñÆ®ÀÇ ·¹Áö½ºÅÍ --->
AH AL
+----+----+ ȤÀº
¸Þ¸ð¸® +----+ +----+
+------------------+
+-------------------------------------------------------------+
ÀÌ °æ¿ìÀÇ DX:AX ·¹Áö½ºÅÍ Ç¥ÇöÀº Áö±Ý±îÁö¿Í ¸¶Âù°¡Áö·Î 32 ºñÆ® ·¹Áö½ºÅÍ
·Î »ç¿ëµÇ°í ÀÖÀ¾´Ï´Ù.°á°ú°¡ ò°
³ª¸ÓÁö¶ó´Â ÇüÅ·ΠµÈ´Ù´Â °Í¿Ü¿¡´Â °ö¼À°ú ºñ½ÁÇÕ´Ï´Ù.
ºÎÈ£°¡ ÀÖ´Â ³ª´°¼ÀÀÇ °æ¿ì¿¡ 8086CPU ´Â ÇÇÁ¬¼öÀÇ ºÎÈ£¿Í ³ª´°¼ÀÀÇ ºÎÈ£
°¡ ÀÏÄ¡ÇÏ´Â °á°ú¸¦ ±¸Çϵµ·Ï µÇ¾î ÀÖÀ¾´Ï´Ù.
+- -+
¹ü¿ë
·¹Áö½ºÅÍ (8/16BIT)
DIV
IDIV ¸Þ¸ð¸® (8/16
BIT
+- -+
¿©±â¼ ¹®Á¦°¡ µÇ´Â °ÍÀº ,0¿¡ÀÇÇÑ ³ª´°¼À°ú ¿À¹öÇ÷οì(ÀÚ¸® ³Ñħ)ÀÎ
°æ¿ìÀÔ´Ï´Ù. ³ª´°¼À¿¡ Á¬¼ö·Î¼ 0À» ÁöÁ¤ÇÑ °æ ¿ì
, ³ª´°¼ÀÀ» ÇÒ ¼ö°¡ ¾ø
À¾´Ï´Ù. ÀÌ¿Í °°Àº °æ¿ì¿¡´Â ¸í·É½ÇÇàÀ» Áß´ÜÇϰí INT 0 ÀÎÅÍ·´Æ®¸¦ ¹ß»ý
ÇÏ¿© 0 ¿¡ ÀÇÇÑ ³ª´°¼Àó¸® ·çƾÀ¸·Î ½ÇÇàÀ¸·Î ½ÇÇàÀ» ¿Å±é´Ï´Ù.
¶ÇÇÑ ³ª´°¼ÀÀ» ½ÇÇàÇÒ ¶§¿¡ ¿À¹öÇ÷ο찡 ¹ß»ýÇÏ´Â °æ¿ì°¡ ÀÖÀ¾´Ï´Ù.
À̰ÍÀº ³ª´°¼ÀÀÇ °á°ú¸¦ ÀúÀåÇÏ´Â ·¹Áö½ºÅÍÀÇ Å©±â°¡ Á¤ÇØÁ® Àֱ⠶§¹®¿¡,
¿¹¸¦ µé¸é 16ºñÆ® /8ºñÆ®ÀÏ °æ¿ì ¿¡ ÀÖ¾î¼
FFFF/1 ---->FFFF
·Î µÈ °æ¿ì ,°á°ú°¡ 8ºñÆ®·Î µÈ AL·¹Áö½ºÅÍ¿¡ µé¾î°¡Áö ¾ÊÀ¸¹Ç·Î ¿À¹ö
Ç÷ο찡 ¹ß»ýÇÕ´Ï´Ù.
ÀÌ¿Í °°Àº °æ¿ì¿¡µµ 8086 ¿¡¼´Â INT 0 À» ¹ß»ýÇÏ¿© ½ÇÇàÀ» Áß´ÜÇÕ´Ï´Ù.
* »ï°¢ÇüÀÇ Áß½ÉÀ» ±¸ÇÏ´Â ¹®Á¦
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
;
MOV AL,A.X
CBW
MOV BX,AX
MOV AL,B.X
CBW
ADD BX,AX
MOV AL,C.X
CBW
ADD AX,BX
MOV BH,3
IDIV BH
MOV M.X,AL
;
MOV AL,A.Y
CBW
MOV BX,AX
MOV AL,B.Y
CBW
ADD BX,AX
MOV AL,C.Y
CBW
ADD AX,BX
MOV BH,3
IDIV BH
MOV M.Y,AL
;
MOV AH,4CH
INT 21H
;
CODE ENDS
;
DATA SEGMENT
P STRUC
X DB ?
Y DB ?
P ENDS
;
A P <12,41>
B P <-53,-19>
C P <25,-11>
M P <?,?>
;
DATA ENDS
END
±¸ÇØÁø ÁÂÇ¥´Â ½ÇÁ¦ÀÇ ÁÂÇ¥º¸´Ù 2/3 ¸¸Å ¿øÁ¡¿¡¼ ¶³¾îÁ® ÀÖÀ¾´Ï´Ù.
°¡´ÉÇÑÇÑ °¡±î¿î ÁÂÇ¥ÀÇ Á¡À» ±¸ÇÏ·Á¸é ³ª¸ÓÁö¸¦ 2·Î ³ª´©¾î ¸òÀÌ
+1 ¶Ç´Â -1ÀÏ °æ¿ì¿¡´Â À§¿¡¼ ±¸ÇÑ ¸ò¿¡ +1,-1 À» ´õÇÏ¸é µË´Ï´Ù.
´ÙÀ½Àº Ãʸ¦ ½Ã°£,ºÐ,ÃÊ·Î ¹Ù²Ù´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
SIXTY EQU 60
;
MOV AX,DATA
MOV DS,AX
;
MOV SI, OFFSET SECOND
MOV AX,[SI]
MOV DX,[SI+2]
¾Æ·¡
¼³¸í°ú °°ÀÌ Ã³À½ÀÇ 16ºñÆ®°¡ ÇÏÀ§¿öµå,´ÙÀ½ÀÇ 16ºñÆ®°¡
»óÀ§¿öµå·Î
µÇ¾î ÀÖ¾î¼ ÃʱâÄ¡¸¦ DX:AX·¹Áö½ºÅÍ·Î Àü¼Û
Çϱâ À§Çؼ´Â
À§¿Í °°ÀÌ ÇØ¾ß µË´Ï´Ù.
MOV BX,SIXTY
DIV BX
MOV TIME2.SEC,DL
³ª¸ÓÁö
DX ·¹Áö½ºÅ͸¦ ¹ÙÀÌÆ® Çü º¯¼öÀÎ TIME2.SEC¿¡ ÀúÀåÇÒ ¼ö
¾øÀ¸³ª,´ÙÇàÈ÷
Á¬¼ö°¡ 60ÀÌ°í ³ª¸ÓÁö´Â 60¹Ì¸¸À¸·Î Á¤ÇØÁ® ÀÖÀ¸
¹Ç·Î ÇÏÀ§
8ºñÆ®¸¸À¸·Î ³ª¸ÓÁö°¡ ¾ò¾îÁú ¼ö ÀÖÀ¾´Ï´Ù.
±×·¡¼
DL·¹Áö½ºÅÍÀÇ ³»¿ëÀ» TIME2.SEC·Î Àü¼ÛÀÌ °¡´ÉÇÕ´Ï´Ù.
MOV BL,SIXTY
DIV BL
MOV TIME2.MIN,AH
MOV TIME2.HOUR,AL
;
MOV AH,4CH
INT 21H
;
CODE ENDS
;
DATA SEGMENT
TIME STRUC
HOUR DB ?
MIN DB ?
SEC DB ?
TIME ENDS
;
SECOND DD 72912
TIME2 TIME <,,>
DATA ENDS
END
¿©±â¼ ÁÖÀÇÇÒ Á¡Àº ,DD¿¡ ÀÇÇØ Á¤ÀÇµÈ ¼ýÀÚ´Â ¸Þ¸ð¸® »ó¿¡¼´Â 1¹ÙÀÌÆ®¾¿
¿ÏÀú³ª°Ô ¼ø¼´ë·Î ³ª¿µÈ´Ù´Â °ÍÀÔ´Ï´Ù.
+--------------------------------------------------+
72912(10Áø¼ö) = 00 01 1C D0 (16Áø¼ö)
¸Þ¸ð¸® »óÀÇ µ¥ÀÌÅÍ D0 1C 01 00
ÇÏÀ§
16ºñÆ® »óÀ§ 16ºñÆ®
(¿ª¿öµå)
(¿ª¿öµå)
+--------------------------------------------------+
-G=0,23
AX=4C14 BX=003C CX=0037 DX=000C SP=0000 BP=0000
SI=0000 DI=0000
DS=15C3 ES=15B0 SS=15C0 CS=15C0 IP=0023 NV
UP EI NG NZ NA PO CY
15C0:0023 CD21INT 21
-D0,6
15C3:0000 D0 1C 01 00 14 0F 0C .......
-Q
µû¶ó¼ °á°ú´Â 14H= 20½Ã ,0FH = 15QNS ,0CH= 12Ãʰ¡ µË´Ï´Ù.
|