⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 idiv.htm

📁 Programmer s Reference Manual is an improtant book on Intel processor architecture and programming.
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><HTML><HEAD><TITLE>80386 Programmer's Reference Manual -- Opcode IDIV</TITLE></HEAD><BODY><B>up:</B> <A HREF="c17.htm">Chapter 17 -- 80386 Instruction Set</A><BR><B>prev:</B><A HREF="HLT.htm"> HLT Halt</A><BR><B>next:</B><A HREF="IMUL.htm"> IMUL Signed Multiply</A><P><HR><P><H1>IDIV -- Signed Divide</H1><PRE>Opcode      Instruction        Clocks   DescriptionF6 /7       IDIV r/m8          19       Signed divide AX by r/m byte                                        (AL=Quo, AH=Rem)F7 /7       IDIV AX,r/m16      27       Signed divide DX:AX by EA word                                        (AX=Quo, DX=Rem)F7 /7       IDIV EAX,r/m32     43       Signed divide EDX:EAX by DWORD                                        byte (EAX=Quo, EDX=Rem)</PRE><H2>Operation</H2><PRE>temp := dividend / divisor;IF temp does not fit in quotientTHEN Interrupt 0;ELSE   quotient := temp;   remainder := dividend MOD (r/m);FI;</PRE><EM><H3>Notes</H3>  Divisions are signed. The divisor is given by the r/m operand. The  dividend, quotient, and remainder use implicit registers. Refer to the  table under "Description"</EM><H2>Description</H2>IDIV performs a signed division. The dividend, quotient, and remainderare implicitly allocated to fixed registers. Only the divisor is given asan explicit r/m operand. The type of the divisor determines which registersto use as follows:<PRE>Size     Divisor    Quotient    Remainder  Dividendbyte     r/m8        AL           AH       AXword     r/m16       AX           DX       DX:AXdword    r/m32       EAX          EDX      EDX:EAX</PRE>If the resulting quotient is too large to fit in the destination, or if thedivision is 0, an Interrupt 0 is generated. Nonintegral quotients aretruncated toward 0. The remainder has the same sign as the dividendand the absolute value of the remainder is always less than the absolutevalue of the divisor.<H2>Flags Affected</H2>OF, SF, ZF, AR, PF, CF are undefined.<H2>Protected Mode Exceptions</H2>Interrupt 0 if the quotient is too large to fit in the designated register(AL or AX), or if the divisor is 0; #GP (0) for an illegal memory operandeffective address in the CS, DS, ES, FS, or GS segments; #SS(0) for anillegal address in the SS segment; #PF(fault-code) for a page fault<H2>Real Address Mode Exceptions</H2>Interrupt 0 if the quotient is too large to fit in the designated register(AL or AX), or if the divisor is 0; Interrupt 13 if any part of the operandwould lie outside of the effective address space from 0 to 0FFFFH<H2>Virtual 8086 Mode Exceptions</H2>Same exceptions as in Real Address Mode; #PF(fault-code) for a pagefault<P><HR><P><B>up:</B> <A HREF="c17.htm">Chapter 17 -- 80386 Instruction Set</A><BR><B>prev:</B><A HREF="HLT.htm"> HLT Halt</A><BR><B>next:</B><A HREF="IMUL.htm"> IMUL Signed Multiply</A></BODY>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -