²Ä¤K³¹¡@¦³¸¹¼Æ¡]¤@¡^

¦b²Ä¤»³¹¤w¸gµyµy´£¹LµL¸¹¼Æ¡]unsigned number¡^»P¦³¸¹¼Æ¡]signed number¡^¡A«eªÌ¨S¦³¥¿­t¸¹¡A¤@¯ë¥iµø¬°¥¿¼Æ©Î¹s¡F«áªÌ¦³¥¿­t¸¹¡A¥H³Ì°ª¦ì¤¸ªí¥Ü¨ä²Å¸¹¡A³Ì°ª¦ì¤¸¬°¹s¡Aªí¥Ü¥¿¼Æ¡F¬°¤@ªí¥Ü­t¼Æ¡C³o¤@³¹¤p¤ì°¸±N±´°Q¦³¸¹¼Æ¡A¨Ã³]­p¤@µ{¦¡¥i¥H¿é¤J¨â­Ó¦³¸¹¼Æ¡AµM«á¥H³o¨â¼Æ°µ¥[´î¹Bºâ¡A¨Ã±Nµ²ªGÅã¥Ü¦b¿Ã¥ú¹õ¤W¡C

¦b¼Æ¾Ç¤Wªí¥Ü­t¼Æ«Ü²³æ¡A¥u­n¦b¼Æ­È«e¥[¤W¡u¡Ð¡v¸¹§Y¥i¡A¨Ò¦p¡Ð88¡C¦ý¦b¹q¸£¤W­nªí¥Ü­t¼Æ¸Ó«ç»ò¿ì©O¡H¨ã¤p¤ì°¸©Òª¾¡A¦Ü¤Ö¦³¨âºØ¤è¦¡¡G①¦³¸¹¶q¼Æ¡]­ì½X¡^¡B②¤G¸É¼Æ¡C³o¨âºØ¤è¦¡¡A¤£½×­þ¤@ºØ¡A³£¬O¥Î³Ì°ª¦ì¤¸ªí¥Ü¥¿¸¹©Î­t¸¹¡A³o³Ì°ª¦ì¤¸¤]ºÙ¬°²Å¸¹¦ì¤¸¡C¦pªG¬O¤K¦ì¤¸ªº¼Æ­È¡A²Ä¤C¦ì¤¸´N¬O²Å¸¹¦ì¤¸¡F¦pªG¬O¤Q¤»¦ì¤¸ªº¼Æ­È¡A²Ä¤Q¤­¦ì¤¸´N¬O²Å¸¹¦ì¤¸¡C¦b¹q¸£»â°ìùØ¡A³Ì§C¦ì¤¸¬O²Ä¹s¦ì¤¸¡C¦p¤U¹Ï¤¤ªº S ´N¥Nªí²Å¸¹¦ì¤¸¡G

¡u¦³¸¹¶q¼Æ¡vªí¥Ü¥¿­t¼Æªº¤è¦¡«Üª½Ä±¡C¦pªG²Å¸¹¦ì¤¸¬°¹s¡Aªí¥Ü¥¿¼Æ©Î¹s¡F²Å¸¹¦ì¤¸¬°¤@¡Aªí¥Ü­t¼Æ¡C¨Ò¦p 5 ªº¤K¦ì¤¸¤G¶i¦ì¼Æ¬O¡u0000 0101¡v¡A¡Ð5 ´N¬O¡u1000 0101¡v¡C³o¼Ëªºªí¥Ü¤è¦¡Áö²³æ¡A¦ý¹Bºâ°_¨Ó´N«Ü½ÆÂø¤F¡C¨Ò¦p§Ú­Ìª¾¹D 5¡Ï(¡Ð5¡~¡×0¡A¦ý¬O¦pªG¥H¦³¸¹¶q¼Æ­pºâ«oµLªk±o¨ì¹s¡A¥²¶·§â²§¸¹¼Æªº¥[ªk§ï¦¨´îªk¹Bºâ¤~¦æ¡C¦ý¦pªG­nºâ¦P¸¹¼Æªº¥[ªk¹Bºâ¡A´N¯uªº¥u¥Î¥[ªk¥h­pºâ¡C©Ò¥H°²³]¥Î¦³¸¹¶q¼Æªí¥Ü¦³¸¹¼Æ¡A°µ¥[ªk¹Bºâ«eÁÙ­n¥ýÀˬd³o¨â¼Æ¬O§_¬°²§¸¹¼Æ¡CÅãµM¥Î³oºØ¤è¦¡ªí¥Ü¦³¸¹¼Æ«Ü²³æ¡A¦ý­n¶i¦æ¹Bºâ«o¬O«Ü³Â·Ð¡A¦h¼Æ¹q¸£¤£±Ä¥Î³oºØ¤èªk¡C

¥t¤@ºØªí¥Ü¦³¸¹¼Æªº¤èªk¬O¥Î¡u¤G¸É¼Æ¡v¡A³o¤]¬O²{¤µµ´¤j¦h¼Æ¹q¸£©Ò±Ä¥Îªº¤è¦¡¡A¤]¥]§t x86/x64 ¬Û®e¹q¸£¡C


¥H¤G¸É¼Æªí¥Ü¦³¸¹¼Æ

¤G¸É¼Æ¡]Two's Complement¡^

¦ó¿×¤G¸É¼Æ©O¡H¬Y¼Æªº¤G¸É¼Æ¡A´N¬O¸Ó¼Æªº­t­È¡C¨º»ò¡A«ç»ò¼Ë¥h­pºâ¬Y¼Æªº¤G¸É¼Æ©O¡H¨ä¹ê¨Ã¤£Ãø¡A§Q¥Î©³¤Uªº¨BÆJ¡A«Ü®e©ö´N¯àºâ¥X¨Ó¡G

  1. ²Ä¤@¨B¡G§â¬Y¼ÆÅܬ°¤G¶i¦ì¼Æ¡AµM«á±N¨C¤@­Ó¦ì¤¸¤ÏÂà¡A¤ÏÂ઺·N«ä´N¬O 1 Åܬ° 0¡A0 Åܬ° 1¡C
  2. ²Ä¤G¨B¡G§â²Ä¤@¨Bªºµ²ªG¥[¤@¡A§Y±o¬Y¼Æªº¤G¸É¼Æ¡C

Á|¨â­Ó¨Ò¤l¨Ó¸Õ¸Õ¬Ý¡G

²Ä¤@­Ó¨Ò¤l¡A¨D¤K¦ì¤¸ 58h ªº¤G¸É¼Æ¡A¦p¤U¹Ï¡G ¬G 58h ªº¤G¸É¼Æ¬O A8h²Ä¤G­Ó¨Ò¤l¡A¨D¤K¦ì¤¸ 9Bh ªº¤G¸É¼Æ¡A¦p¤U¹Ï¡G ¬G 9Bh ªº¤G¸É¼Æ¬O 65h

¥t¥~ÁÙ¦³¤@ºØ¤è¦¡¤]¯à­pºâ¬Y¼Æªº¤G¸É¼Æ¡G

  1. ²Ä¤@¨B¡G§â¬Y¼ÆÅܬ°¤G¶i¦ì¼Æ¡A±q²Ä¹s¦ì¤¸¶}©l©¹°ª¦ì¤¸¤è¦V¼g¡A¦pªG¬O 0¡A«h·Ó§Û¡Aª½¨ì²Ä¤@¦¸¹J¨ì 1¡A¤]·Ó§Û¡C
  2. ²Ä¤G¨B¡G¦b¹J¨ì 1 ¤§«áªº¨C­Ó¦ì¤¸³£¤ÏÂà¡A§Y¥i±o¬Y¼Æªº¤G¸É¼Æ¡C

¨Ò¦p©³¤Uªº¨Ò¤l¡A¤@¼Ë¬O­pºâ 58h ªº¤G¸É¼Æ¡G58h Åܬ°¤G¶i¦ì¬O¡u0101 1000¡v¡A±q²Ä¹s¦ì¤¸¶}©l©¹°ª¦ì¤¸¡A¦p¹J¹s«h·Ó§Û¡A©Ò¥H¬O¡u000¡v¡A²Ä¤@¦¸¹J¨ì 1 ·Ó§Û¡A©Ò¥H¬O¡u1000¡v¡A±µ¤U¨Ó©Ò¦³¦ì¤¸§¡¤ÏÂà¡A¬G³Ì«áµ²ªG¬O¡u1010 1000¡v¡A¨£¤U¹Ï¡G

¤G¸É¼Æªº©Ê½è

¤G¸É¼Æ¦³¨â­Ó«Ü¯S§Oªº©Ê½è¡G

  1. ¦b¦P¼Ëªº¦ì¤¸¼Æ¤º¡A¬Y¼Æ»P¥¦ªº¤G¸É¼Æ¬Û¥[¡A¨ä©M¬°¹s¡C¨Ò¦p 58h ªº¤G¸É¼Æ¬O A8h¡A58h¡ÏA8h¡×100h¡A¦ý¬O¦pªG¥u¨ú¤K¦ì¤¸¡A¨º»ò´N¬O¹s¤F¡A¦p¤U¹Ï¥ª¹Ï¡C¥t¤@­Ó¨Ò¤l¡A9Bh »P¨ä¤G¸É¼Æ 65h ¤§©M¡A¤]¬O 100¡A­Y¥u¨ú¤K¦ì¤¸¡A©M¤]¬O¹s¡A¨£¤U¹Ï¥k¡C
  2. ¬Y¼Æªº¤G¸É¼Æ¡A¦A°µ¤@¦¸¤G¸É¼Æ¹Bºâ¡Aµ²ªG©M­ì¼Æ¤@¼Ë¡C¨Ò¦p 58h ªº¤G¸É¼Æ¬O A8h¡A¨£¤U¹Ïºñ¦â¦r¡A¦pªG§A¦A¥hºâ A8h ªº¤G¸É¼Æ¡Aµ²ªG³º¬O­ì¼Æ 58h¡A¦p¤U¹Ï¤ÑÂŦ⪺¦r¡G

¦^·Q°ê¤¤®É¾Ç¥¿­t¼Æ¡A¦pªG¨â¼Æ¬Û¥[¬°¹s¡A³o¨â­Ó¼Æ¥²¬O¤@¥¿¤@­t¡A·N§Yµ¥­È²§¸¹¡A¨Ò¦p ¡Ï58 ©M ¡Ð58¡A¥¦­Ìµ¥­È²§¸¹¡A¤¬¬°¬Û¤Ï¼Æ¡]¦b¼Æ¾Ç¤W¡A¨â¼Æ¤§©M¬°¹sªº¡A³o¨â¼Æ´N¤¬¬°¬Û¤Ï¼Æ¡^¡C¥t¥~¡A¦pªG§â 58 ¨ú­t­ÈÅÜ ¡Ð58¡A¦A¨ú­t¸¹¡Aµ²ªG¤SÅܦ¨ ¡Ï58¡C

¬Y¼Æ»P¨ä¤G¸É¼Æ¡A«ê¦n³£²Å¦X¤W­±ªº©Ê½è¡A¦]¦¹§Ú­Ì§â¬Y¼Æ»P¨ä¤G¸É¼Æ·í¦¨¨â­Ó¬Û¤Ï¼Æ¡A¤]´N¬O»¡¡A58h ¨ú¨ä­t­È¬O A8h¡A9Bh ¨ú¨ä­t­È¬O 65h¡C©Ò¥H³Ì«áµ²½×¬O¡G²{¥N¹q¸£ùØ¡A¨ú¬Y¼Æªº­t­È¡A§Y¬°¸Ó¼Æªº¤G¸É¼Æ¡C

©w¸q¦³¸¹¼Æ

©w¸q¦³¸¹¼Æªº¤èªk¬O¨Ï¥Î¤U­±¥|­Ó°²«ü¥O¡A»yªk¦p¤U¡G

ÅܼƦW  SBYTE   ªì©l­È
ÅܼƦW  SWORD   ªì©l­È
ÅܼƦW  SDWORD  ªì©l­È
ÅܼƦW  SQWORD  ªì©l­È

SBYTE¡BSWORD¡BSDWORD¡BSQWORD ¤¤ªº¡uS¡v¬O signed ªº·N«ä¡C³o¥|­Ó°²«ü¥O¡A¤£¶È¥Î©ó¸ê®Æ°Ï¬q¤¤©w¸qÅܼƩα`¼Æ¡A¤]¯à¥Î©ó°Ï°ìÅܼƤ¤¡C¤U­±¬O¦b°Ï°ìÅܼƤ¤©w¸q¦³¸¹¼Æ¡A¨ä¤¤ªº¸ê®ÆÃþ«¬´N¬O³o¥|­Ó°²«ü¥O¤¤ªº¤@­Ó¡G

LOCAL   ÅܼƦWºÙ[¤¸¯À­Ó¼Æ]:¸ê®ÆÃþ«¬,...

©w¸q¦³¸¹¼Æ®É¨Ì¾Ú¨ä½d³ò¨M©w¨Ï¥Î­þ¤@ºØ°²«ü¥O¡A¥¦­Ìªº½d³ò¦p¤Uªí¡G

ºØÃþ°²«ü¥O¦WºÙªø«×
¡]¦ì¤¸²Õ¡^
©Ò¯àªí¥Üªº¾ã¼Æ½d³ò
¥H¾ã¼Æªí¥Ü½d³ò¥H 2 ªº«ü¼Æªí¥Ü½d³ò
µL¸¹¼ÆDB¡BBYTE¦ì¤¸²Õ10¡ã2550¡ã28¡Ð1
DW¡BWORD¦r²Õ20¡ã65,5350¡ã216¡Ð1
DD¡BDWORDÂù¦r²Õ40¡ã4,294,967,2950¡ã232¡Ð1
DQ¡BQWORD¥|¦r²Õ80¡ã18,446,744,073,709,551,6150¡ã264¡Ð1
¦³¸¹¼ÆSBYTE¦ì¤¸²Õ1¡Ð128¡ã127¡Ð27¡ã27¡Ð1
SWORD¦r²Õ2¡Ð32,768¡ã32,767¡Ð215¡ã215¡Ð1
SDWORDÂù¦r²Õ4¡Ð2,147,483,648¡ã2,147,483,647¡Ð231¡ã231¡Ð1
SQWORD¥|¦r²Õ8¡Ð9,223,372,036,854,775,808¡ã9,223,372,036,854,775,807¡Ð263¡ã263¡Ð1

ÁöµM¦b¤Wªí¤¤¡A¥Î¤£¦Pªº°²«ü¥O©w¸q¦³¸¹¼Æ©MµL¸¹¼Æ¡A¦ý¬O¹ê»Ú¤W²Õ;¹¨Ã¤£¤Ó¦b¥G³oºØ°Ï§O¡A¨Ò¦p§A¤]¥i¥H¥Î DB/DW/DD ©w¸q¦³¸¹¼Æ¡A¤Ï¹L¨Ó¤]¥i¥H¥Î SBYTE/SWORD/SDWROD «Å§iµL¸¹¼Æ¡A¤U­±ªº¨Ò¤l³£¬O¥¿½Tªº«Å§i¡G

x       DB      -1
y       DW      -100
z       SWORD   65535

¦¹¥~­nª¾¹Dªº¬O¡AµL¸¹¼Æ©Î¦³¸¹¼Æªº§P§O¤è¦¡¨ä¹ê§¹¥þ¥Ñµ{¦¡¨M©w¡A¨Ã«D¥Ñ©w¸q®É¨M©w¡A³o¤]´N¬O¬°¦ó²Õ;¹¤£¤Ó¦b¥G DB/BYTE »P SBYTE ªº°Ï§O¡C¨Ò¦p¬Y­Ó¦ì¤¸²Õ¬O 0FFh ¨ä¹ê¥i¥Hªí¥ÜµL¸¹¼Æªº 255¡A¤]¥i¥Hªí¥Ü¦³¸¹¼Æªº ¡Ð1¡A§¹¥þ¬Ýµ{¦¡¦p¦ó¸ÑÄÀ¡C

·¸¦ì»P·¸¦ìºX¼Ð¡B²Å¸¹ºX¼Ð

¥H¬Y¼Æªº¤G¸É¼Æªí¥Ü¸Ó¼Æªº­t­È¦³³\¦hÀuÂI¡A¦ý«o¦³­Ó¤p¯ÊÂI¡FµM¦Ó¡A¥u­n¤p¤ß³B²z¡A³o­Ó¯ÊÂI¨Ã¤£·|³y¦¨¤Ó¤jªº§xÂZ¡C³o­Ó¯ÊÂI¬O¤°»ò©O¡H¥ý¨Ó¬Ý©³¤Uªº¨Ò¤l¡C

¦pªG­n­pºâ¨â®É¶i¦ì¾ã¼Æ¡A96¡Ï92¡A¤§©M¡A§Ú­Ì³£ª¾¹D¡Aµª®×¬O 188¡A¨º»ò¦b¹q¸£ùجO¦p¦ó­pºâªº©O¡H³o¨â¼Æªº¤Q¤»¶i¦ì¤À§O¬O 60h¡B5Ch¡A¤G¶i¦ì¤À§O¬O 0110 0000¡B0101 1100¡A¥[°_¨ÓÅܦ¨ 1011 1100¡Aµ²ªGÅܦ¨­t¼Æ¡A¦p¤U­±¥ª¹Ï¡C¹³³o¼Ë±¡§Î¡A¹Bºâªºµ²ªG¶W¹L¥Øªº¹Bºâ¤¸©Ò¯àªí¥Üªº½d³ò¡A´NºÙ¬°·¸¦ì¡]overflow¡^¡C¥H³o­Ó¨Ò¤l¨Ó»¡¡A¤K¦ì¤¸©Ò¯àªí¥Üªº¦³¸¹¼Æ½d³ò¬O ¡Ð128¡ã127¡A¦Ó 96¡Ï92 ¬O 188¡A¶W¹L¤F 127¡A³o¼Ëªº±¡§Î´N¬O·¸¦ì¡C¨â­Ó­t¼Æ¬Û¥[¡A¤]¦³¥i¯à³y¦¨·¸¦ì¡C¨Ò¦p ¡Ð80¡Ï(¡Ð90)¡×¡Ð170¡A¨£¤W­±¥k¹Ï¡A¡Ð80¡B¡Ð90 ªº¤Q¤»¶i¦ì¤À§O¬O B0h¡BA6h¡A¬Û¥[¤§«á²Å¸¹¦ì¤¸Åܦ¨ 0¡Aµ²ªG¬°¥¿¼Æ¡C³o¬O¦]¬°µ²ªG¤p©ó ¡Ð128¡A¶W¹L¤F¦³¸¹¼Æªº½d³ò¡A¦]¦¹³y¦¨·¸¦ì¡C

¨º»ò¬O§_¦³¤èªk¯à°÷³B²z³oºØ·¸¦ì¿ù»~©O¡H¨Æ¹ê¤W¡ACPU ¦b³]­p®É´N¤w¸g¦Ò¼{³o­Ó°ÝÃD¤F¡C·í¹Bºâµo¥Í·¸¦ì®É¡ACPU ·|¦Û°Ê³]©w·¸¦ìºX¼Ð¡]overflow flag¡^¡A¨Ï·¸¦ìºX¼ÐÅܦ¨¤@¡A¦b°£¿ù¾¹ùØÅã¥Ü OV¡F¦pªG¨Sµo¥Í·¸¦ì¡A´N·|²M°£·¸¦ìºX¼Ð¡A¨Ï·¸¦ìºX¼ÐÅܦ¨¹s¡A°£¿ù¾¹Åã¥Ü NV¡C¦b³]­pµ{¦¡®É¡A´N¯à°÷¨Ì¾Ú·¸¦ìºX¼Ðªºª¬ºA¡A¦Ò¼{¦p¦ó³B²z·¸¦ìªº°ÝÃD¡C

x64 CPU ùØ­±¦³­Ó¼È¦s¾¹¡AºÙ¬°©µ¦ùºX¼Ð¼È¦s¾¹¡A±Mªù°O¿ý CPU ¹Bºâ«áªºª¬ºA¡A¨Ò¦pµ²ªG¬O§_¬°¹s¡B¬O§_µo¥Í·¸¦ìµ¥µ¥¡C·¸¦ìºX¼Ð¬O¦b©µ¦ùºX¼Ð¼È¦s¾¹ªº²Ä¤Q¤@¦ì¤¸¡A¦Ó¥B¶È¤@­Ó¦ì¤¸¡A²ºÙ OF¡C

¥t¥~¡A¦b©µ¦ùºX¼Ð¼È¦s¾¹ªº²Ä¤C­Ó¦ì¤¸¡AºÙ§@²Å¸¹ºX¼Ð¡]sign flag¡^¡A²ºÙ SF¡A¥Î©ó¬ö¿ý¹Bºâµ²ªGªº²Å¸¹¦ì¤¸¬O¤@¡AÁÙ¬O¹s¡C¦pªG¬O¤@¡A¥Nªí¹Bºâµ²ªG¬°­t­È¡A°£¿ù¾¹¥H NG ªí¥Ü¡]negative¡^¡F¦pªG¬O¹s¡A¥Nªí¹Bºâµ²ªG¬°¥¿­È¡A°£¿ù¾¹¥H PL ªí¥Ü¡]positive¡^¡C

x64 «ü¥O¡GJO »P JNO

JO »P JNO ­ì¤å¬O jump if overflow¡Bjump if not overflow¡C«eªÌªí¥Ü¦pªG·¸¦ìºX¼Ð³Q³]©w®É¡Aµo¥Í¸õÅD¡F«áªÌªí¥Ü·¸¦ìºX¼Ð³Q²M°£®É¡Aµo¥Í¸õÅD¡CJO »P JNO ³q±`¥Î¦b¦³¸¹¼Æ¹Bºâ¤§«á¡AÀˬd¬O§_µo¥Í·¸¦ì¡A¦Ó¶i¦æ¥²­nªº³B²z¡C


¤ñ¸û¦³¸¹¼Æªº¤j¤p

µL¸¹¼Æ»P¦³¸¹¼Æªº¤ñ¸û¡A©Ò¥Î³N»y¤£¦P¡CµL¸¹¼Æ¥Î°ª©ó¡]above¡^©Î§C©ó¡]below¡^¡A¦³¸¹¼Æ¥Î¤j©ó¡]greater¡^©Î¤p©ó¡]less¡^¡C

x64 «ü¥O¡GJL/JNGE »P JLE/JNG

JL »P JNGE ¬O¬Û¦Pªº«ü¥O¡A«eªÌªí¥Ü­Y¤p©ó«h¸õÅD¡]jump if less¡^¡A¤]´N¬O«áªÌªº­Y¤£¤j©ó©Îµ¥©ó´N¸õÅD¡]jump if not greater or equal¡^¡A¨âªÌ¦P¸q¡A¨âªÌ¤]³£¬O¤ñ¸û¦³¸¹¼Æ¤j¤p¡C³q±`¥¦·|¦b CMP «ü¥O¤§«á¡A¦p¤U­±µ{¦¡¡A¦b¤ñ¸û¤§«á¡A­Y²Å¸¹ºX¼Ð»P·¸¦ìºX¼Ð¤£¦P¡A«hµo¥Í¸õÅD¡C

        cmp     ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸
        jl      less
        ⁝
less:   ⁝        ;¥Øªº¹Bºâ¤¸¤p©ó¨Ó·½¹Bºâ¤¸

CMP «ü¥Oªº¤èªk¬O±N¤ñ¸ûªº¨â¼Æ¬Û´î¡A¦ý¤£§âµ²ªGÀx¦s©ó¥Øªº¹Bºâ¤¸ùØ¡C¦pªG¥Øªº¹Bºâ¤¸¤p©ó¨Ó·½¹Bºâ¤¸¡A¬Û´î¤§«á¬°­t­È¡F¦¹®É CPU ·|§â²Å¸¹ºX¼Ð³]¬°¤@¡C¦ý¬O¶È¶È¨Ì¾Ú²Å¸¹ºX¼Ð¬O¤£°÷ªº¡A¨Ò¦p©³¤Uªº±¡§Î¡G

        mov     al,127  ;127d¡×7Fh
        cmp     al,-1
        jl      less

¦]¬° 127 ¤j©ó¡Ð1¡A¬G¤£À³¸Óµo¥Í¸õÅD¡C¦ý¬O AL¡Ð(¡Ð1)¡×80h¡A¬Û´îµ²ªG²Å¸¹¦ì¤¸¬°¤@¡ACPU ·|±N²Å¸¹ºX¼Ð³]¬°¤@¡C¤]´N¬O»¡¡A¶È¶È¦Ò¼{²Å¸¹ºX¼Ð¬O§_³]©w¡A´N¨M©w¬O§_Åý JL µo¥Í¸õÅD¡A·|³y¦¨»~§P¡C¨s¨ä­ì¦]¡A¬O¦]¬°¨S¦Ò¼{·¸¦ìªº°ÝÃD¡A¤]´N¬O»¡¡A¥²¶·¦P®É¦Ò¼{²Å¸¹ºX¼Ð»P·¸¦ìºX¼Ð¡C©ó¬O·|¦³©³¤U¥|ºØ±¡§Î¡G

·¸¦ìºX¼Ð²Å¸¹ºX¼ÐJL ¬O§_¸õÅD¨Ò¤l
00§_cmp 10,5
01¬Ocmp 5,10
10¬Ocmp -128,1
11§_cmp 127,-1

±q¤Wªí¤¤ªº¥|ºØ±¡§Î¾ã²z±oª¾¡G·í¤£µo¥Í·¸¦ì®É¡]«e¨âºØ±¡§Î¡^¡Aªº½T¬O²Å¸¹ºX¼Ð³Q³]©w¡AJL µo¥Í¸õÅD¡Fµo¥Í·¸¦ì®É¡]«á¨âºØ±¡§Î¡^¡A²Å¸¹ºX¼Ð³Q³]©w¡AJL ·|µo¥Í»~§P¡C¦ý¦pªG¥J²ÓÂk¯Ç«K¥i¥H±o¨ì¡A²Å¸¹ºX¼Ð»P·¸¦ìºX¼Ð¤£¦P®É¡AJL ¤~µo¥Í¸õÅD¡A¤~¬O³Ì¥¿½Tªº°µªk¡C

¥i¯à¦³¤H·|·Q¡AÀ³¸Ó¤]­n¦Ò¼{¹s­ÈºX¼Ð³Q²M°£¡]¤]´N¬O¨â¼Æ¤£µ¥©ó¡^®É¡AJL ¤~¸õÅD¡A²¦³º JL ¬O­Y¤p©ó¤~¸õÅD¡Aµ¥©ó´N¤£¸õÅD¹À¡I¤£¹L¥J²Ó«ä¦Ò«K·|µo²{¡A°²¦p¥Øªº¹Bºâ¤¸µ¥©ó¨Ó·½¹Bºâ¤¸¡ACMP ªºµ²ªG·|¨Ï²Å¸¹ºX¼Ð»P·¸¦ìºX¼Ð³£¬°¹s¡A¤]´N¬O¤Wªí¤¤ªº²Ä¤@ºØ±¡§Î¡A´N¦Û°Ê±Æ°£¤F¨Ï JL ¸õÅDªº±¡§Î¡A©Ò¥H¤£¥²µe³D²K¨¬¦Ò¼{¹s­ÈºX¼Ð¬O§_¥²¶·¬°¹s¡C

JLE »P JNG ¬O¬Û¦Pªº«ü¥O¡A«eªÌªí¥Ü­Y¤p©ó©Îµ¥©ó«h¸õÅD¡]jump if less or equal¡^¡A¸ò«áªÌªº­Y¤£¤j©ó´N¸õÅD¡]jump if not greater¡^¬O¤@¼Ëªº·N«ä¡C¥¦­Ì»P JL ªº®t§O¥u¦b©ó JLE ¥]§tµ¥©ó¤]·|¸õÅD¡AJL «h¥u¦³¤p©ó¤~¸õÅD¡Aµ¥©ó¨Ã¤£µo¥Í¸õÅD¡C¥Ñ¥H¤W¤ÀªR±oª¾¡AJLE ¬Oµo¥Í¦b²Å¸¹ºX¼Ð»P·¸¦ìºX¼Ð¤£¦P¡A©Î¬O¹s­ÈºX¼Ð¹s®É¡A³o¨âºØ±¡ªp¤¤ªº¥ô¦ó¤@ºØ³£·|µo¥Í¸õÅD¡C

x64 «ü¥O¡GJG/JNLE »P JGE/JNL

JG »P JNLE ¬O¬Û¦Pªº«ü¥O¡A«eªÌªí¥Ü­Y¤j©ó«h¸õÅD¡]jump if greater¡^¡A¤]´N¬O«áªÌªº­Y¤£¤p©ó©Îµ¥©ó´N¸õÅD¡]jump if not less or equal¡^¡A¨âªÌ¦P¸q¡A¨âªÌ¤]³£¬O¤ñ¸û¦³¸¹¼Æ¤j¤p¡C³q±` JG/JNLE »P JL ¤@¼Ë¡A·|¦b CMP «ü¥O¤ñ¸û¤§«á¡AJG Àˬd²Å¸¹ºX¼Ð»P·¸¦ìºX¼Ð¬Û¦P¡A¥B¹s­ÈºX¼Ð¬°¹s®É¡A¤~µo¥Í¸õÅD¡C

JGE »P JNL ¬O¬Û¦Pªº«ü¥O¡A«eªÌªí¥Ü­Y¤j©ó©Îµ¥©ó«h¸õÅD¡]jump if greater or equal¡^¡A¸ò«áªÌªº­Y¤£¤p©ó´N¸õÅD¡]jump if not less¡^¬O¤@¼Ëªº·N«ä¡CJGE «ü¥O·|³q±`¦b CMP ¤§«á¡AJGE Àˬd²Å¸¹ºX¼Ð»P·¸¦ìºX¼Ð¬O§_¬Û¦P¡A­Y¬Û¦P´Nµo¥Í¸õÅD¡C

±`¥Îªº±ø¥ó¸õÅD«ü¥O

¤Uªí¬O¥]§t«e­±³¹¸`¡A´¿´£¨ì¹Lªº±ø¥ó¸õÅD«ü¥O¡Aªí¤¤¦P¤@¦Cªº«ü¥O·N¸q¬Û¦P¡A¨Ò¦p JA »P JNBE ¬O¬Û¦Pªº«ü¥O¡G

¤ÀÃþ¦P¸q«ü¥O¤¤¤å»y¸q­ì¤å»y¸qºX¼Ð
¥Î
©ó
µL
¸¹
¼Æ
JA
JNBE
­Y°ª©ó´N¸õÅD
­Y¤£§C©ó©Îµ¥©ó´N¸õÅD
jump if above
jump if not below or equal
CF=0 ¥B ZF=0
JB
JC
JNAE
­Y§C©ó´N¸õÅD
­Y¶i¦ì´N¸õÅD
­Y¤£°ª©ó©Îµ¥©ó´N¸õÅD
jump if below
jump if carry
jump if not above or equal
CF=1
JAE
JNB
JNC
­Y°ª©ó©Îµ¥©ó´N¸õÅD
­Y¤£§C©ó´N¸õÅD
­Y¤£¶i¦ì´N¸õÅD
jump if above
jump if not below
jump if not carry
CF=0
JBE
JNA
­Y§C©ó©Îµ¥©ó´N¸õÅD
­Y¤£°ª©ó´N¸õÅD
jump if below or equal
jump if not above
CF=1 ©Î ZF=1
¬Ò
¥i
JE
JZ
­Yµ¥©ó´N¸õÅD
­Y¬°¹s´N¸õÅD
jump if equal
jump if zero
ZF=1
JNE
JNZ
­Y¤£µ¥©ó´N¸õÅD
­Y¬°¤£¹s´N¸õÅD
jump if not equal
jump if not zero
ZF=0
¥Î
©ó
¦³
¸¹
¼Æ
JL
JNGE
­Y¤p©ó´N¸õÅD
­Y¤£¤j©ó©Îµ¥©ó´N¸õÅD
jump if less
jump if not greater or equal
SF≠OF
JG
JNLE
­Y¤j©ó´N¸õÅD
­Y¤£¤p©óµ¥©ó´N¸õÅD
jump if greater
jump if not less or equal
ZF=0 ¥B SF=OF
JLE
JNG
­Y¤p©ó©Îµ¥©ó´N¸õÅD
­Y¤£¤j©ó´N¸õÅD
jump if less or equal
jump if not greater
ZF=1 ©Î SF≠OF
JGE
JNL
­Y¤j©óµ¥©ó´N¸õÅD
­Y¤£¤p©ó´N¸õÅD
jump if greater or equal
jump if not less
SF=OF
JO­Yµo¥Í·¸¦ì´N¸õÅDjump if overflowOF=1
JNO­Y¨Sµo¥Í·¸¦ì´N¸õÅDjump if not overflowOF=0

¦³¸¹¼Æªº¥|«h¹Bºâ

¦³¸¹¼Æªº¥[´îªk¡A¥i¨Ï¥Î x64 «ü¥Oªº ADD¡BSUB¡A´«¥y¸Ü»¡¡A¤£½×¬OµL¸¹¼ÆÁÙ¬O¦³¸¹¼Æ¡A¥[´îªk³£¬O¨Ï¥Î ADD »P SUB¡C¦ý­¼°£ªk´N¤£¦P¤F¡A¹ï©óµL¸¹¼Æ¡A­¼°£ªk¨Ï¥Î MUL¡BDIV¡F¹ï©ó¦³¸¹¼Æªº­¼°£ªk¡A»Ý¨Ï¥Î IMUL¡BIDIV¡C

x64 «ü¥O¡GMUL

x64 ªº­¼ªk«ü¥O¦³¤TºØ¡AMUL¡BIMUL¡BAAM¡AMUL ¥Î©óµL¸¹¼Æ­¼ªk¡AIMUL ¥Î©ó¦³¸¹¼Æ­¼ªk¡AAAM ¥Î©ó BCD ¼Æªº­¼ªk¡C¦¹³B¶È¤¶²Ð«e¨âºØ¡A¥ý¤¶²Ð MUL¡A¨ä»yªk¦p¤U¡G

MUL     ¹Bºâ¤¸

¬Ý¨£ MUL ªº»yªk¡A¤@©w¦³«Ü¦h¤H·|¦³ºÃ°Ý¡A­¼ªk¤£¬OÀ³¸Ó­n¦³¨â­Ó¹Bºâ¤¸¶Ü¡H³Q­¼¼Æ»P­¼¼Æ¡A«ç»ò·|¥u¦³¤@­Ó¹Bºâ¤¸©O¡H­ì¨Ó MUL ªº³Q­¼¼Æ¥u­­©w¬O AL¡BAX¡BEAX¡BRAX ¥|­Ó¼È¦s¾¹¤¤ªº¨ä¤¤¤@­Ó¡A¦Ü©ó¬O­þ¤@­Ó¡A¥Ñ­¼¼Æªºªø«×¨Ó¨M©w¡A³Q­¼¼Æªºªø«×¥²¶·©M­¼¼Æªø«×¬Û¦P¡CMUL «á­±±µµÛªº¹Bºâ¤¸¨ä¹ê´N¬O­¼¼Æ¡A¥i¥H¬O¼È¦s¾¹©ÎÅܼƦý¤£¥i¥H¬O±`¼Æ¡C¨Ò¦p­¼¼Æ¬O¤K¦ì¤¸ªø¡A¨º»ò³Q­¼¼Æ¤]¬O¤K¦ì¤¸ªø¡AAL¡BAX¡BEAX¡BRAX ¤¤¥u¦³ AL ¬O¤K¦ì¤¸¡A©Ò¥H³Q­¼¼Æ´N©ñ¦b AL ùØ¡C

¸Ñ¨M¤F³Q­¼¼Æªº°ÝÃD¤§«á¡AÁÙ¦³­Ó°ÝÃD´N¬O­¼¿n¦s©ó¦ó³B¡C­º¥ý¦³­Ó³W«h¡A­¼¿nªºªø«×¬O­¼¼Æ¦ì¼Æ»P³Q­¼¼Æ¦ì¼Æ¤§©M¡C¥H§Ú­Ì¼ô±xªº¤Q¶i¦ì¼Æ¨Ó»¡¡A¨â¦ì¼Æ­¼¨â¦ì¼Æ³Ì¤j­È¬O¥|¦ì¼Æ¡A¨Ò¦p 99¡Ñ99¡×9801¡C¦P²z¡A¤K­Ó¦ì¼Æªº¤G¶i¦ì¼Æ­¼¤K­Ó¦ì¼Æªº¤G¶i¦ì¼Æ©Ò±o¤§­¼¿n¬°¤Q¤»­Ó¦ì¼Æªº¤G¶i¦ì¼Æ¡A¦Ó¤K­Ó¦ì¼Æ¤£´N¬O¤K¦ì¤¸¶Ü¡H©Ò¥H AL ­¼¥H¤K¦ì¤¸¼È¦s¾¹©ÎÅܼơA©Ò±oªº­¼¿n­n©ñ¦b¤Q¤»¦ì¤¸ªº AX ¼È¦s¾¹ùØ¡A¨ä¤¤ AH ºÙ¬°°ª¥b³¡¡FAL ºÙ¬°§C¥b³¡¡C¤£¦P¦ì¤¸ªº­¼ªk¾ã²z¦¨¤Uªí¡G

­¼ªk¤è¦¡­¼¼Æ³Q­¼¼Æ­¼¿n½d¨Ò
¹Bºâ«e¹Bºâ«á
¤K¦ì¤¸­¼ªk8 ¦ì¤¸ÅܼÆ
©Î¼È¦s¾¹
ALAX ;2¡Ñ3¡×6
MOV  AX,0102h
MOV  BX,0103h
MUL  BL
AX=0006
BX=0103h
NC¡BNO
¤Q¤»¦ì¤¸­¼ªk16 ¦ì¤¸ÅܼÆ
©Î¼È¦s¾¹
AXDX:AX ;200h¡Ñ106h¡×20C00h
MOV  DX,0FFFFh
MOV  AX,200h
MOV  BX,106h
MUL  BX
DX=0002
AX=0C00h
BX=0106h
CY¡BOV
¤T¤Q¤G¦ì¤¸­¼ªk
¥u¯à¥Î©ó
386µ¥¯Å¥H¤W
32 ¦ì¤¸ÅܼÆ
©Î¼È¦s¾¹
EAXEDX:EAX ;80000001h¡Ñ2¡×100000002h
MOV  EDX,88887777h
MOV  EAX,80000001h
MOV  EBX,2
MUL  EBX
EDX=1
EAX=2
EBX=2
CY¡BOV
¤»¤Q¥|¦ì¤¸­¼ªk
¥u¯à¥Î©ó
x64µ¥¯Å¥H¤W
64 ¦ì¤¸ÅܼÆ
©Î¼È¦s¾¹
RAXRDX:RAX ;8¡Ñ8¡×40h
MOV  RDX,123456789ABCDEF0h
MOV  RAX,8
MOV  RBX,8
MUL  RBX
RDX=0
RAX=40h
RBX=8
NC¡BNO

¦AÁ|¤Wªí¤¤¤Q¤»¦ì¤¸ªº­¼ªk¬°¨Ò¤l¡A­¼¼Æ»P³Q­¼¼Æ³£¬O¤Q¤»¦ì¤¸ªø¡A­¼¼Æ¦s©ó¤Q¤»¦ì¤¸ªº¼È¦s¾¹©ÎÅܼÆùØ¡A³Q­¼¼Æ«h©T©w¦s©ó AX ¼È¦s¾¹¤¤¡C¹Bºâ¤§«á©Ò±o¤§­¼¿n¬°¤T¤Q¤G¦ì¤¸¡A¦ý¨Ã¤£¬O©ñ¦b EAX ¼È¦s¾¹ùØ¡C³o¬O¦]¬°¦b x86 CPU ®a±Ú¤¤¡A³Ì¦­ªº CPU ¬O¤Q¤»¦ì¤¸ªº 8086¡A¨ä¼È¦s¾¹³£¬O¤Q¤»¦ì¤¸ªø¡A¨S¦³¤T¤Q¤G¦ì¤¸ªº¼È¦s¾¹¡C¤£±o¤w¡A¥u¯à¥Î¨â­Ó¼È¦s¾¹¦s©ñ¡A­^¯Sº¸¥Î DX¡BAX ¦s©ñ¡A¥H DX:AX ªí¥Ü¡ADX ¬O°ª¥b³¡¡AAX ¬O§C¥b³¡¡C¨ì¤F¤T¤Q¤G¦ì¤¸¡B¤»¤Q¥|¦ì¤¸ªº­¼ªk¡A¤]¥Î¦¹ºD¨Ò¦s©ñ­¼¿n¡C

MUL ¹Bºâ§¹¤§«á·|¼vÅTºX¼Ð¡A¥i¤À¬°¨â³¡¤À»¡©ú¡G

①¡B¶i¦ìºX¼Ð»P·¸¦ìºX¼Ð¡G¦pªG­¼¿n¸û°ª¥b³¡¤£¬°¹s¡A¨º»ò¶i¦ìºX¼Ð»P·¸¦ìºX¼Ð·|³Q³]©w¡A§_«h²M°£¡C

②¡B²Å¸¹ºX¼Ð¡B¹s­ÈºX¼Ð¡B»²§U¶i¦ìºX¼Ð¡B¦P¦ìºX¼Ð³£¥¼©w¸q¡C¥¼©w¸qªº·N«ä¬O»¡³o¨ÇºX¼Ð¥i¯à¬O¥ô¦ó­È¡A¤£¦Pªº CPU¡B¬[ºc¡A³£¥i¯à·|¤£¦P¡C¦]¦¹¦b MUL °õ¦æ§¹¡A¤£¥i¥ÑºX¼Ð§PÂ_°õ¦æµ²ªG¡C¨Ò¦p­¼¿n¬°¹s¡ACPU ¥¼¥²·|§â¹s­ÈºX¼Ð³]¬°¤@¡C©Ò¥H°²¦p­n¦b MUL «á§PÂ_­¼¿n¬O§_¬°¹s¡A¤£¯àª½±µ¨Ï¥Î JZ ©Î JNZ¡F¥¿½T°µªk¬O¦b MUL ¤§«á¸É¤W¤@±ø TEST ©Î OR «ü¥O¡C

¥H¤Wªí¤Q¤»¦ì¤¸ªº­¼ªk»¡©ú¶i¦ìºX¼Ð»P·¸¦ìºX¼Ð¡G

        mov     ax,200h
        mov     bx,106h
        mul     bx

³o¬O¨â­Ó¤Q¤»¦ì¤¸ªºµL¸¹¼Æ¬Û­¼¡A­¼¿n¬O 20C00h¡A¥²¶·¦s©ñ©ó¨â­Ó 16 ¦ì¤¸²Õ¦¨ªº DX:AX ùØ¡A¨ä¤¤ DX ¬O°ª¥b³¡¡AAX ¬O§C¥b³¡¡A¤À§O¬O 2¡B0C00h¡G¤S¦]¬°°ª¥b³¡¤£¬°¹s¡A¬G CPU ·|§â¶i¦ìºX¼Ð»P·¸¦ìºX¼Ð§¡³]¬°¤@¡]CY¡BOV¡^¡C

x64 «ü¥O¡GIMUL

IMUL ¬O¦³¸¹¼Æªº­¼ªk¡A¥¦¦³¤TºØ§Î¦¡¡A¤À§O¬O³æ¹Bºâ¤¸¡BÂù¹Bºâ¤¸¡B¤T¹Bºâ¤¸¡A¨ä»yªk¨Ì§Ç¦p¤U¡G

IMUL    ¹Bºâ¤¸
IMUL    ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸
IMUL    ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸,¥ß§Y­È

①¡B³æ¹Bºâ¤¸§Î¦¡ªº¹Bºâ¤¸¬O­¼¼Æ¡A³Q­¼¼Æ¨Ì¾Ú­¼¼Æªº¦ì¤¸­Ó¼Æ¡A¥i¯à¬O AL¡BAX¡BEAX¡BRAX¡C´«¥y¸Ü»¡¡AIMUL ªº³æ¹Bºâ¤¸§Î¦¡»P MUL ¬Û¦P¡A®t§O¶È¦b©ó¶i¦ìºX¼Ð»P·¸¦ìºX¼Ðªº·N¸q¡C¦pªG IMUL ©Ò±oªº­¼¿n¡A¸û°ª¥b³¡¤£¬O¸û§C¥b³¡²Å¸¹¦ì¤¸ªº©µ¦ù¡A¨º»ò¶i¦ìºX¼Ð»P·¸¦ìºX¼Ð·|³Q³]©w¡A§_«h³Q²M°£¡C¨Ò¦p©³¤Uªº¨Ò¤l¡G

        mov     ax,4000h
        mov     bx,3        ;4000h¡Ñ3=C000h=49152
        imul    bx          ;DX:AX=0000:C000

¦]¬° AX ´«¦¨¤G¶i¦ì¬O 1100 0000 0000 0000¡A²Å¸¹¦ì¤¸¬O¤@¡A¦Ó DX ¤ºªº¥þ³¡¦ì¤¸«o³£¬O¹s¡A¨Ã¤£¬O¥Ñ AX ªº²Å¸¹¦ì¤¸©µ¦ù¦Ó¨Ó¡A¬G¶i¦ìºX¼Ð»P·¸¦ìºX¼Ð·|³Q³]©w¡C

②¡BÂù¹Bºâ¤¸§Î¦¡ªº IMUL ·|¶i¦æ¦³¸¹¼Æªº­¼ªk¹Bºâ¡A±N¥Øªº¹Bºâ¤¸­¼¥H¨Ó·½¹Bºâ¤¸¡A¦A±N©Ò±oªº­¼¿n¦s©ó¥Øªº¹Bºâ¤¸¡C¥Øªº¹Bºâ¤¸¥u¥i¥H¬O¼È¦s¾¹¡A¨Ó·½¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡B¥ß§Y­È©ÎÅܼơA¤£½×¬O­þ¤@ºØ¡A¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸ªø«×»Ý¤@­P¡C¦]¦¹¡A·í­¼¿n¤Ó¤j¥H¦Ü©ó¥Øªº¹Bºâ¤¸®e¯Ç¤£¤U¡A´N·|±N°ª¥b³¡ºIÂ_¡A·N§Y¥Øªº¹Bºâ¤¸¶È¦s¦³­¼¿nªº§C¥b³¡¡C­Yµo¥ÍºIÂ_¡A¶i¦ìºX¼Ð»P·¸¦ìºX¼Ð·|³Q³]©w¡A§_«h³Q²M°£¡C¨Ò¦p©³¤Uªº¨Ò¤l¡G

        mov     eax,88994025h
        mov     bx,30h      ;4025h¡Ñ30h=C06F0h
        imul    ax,bx       ;EAX=889906F0h

¤W¨Ò¤¤¡AEAX¡×88994025h¡A¦ý¬O°õ¦æ¡uIMAL AX,BX¡v¡A©Ò¥H¬O¤Q¤»¦ì¤¸ªº­¼ªk¡A4025h¡Ñ30h¡A­ì¥»­¼¿n¬° C06F0h¡A¶W¹L AX ®e¯Ç½d³ò¡A¥u¦³§C¥b³¡¦s©ó AX¡]EAX ªº 16¡ã31 ¦ì¤¸¤£¨ü¼vÅT¡^¡A°ª¥b³¡³£³QºIÂ_¡A¶i¦ìºX¼Ð»P·¸¦ìºX¼Ð·|³Q³]©w¡C

③¡B¤T¹Bºâ¤¸§Î¦¡ªº IMUL ¶i¦æ¦³¸¹¼Æ­¼ªk¹Bºâ®É¡A±N¨Ó·½¹Bºâ¤¸­¼¥H¥ß§Y­È¡A¦A±N©Ò±oªº­¼¿n¦s©ó¥Øªº¹Bºâ¤¸¡C¥Øªº¹Bºâ¤¸¡B¨Ó·½¹Bºâ¤¸»P¥ß§Y­Èªºªø«×¥²¶·¬Û¦P¡A¥¦­Ì¥u¯à¦P®É¬O 16¡B32¡B64 ¦ì¤¸¡F¥Øªº¹Bºâ¤¸¥u¯à¬O¼È¦s¾¹¡A¨Ó·½¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹©ÎÅܼơA¥ß§Y­È¬O¦³¸¹¼Æ¡C¤U­±¤T¨Ò¤¤ªº n1¡Bn2¡Bn3 ³£¬O±`¼Æ¡A½d³ò¦C¦b«á­±¡G

        imul    ax,bx,n1    ;n1 ¬O 16 ¦ì¤¸ªº¦³¸¹¼Æ¡A½d³ò¬O¡Ð32,768¡ã32,767
        imul    eax,ebx,n2  ;n2 ¬O 32 ¦ì¤¸ªº¦³¸¹¼Æ¡A½d³ò¬O¡Ð2,147,483,648¡ã2,147,483,647
        imul    rax,rbx,n3  ;n3 ¬O 64 ¦ì¤¸ªº¦³¸¹¼Æ¡A½d³ò¬O¡Ð9,223,372,036,854,775,808¡ã9,223,372,036,854,775,807

¶i¦æ¤T¹Bºâ¤¸§Î¦¡ªº IMUL ¤§«áªººX¼Ð­È¡A»PÂù¹Bºâ¤¸§Î¦¡¬Û¦P¡C

x64 «ü¥O¡GIDIV

IDIV ¬O¦³¸¹¼Æªº°£ªk¡A¥¦ªº»yªk¡B¥Îªk§¡»P²Ä¤»³¹´£¹Lªº DIV «ü¥O¬Û¦P¡G

IDIV    ¹Bºâ¤¸

³o¨àªº¹Bºâ¤¸¬O«ü°£¼Æ¡A¥i¥H¬O¤K¡B¤Q¤»¡B¤T¤Q¤G©Î¤»¤Q¥|¦ì¤¸ªº¼È¦s¾¹©ÎÅܼơA¦Ó³Q°£¼Æ¡B°Ó¤Î¾l¼Æ¨Ì°£¼Æªºªø«×¤£¦P¡A©ñ¦b¯S©wªº¼È¦s¾¹¤º¡A½Ð°Ñ¦Ò¤Uªí¡G

°£ªk¤è¦¡°£¼Æ ³Q°£¼Æ°Ó¼Æ ¾l¼Æ½d¨Ò
¹Bºâ«e¹Bºâ«á
¤K¦ì¤¸°£ªk8 ¦ì¤¸ÅܼÆ
©Î¼È¦s¾¹
AXALAH ;7¡Ò3¡×2⋯⋯1
MOV  AX,7
MOV  CL,3
IDIV CL
AX=0102¡]AL¡×°Ó¡AAH¡×¾l¼Æ¡^
CL=3
¤Q¤»¦ì¤¸°£ªk16 ¦ì¤¸ÅܼÆ
©Î¼È¦s¾¹
DX:AXAXDX ;¡Ð700¡Ò300¡×¡Ð2⋯⋯¡Ð100
MOV  DX,0FFFFh
MOV  AX,0FD44h
MOV  CX,12Ch
IDIV CX
AX=0FFFEh¡]°Ó¬°¡Ð2¡^
DX=0FF9Ch¡]¾l¼Æ¬°¡Ð100¡^
CX=12Ch
¤T¤Q¤G¦ì¤¸°£ªk
¥u¯à¥Î©ó
386µ¥¯Å¥H¤W
32 ¦ì¤¸ÅܼÆ
©Î¼È¦s¾¹
EDX:EAXEAXEDX ;¤C»õ¡Ò­t¤T»õ¡×¡Ð2⋯⋯¤@»õ
MOV  EDX,0
MOV  EAX,29B92700h
MOV  ECX,0EE1E5D00h
IDIV ECX
EAX=0FFFFFFFEh¡]°Ó¬°¡Ð2¡^
EDX=5F5E100h¡]¾l¼Æ¬°¤@»õ¡^
¤»¤Q¥|¦ì¤¸°£ªk
¥u¯à¥Î©ó
x64µ¥¯Å¥H¤W
64 ¦ì¤¸ÅܼÆ
©Î¼È¦s¾¹
RDX:RAXRAXRDX ;­t¤C¥ü¡Ò­t¤T¥ü¡×2⋯⋯­t¤@¥ü
MOV  RDX,0FFFFFFFF FFFFFFFFh
MOV  RAX,0FFFFF9A2 2F7C9000h
MOV  RCX,0FFFFFD45 8210D000h
IDIV RCX
RAX=2¡]°Ó¡^
RDX=FFFFFF172B5AF000h¡]¾l¼Æ¡^

IDIV «ü¥O°õ¦æ§¹«á¡A¶i¦ìºX¼Ð¡B·¸¦ìºX¼Ð¡B²Å¸¹ºX¼Ð¡B¹s­ÈºX¼Ð¡B»²§U¶i¦ìºX¼Ð¡B¦P¦ìºX¼Ð³£¥¼©w¸q¡C¥¼©w¸qªº·N«ä¬O»¡³o¨ÇºX¼Ð¥i¯à¬O¥ô¦ó­È¡A¤£¦Pªº CPU¡B¬[ºc¡A³£¥i¯à·|¤£¦P¡C¦]¦¹¦b IDIV «ü¥O°õ¦æ§¹«á¡A¤£À³¸Ó¥ÑºX¼Ð§PÂ_°õ¦æµ²ªG¡A³oÂI»P DIV «ü¥O¬Û¦P¡CµM¦Ó¡AIDIV «ü¥O¬O¦³¥i¯àµo¥Í·¸¦ìªº±¡§Îm6¡A©ó·¸¦ìºX¼Ð¤W«o¬Ý¤£¥X¨Ó¡A¤U¤@³¹¦A»¡©ú¡C

¹ï©ó°£ªk¦Ó¨¥¡A¤£½×³Q°£¼Æ©Î°£¼Æ¬O¥¿¼Æ¡AÁÙ¬O­t¼Æ¡A³£¥²¶·º¡¨¬©³¤Uªº¤èµ{¦¡¡G

a¡×dq¡Ïr¡A¥B 0<|r|<|d|

¨ä¤¤ a¡Bd¡Bq¡Br ¨Ì§Ç¬O³Q°£¼Æ¡B°£¼Æ¡B°Ó¤Î¾l¼Æ¡A¦Ó¥B³£¬O¾ã¼Æ¡C³o¼Ëªº©w¸q·|¾É­P¾l¼Æ¦³¨âºØ±¡§Î¡G①¾l¼Æ¥²¬°¥¿¼Æ¡B②¾l¼Æ»P³Q°£¼Æ¦P¸¹¡C¦b¼Æ¾Ç­pºâ¤W¡A¦h¼Æ¾ÇªÌ±`¨Ï¥Î«eªÌ¡F¦Ó¦b x64 ²Õ¦X»y¨¥¤¤¡A«h¨Ï¥Î«áªÌ¡C


¥¼§¹«ÝÄò

¥»³¹ªº¤º®e¤w¸g¤Ó¦h¤F¡A¦³Ãö¦³¸¹¼Æªº¨Ò¤l¡A½ÐÄ~Äò¾\۲ĤE³¹¡C