一般的微處理機零旗標溢位旗標進位旗標等相關旗標是記錄在

8086 �Ȧs��

�Ȧs���O�b CPU ���@�ӼȮ��x�s��ƪ��a��C�����I�๳�O���� ( DRAM )�A���O�����O����o��j�A�@�ӼȦs���u���@�ӡB��өΥ|�Ӧ줸�ժ��j�p�A��F AMD64�BINTEL64 ( �ΦX�� x86-64 ) �� CPU �ɥN�A�Ȧs���~���K�Ӧ줸�� ( �ƹ�W�ܤ֤H�ΤK�Ӧ줸�ճo����J�A�q�`�O�Υ|�r�աA��Y QWORD�A�@�ӥ|�r�զ@�� 64 �줸 ) ���j�p�CCPU �i�H������Ȧs���@�[�B��B���B���B�B�B�ΡB�h�����B��C8086/8088 �@�� 14 �� 16 �줸���Ȧs���A��W�ٳ��H��ӭ^��r���ܡA�j�P�i�����H�U�|���C


1.�q�μȦs��

�@���|�ӡA��W�٤��O�O AX�BBX�BCX�BDX�A�b�զX�y���{�����j�P�S���Ӥj���t�O�A���O�䤤�u�� AX ( accumulator�A�]�٬��֥[�� ) �i�@�����k�έ��k�����Q���ƻP�Q���ơA�� 16 �줸�����j�ɡA�`�`�� DX:AX �Ӫ��� 32 �줸�C���~�o�|�ӼȦs���A�u�� BX ( base register�A�]�٬��򩳼Ȧs�� ) �i�H�Q�@����}�s�����ΡCCX �]�٬��p�ƼȦs�� ( count register )�A�Ω�p��j�餧���ƩΦr��B�z�����ơCDX �]�٬���ƼȦs�� ( data register )�A�i�ΨӦs����C

�o�|�ӼȦs���A�C�@�ӳ����}�ӡA������� 8 �줸���Ȧs���ϥΡA�Ҧp AX �i�Q�������C�� 8 �줸�٬� AL�A�H�θ����� 8 �줸 AH �ӨϥΡC��l BX�BCX�BDX �]�������C

2.���лP���޼Ȧs��

�����ӡA��W�٤��O�O SP�BBP�BIP�BSI�BDI�C�e����� SP ( stack pointer�A�٬����|���� ) �P BP ( base pointer�A�]�٬��򩳫��� ) �O�P���| ( stack ) �������Ȧs���A�аѦҲĤK���������|�����e�P�ĤE�������ϰ��ܼƪ����e�A�H��o�ԲӪ����|��ơC���|�O�@���ϰ�A�ΨӼȮɦs���Ƥ��ΡA�b 8086/8088 ���A���|�O�ѳ̰���}���}�l�s��A�C���������s�J�@�Ӧr�ժ����סA�åΤ@�ի��СA�Ӫ��ܰ��|�w�g�ϥΨ쨺��F�A�o�ի��дN�O SS:SP�C�]�N�O���A�����O�n�N��Ʀs�J���|�ɡA�Ӹ�����Ӧs��b SS:SP �ҫ�����}�A�C 2 �Ӧ줸�աA�M�� CPU �A�� SP �����e�� 2�A�� SP �A����U�@�ӥ��ϥΪ��Ŷ��C

�����򱡧η|�n�N��Ʀs�J���|���O�H���n�X�ر��ΡA�Ҧp�I�s�Ƶ{���ɡA�|�w�����^��}�s�J���|�Q�I�s���_�ɤ]�O�p���CBP �q�`�Ω�I�s�Ƶ{���ɡA�ǻ��ѼƤ��ΡC

IP (instruction pointer�A�٬����O����) �t�X CS �ܦ� CS:IP�A���V�N�n���檺 8086/8088 ��}�C�� CPU �n����{���ɡA������O����h�����n���檺���O�A�ӭn�쨺�@�ӰO�����}�h�������O�O�H�o�� CPU �N�|�� CS:IP ���쪺��}�h�����C�b�{�����A�@��O�S����k���� CS:IP ���ȡA���D�O���D (jmp�Bjz��) ���O�άO�I�s (call�Bret��) ���O�C

SI (source index�A�٬��ӷ����޼Ȧs��) �M DI (destination index�A�٬��ت����޼Ȧs��) �q�`�O�Ψӷ��@��}���СA�]�i�Χ@�[��k�C�o���ӼȦs���A�C�@�ӳ�������}�ӷ��@��� 8 �줸���Ȧs���ϥΡC


3.�Ϭq�Ȧs��

�� CS�BDS�BES�BSS �|�ӡA���O���ܵ{���X(code segment register)�B���(data segment register)�B�B�~(extra segment register)�B���|(stack segment register)�Ϭq���ΡC�b DOS �t�Τ��A�C�@�ӰϬq�e�q�u�� 64KBytes�C

����ưϬq�����ήɡA�N�i�H���B�~�Ϭq�Ӹɨ��A�Ҧp�Q�n�N�@�ӰϬq���Y�Ǥ��e�ƻs��t�@�Ϭq���A�N�i�H�P�ɫ��w DS�BES ���O���ܳo��ӰϬq�C

4.�X�мȦs��

�X�мȦs�� (flag register) �O�@�� 16 �줸���Ȧs���A���u���䤤�E�Ӧ줸���Ψ�A���̤����b�o�Q���Ӧ줸���A�ĥγo�ؤ����覡�O���F�P�¦��� 8080 CPU ���X�ЬۦP�A������p�U�ϩҥܡG

�o 9 �ӺX�Хi�����T���G���A�X�� ( status flag )�B����X�� ( control flag ) �P�t�κX�� ( system flag )�C���A�X�Х]�t CF�BPF�BAF�BZF�BSF �M OF�A���̷|�����N�B������޿�B�⵲�G���A���v�T�A�ӨϺX�гQ�]�w ( set�A��Ȭ� 1 )�A�γQ�M�� ( clear�A��Ȭ��s )�C�� 10 �줸�� DF �Ψӱ���y�B�h���B�j�M�r�ꪺ��V�A�ݩ󱱨�X�СC�ܩ� IF�BTF ���]�p�@�~�t�ΡB�����ɤ~�ݭn�Ψ�A�ݩ�t�κX�СA�@�����ε{���ܤ֨ϥΡC���U²�椶�гo�ǺX�СG

�W�� �줸 ���A ����
�i��X��
carry flag
CF
0 CF=1�ACY
CF=0�ANC
���B��o�Ͷi��έɦ�ɡACF �Q�]�� 1�F�Ϥ��]�� 0�C�Ҧp��Ƭۥ[�G

mov     ax,8000h
        add     ax,8000h

8000h��8000h ���� 10000h�A�o�Ͷi��A���M AX �� 0�A���O�|�� CF �]���@�A���ܶi��C
�P��X��
parity flag
PF
2 PF=1�APE
PF=0�APO
�B�⪺���G�����G�i���A�̧C�� 8 �Ӧ줸���A�Y�����ƭ� 1�A�h���줸�]�� 1�A�Ϥ��� 0�C
���U�i��X��
auxiliary carry flag
AF
4 AF=1�AAC
AF=0�ANA
���B��L�{���A�� 3 �줸�P�� 4 �줸�����o�Ͷi��έɦ�ɡAAF �Q�]�� 1�A�_�h�Q�]�� 0�A�`�Ω� BCD ���B��C
�s�ȺX��
zero flag
ZF
6 ZF=1�AZR
ZF=0�ANZ
�B�⵲�G���s�ɡAZF �|�Q�]�w�� 1�C�Y����ۦP��ơA ZF �]�|�Q�]���@�A�Y������ۦP����ơAZF �|�Q�M�����s�C�Ҧp�G

mov     ax,8000h
        add     ax,8000h

�ۥ[��AAX ���s�A�G ZF �]���@�C
�Ÿ��X��
sign flag
SF
7 SF=1�ANG
SF=0�APL
�B�⵲�G���̰��줸�� 1 �ɡASF �|�Q�]�� 1 ( ���ܭt�� )�A�_�h�Q�M���C
�����X��
trap flag
TF
8 �@ �Ω��B�l�ܰ����ɡA�ҥH�]�٬��l�ܺX�� ( trace flag )�A�Ҧp�b MS-DOS �� DEBUG ���A�N�O�Q�� TF �F���B�l�ܪ��ت��C�� TF �]���@�ɡA�C����@�ӫ��O�K�|�o�ͤ��_�A�����_�N�N����ӫ��O��Ȧs���C�X�C
���_�X��
interrupt flag
IF
9 IF=1�AEI
IF=0�ADI
�� IF �Q�]�w�ɡA�i�B�n���w�餤�_�~��� CPU ���ͤ��_�ĪG�F�Ϥ��Ҧ��i�B�n���w�餤�_���|�Q����C���O���i�B�n���_�H�� CPU ���ͪ��ҥ~�o�������� IF �v�T�C
��V�X��
direction flag
DF
10 DF=1�ADN
DF=0�AUP
�� DF �Q�M���� ( �Y DF=0 )�A�B�z�r�ꪺ���޼Ȧs���|���W�A������}��V�B�z�F�Ϥ� DF �Q�]�w�A�h����A���C��}��V�B�z�C
����X��
overflow flag
OF
11 OF=1�AOV
OF=0�ANV

���B�⵲�G�W�L�ү���ܪ��d��ɡA����X�з|�Q�]���@�A�Ϥ��]���s�C�j�P�i���T�ر��ΡG(1)��P���Ƭۥ[�Ψⲧ���Ƭ۴�A(2)�����B��ɡA�ұo���n�ΰӶW�L�B�⤸�s��d��A�b����α�����O�ɡA�̰��줸�Ȩ����� ( 0 �ܦ� 1 �� 1 �ܦ� 0 )�C( �Բӱ��νаѾ\�s���� 14 �����ª��� 35 ���C)

�W�����������X�мȦs�����N�q�C�H�X�мȦs�����줸 0 ���ҡA�줸 0 �٬��y�i��X�Сz�A�����Q�]�w�ɡA��Ȭ� 1�A�b DEBUG �إH CY ���ܡF�Q�M���ɡA��Ȭ� 0�A�b DEBUG �إH NC ���ܡC���U�C�X DEBUG ������ r ���O�᪺�N�q�G

-r [Enter] AX=0000 BX=0000 CX=0025 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=10F7 ES=10F7 SS=10F7 CS=10F7 IP=0100 NV UP EI PL NZ NA PO NC 10F7:0100 EB19 JMP 0119

�W���զ⪺�����N�O�X�Ъ����A�C�U���O�U�X�ЦW�٥H�ΦU�ت��A�����ܤ覡�G

�X�ЦW�� �]�w
( �]�w�ɨ�Ȭ� 1 )
�M��
( �M���ɨ�Ȭ� 0 )
CF�A�i��X��
PF�A�P��X��
AF�A���U�i��X��
ZF�A�s�ȺX��
SF�A�Ÿ��X��
IF�A���_�X��
DF�A��V�X��
OF�A����X��
CY
PE
AC
ZR
NG
EI
DN
OV
NC
PO
NA
NZ
PL
DI
UP
NV

80x87 �Ȧs��

�̦��ϥΦb IBM PC �άۮe���ت� FPU �O 8087�A��ӤS���O���i���� 80287�B80387�A�o�̦X�٬� x87�Cx87 �@�������Ȧs���A���̬O���|�Ȧs�� ( register stack )�B���A�r�� ( status word )�B����r�� ( control word )�B���Ҧr�� ( tag word )�B�ҥ~���� ( exception pointer )�C


1.���|�Ȧs��

x87 �@���K�Ӱ��|�Ȧs���A��W�٬O ST(0)�BST(1)�BST(2)�K�KST(7)�A�䤤 ST(0) �Q�٬����|�� ( TOS�ATop Of Stack )�A�b�զX�y�����]�i²�g�� ST�C�o�K�Ӱ��|�Ȧs���C�@�ӳ��� 80 �줸���j�p�Ӧs��B�I�ơA�åB�H�Ȯɹ�ƪ��κA�s��A�i�H���۷����ǽT�C�� x87 ���� FLD�BFILD �����O�A�q�O���餤����ơB�u��Ƶ����P�榡���J�ƭȮɡAx87 ��۰��ഫ���Ȯɹ�Ʈ榡����|�Ȧs���ءF�� x87 �J�칳 FIST�BFST �����O�A�n����|�Ȧs�������ƭȦs�J�O���餤�Ax87 �|�۰��ഫ���ҫ��w���榡�C

x87 �i�H����\�h�������p��A�p�D�����B�l���B��ơK�K���B��A���O�H���|�Ȧs�������Ȯɹ�Ƭ��B�⪺��ơA�]���]�٬���ƼȦs�� ( data register )�C���\�h���B�ⳣ�O�|�o�A�� TOS �A���ɤ]�� TOS �M��L���|�Ȧs�����B��A�ҥH TOS �`�`�O�i�H�ٲ��A�{���]�p�v�o�p�߳o�ءy���t�z���g�k�A�H�K�y���x�Z�C

�o 8 �Ӱ��|�Ȧs�����W�١AST(0)�BST(1)�BST(2)�K�K�����A�ä��O�T�w���Y�Ӱ��|�Ȧs���C�ӬO�Ѫ��A�r�� ( ���U���� ) ���T�� ST �줸���w���|���A�ӤU�@�Ӱ��|�Ȧs���N�O ST(1)�B�A�U�@�ӴN�O ST(2)�K�K�C

2.����r��

�o�� 16 �줸���Ȧs���M�w�F x87 �藍�P�ҥ~���󪺳B�z�B�p��ˤJ�B�����ƺ�T�׵����C����r�ժ��U�����p�U�ϩҥܡG

��󱱨�r�ջ����p�U�G

  1. X ( �]�٬� IC�Ainfinity control bit�A�L���j����줸 )�G8087�B80287 ����ؤ覡�i�H��y�L�a�j�z�P�����Ƨ@����A�@�جO�⥿�L�a�j�P�t�L�a�j�ݦ��ƽu�W����ݡA�S���Ƥ񥿵L�a�j�٤j�A�]�S���Ƥ�t�L�a�j�٤p�A�o�˪��覡�U�����ƬO�i�H�M���B�t�L�a�j����C�t�@�جO�⥿�B�t�L�a�j�ݦ��P�@�I�A�۷����ƽu¶�X�A�o�ɦ����Ƥ��i�H�M���B�t�L�a�j����C�e�̺١yaffine closure�z�AIC �]�� 1�F��̺١yprojective closure�z�AIC �]�� 0�A�o�ؤ覡�]�O FINIT �᪺���w�ȡC�b��Ӫ� FPU �ءA�õL�Ӥj�γB�A�����O�d�U�ӡA���F�P 8087�B80287 �ۮe�C
  2. RC ( rounding control bits�A�ˤJ����줸 )�G�� 10�B11 �줸�O�ΨӨM�w�p�󰵱ˤJ�ʧ@���C
    RC �ˤJ���� ���� �Ҥl
    00 �|�ˤ��J �V�̪񪺾��
    �{�|�˥h�A�J���i��
    4.5 ==> 5
    -4.5 ==> -5
    01 �V�t�L�a�j�ˤJ ���ȱ˥h�p�Ƴ���
    �t�ȱ˥h�p�Ƴ�����A��@
    4.5 ==> 4
    -4.4 ==> -5
    10 �V���L�a�j�ˤJ ���ȱ˥h�p�Ƴ�����A�[�@
    �t�ȱ˥h�p�Ƴ���
    4.5 ==> 5
    -4.5 ==> -4
    11 �V�s�˥h ���ץ��t�ȧ��˥h�p�Ƴ��� 4.5 ==> 4
    -4.5 ==> -4
  3. PC ( precision control bits�A��K�ױ���줸 )�G�o�O���F�t�X�Y�ǹq���t�өһs�y���C��K�ת������ӳ]���A���b 8087 ���������|�Ȧs�����O�H 80 �줸����K�� ( ��Y 64 �줸���ļơB15 �줸���ƤΤ@�줸�Ÿ� )�A�s��γB�z��ơC���M�A�p�G���ļƪ���K�קC�A�B�z�ɶ��N����u�A�]���p�G��������K�סA�ӤS�n�D�ֳt�����ΤU�A�i�H�]�w PC �줸�CPC �줸�����ܤ覡�O�G00 ���� 24 �줸���ļ� 01 �O�d���ϥ� 10 ���� 53 �줸���ļ� 11 ���� 64 �줸���ļơ@�@���w��
  4. �� 0 ��� 5 �줸���O�O�B�z�ҥ~�ɪ��B�n�覡�A�ҿרҥ~�O�� 80x87 �B��ɵo�ͤ��X�k���ާ@�B���H�s�B���L�W���B�C��U���B�ϱ`�ȡB��T�׿��~�o���ر��ΡC���o�ͳo���ر��Ϊ�����@�ءA�O�_�n�o�X�T���A�q�� 80x86�C�p�G�n�� 80x86 ���D�٤����y���B�n�z(unmasked) ���ɸӹ����줸�]���s�A����p�G�o�ͨҥ~�ɡA�i�y���{�����_�Ӹ���]�p�̩ҳ]�p���{���ӳB�z�C�p�G���� 80x86 ���D�٬��y�Q�B�n�z�A�����줸�]���@�A���ҥ~�o�ͮ� 80x87 ��۰ʳB�z�C�]�� 80x87 ��U�بҥ~���B�z�覡�A�i���]�p�o�۷������A�]�����w�ȳ]���@�C�b FINIT ����A�]�O��o���Ӧ줸�]�� 1�C�H�U��o���بҥ~���ξB�n�����������G
    • ��T�סG�줸 5 �٬� PM ( precision mask )�A���줸�]���s�ɡA�Y�ˤJ���`�ɡA�ѳ]�p�̩ҳ]�p���{���ӳB�z�C
    • �C��U���G�줸 4 �٬� UM ( underflow mask )�A���줸�]���s�ɡA�Y�B�⵲�G�Ӥp�A�W�L FPU ��B�z���U���ɡA�ѳ]�p�̩ҳ]�p���{���ӳB�z�C
    • ���L�W���G�줸 3 �٬� OM ( overflow mask )�A���줸�]���s�ɡA�Y�B�⵲�G�Ӥj�A�W�L FPU ��B�z���W���ɡA�ѳ]�p�̩ҳ]�p���{���ӳB�z�C
    • ���H�s�G�줸 2 �٬� ZM ( zero-divide mask )�A���줸�]���s�ɡA�Y�o�Ͱ��H�s�����ΡA�ѳ]�p�̩ҳ]�p���{���ӳB�z�C
    • �ϱ`�ȡG�줸 1 �٬� DM ( denormalized-operand mask)�A���줸�]���s�ɡA�O����B�⤸�ӱ`�u�@�A���|�Ȧs���ܦ����`�ȡC
    • ���X�k���ާ@�G�줸 0 �٬� IM ( invalid-operation mask )�A���줸�]���s�ɡA�ѳ]�p�̩ҳ]�p���{���ӳB�z�C

IM�BDM�BZM �o�T�Ӧ줸�O x87 �b������O���e�A�N�఻���쪺�FOM�BUM�BPM �h�O�b���O�����A�~�఻����C

3.���A�r��

�U�W��q�A�o�ӼȦs���O�ΨӪ��� 80x87 ���A���A�䵲�c�p�U�ϡG

���]�t�F�|����T�C

  1. ���L���ܾ� ( busy indicator )�G�b�� 15 �줸�A�o�Ӧ줸���� 8087 �O�_���b����R�O�ιB��A�èS�Ӥj���γB�C
  2. ����X ( condition code )�G�b�� 14�B10�B9�B8 �줸�A�H C3�BC2�BC1�BC0 ���ܡA�o�X�Ӧ줸�|�� FTST�BFCOM�BFXAM �����O���v�T�A�@�볣�O�ΨӤ���j�p�A�M�w�{���y�{����ҥΡC
  3. ���|���ݫ��� ( TOP�Atop of stack pointer )�G�� 13�B12�B11 �줸�A�o�T�Ӧ줸�O�Ψӫ��ܲ{�b�����|���O���@�Ӱ��|�Ȧs���C
  4. ���~�K�n���A�G�� 7 �Ӧ줸�� ES ( error summary status )�A���줸 0 �� 5 �������@�Ӧ줸�]�w�ɡA���줸�N�|�]�w�C�Y���ɥ��n�B���ܡA�N�|�I�s�������{������ҥ~�B�z�C
  5. ���|���~�G�� 6 �Ӧ줸�٬� SF ( stack fault ) �줸�C�����|�Ȧs�����A�o�Ͱ��L�W���ΧC��U���ɡAx87 �|�]�w���줸�C
  6. ���ܨҥ~�G�� 5�B4�B3�B2�B1�B0 �줸�A��@�Φp�U���G
    • �줸 5�G�٬� PE ( precision exception flag�A��K�רҥ~�X�� )�A����K�׵o�Ϳ��~�ɡAFPU �N�|�⦹�X�г]�� 1�C
    • �줸 4�G�٬� UE ( underflow exception flag )�A���B�⵲�G�Ӥp�A�W�X FPU ��B�z���d��ɡAFPU �N�|�⦹�X�г]�� 1�C
    • �줸 3�G�٬� OE ( overflow exception flag )�A���B�⵲�G�Ӥj�A�W�X FPU ��B�z���d��ɡAFPU �N�|�⦹�X�г]�� 1�C
    • �줸 2�G�٬� ZE ( zero divide exception flag�A���H�s�ҥ~�X�� )�A���o�Ͱ��H�s���B��ɡAFPU �N�|�⦹�X�г]�� 1�C
    • �줸 1�G�٬� DE ( denormalized operand exception flag�A�ϱ`�Ȩҥ~�X�� )�A���B�⵲�G���ϱ`�ȮɡA�AFPU �N�|�⦹�X�г]�� 1�C
    • �줸 0�G�٬� IE ( invalid operation exception flag�A���X�k�ާ@�ҥ~�X�� )�A���J�����X�k���ާ@�A�Ҧp�t�ƪ�����ڡAFPU �N�|�⦹�X�г]�� 1�C


4.���Ҧr��

8087 ���@�� 16 �줸�����Ҧr�աA���Ҧr���ئ��K�Ӽ��ҡA�C��Ӧ줸���@�Ӽ��ҡA���O������K�Ӱ��|�Ȧs���C�p�U�ϡG

�C�Ӽ��ҥN���۹��������|�Ȧs�����s�J���ƭȧκA�C

  1. 00�G�i�μƭȡA�]�t���` ( normal ) �β��`�� ( unnormal )�C
  2. 01�G�s�C
  3. 10�G�D�ƭ� ( NaN�ANot a Number )�B�L�a�j ( NaN�ANot a Number )�B�ϱ`�� ( denormal )�C
  4. 11�G�Ū��C

8087 �ү�B�z���ƭȸ�������A���F�C�ذ򥻧κA ( �r�վ�ơB�u��ơB����ơB�u��ơB����ơB�Ȯɹ�ơB�E�� BCD ��� ) ���~�A�٫O�d�F�Y�ǯS�����s�X�覡�Ӫ��ܯS������ơA�o�ǯS������Ƥ@�����ΤW���֨ϥΡA�i�ѦҲ� 22 �����|�������C


5.�ҥ~����

�ҥ~���Х]�t�T�ӼȦs���G���O���мȦs�� ( last instruction pointer )�B�B�⤸���мȦs�� ( last operand pointer�A�]�s��ƫ��мȦs���Alast data pointer )�B���O�X�Ȧs�� ( last instruction opcode )�C�o�T�ӼȦs���Ω�ҥ~�o�ͮɡA���{�����D�o�ͨҥ~�ɡAx87 �����污�ΡC���O���мȦs���P�B�⤸���мȦs�����O 48 �줸���A���O�X�Ȧs���� 11 �줸���C

80386 �Ȧs��

��F���L 74 �~�Q��A�^�S�����X�F�s�@�N�� CPU�A80386�C�N�զX�y�����[�I�ӬݡA�o�� CPU �P���e�� 8086/80286 ���ܤj�����P�A���㦳 32 �줸�Ȧs���A�i�H�@���� 32 �줸�B��A�@���� Pentium 4 ����A�q�μȦs���B���лP���޼Ȧs���B�Ϭq�Ȧs���B�X�мȦs�����ۦP�C


�q�μȦs��

80386 ���q�μȦs���@�� 4 �ӡA���O�O EAX�BEBX�BECX�BEDX�A���̪��W�٩M 8086/80286 �q�μȦs���W�٫ܬۦ��A�e�����yE�z���ܡyextended�z�A�������N�A���N�O���ӤQ���줸���Ȧs���X�R���T�Q�G�줸�C�o�|�� 32 �줸���q�μȦs���A�C�@�Ӹ��C�r�ժ� 16 �줸�S�i�W�ߨϥΡA�W�ٻP 8086 �ۦP�C�ӳo�C�r�ժ� 16 �줸�Ȧs���S�i�A�������줸�ժ� 8 �줸�P�C�줸�ժ� 8 �줸��ӼȦs���C

�Ҧp�֥[�� EAX ���C�r�ժ� 16 �줸�� AX �Ȧs���AAX �S�i���� AH �P AL ��ӤK�줸���Ȧs���A���O EAX �����r�ժ� 16 �줸�L�k��W�ϥΤF�A�]�S�S�����W�١C�ܩ� EBX�BECX�BEDX �]�M EAX �ۦP�A���U�ϡC


���p��� EAX �� 12345678H�A��ӵ{���]�ݭn�ȧ� AH ���ȧ令 00�A���o�ɭԦAŪ�� EAX �ɡAEAX �|�ܦ� 12340078H�C


���лP���޼Ȧs��

80386 �� 4 �� 32 �줸�����лP���޼Ȧs���A���O�O ESP�BEBP�BEIP�BESI�BEDI�A�ӨC�@�ӤS�i�H����C�� 16 �줸��X�ӨϥΡA���O�٬� SP�BBP�BIP�BSI�BDI�A�P�˪��������r�յL�k��W�ϥΡA�]�S�S�����W�١C�o�ǼȦs�����Ϊk�P 8086/80286 �ۦP�A�Ҧp�b�ϥ�

rep movsb

�ɡA�N������ӷ��r���}�s�� ESI�A�ت��r���}�s�� EDI�A���ʪ��줸�ռƦs�� ECX�C


�Ϭq�Ȧs��

80386/80486/Pentium ������ 16 �줸���Ϭq�Ȧs���A���O�O CS�BDS�BES�BSS�BFS �M GS�A�� 8086/80286 �h�X��ӡAFS �M GS�C�e���|�Ӫ��Ϊk�P 8086/80286 �ۦP�A�Ҧp CS ���V�{���X�Ϭq�BDS ���V��ưϬq�C�h�X�Ӫ� FS �M GS �i�����B�~�Ϭq�C���O�b�O�@�Ҧ����Ϭq���N�q�P�u��Ҧ����P�A�аѦҫO�@�Ҧ������m�C


�����X�мȦs�� ( EFLAG )

�P 8086 �� 16 �줸�X�мȦs������A80386/80486/Pentium �������X�мȦs���� 32 �줸�e�A���M�h�F�@�Ǥj�����P�O�@�Ҧ������t�κX�СA�����M���\�h�줸���Q�ϥΡA�åB����X�лP���A�X�г���P 8086 �ۮe�C�U�ϬO�����X�Ъ��U�줸�W�١G

�W�� �줸 ����
I/O �S�v����
I/O privilege level
12�B13

����줸�O�ΨӨM�w�{���O�_���\�s�� I/O ��ΰ���ݭn�S�v���ū��O ( �p lgdt�Bmov cr0,ax ���� )�A���{�����S�v���� ( CPL ) �p��ε��� IOPL �ɡA�~�i�H�s�� I/O ��ΰ���ݭn�S�v���ū��O�C�`�N�A�b 386 �Ψ䰪�� CPU ���O�@�Ҧ����A�@���� RING0�BRING1�BRING2�BRING3 �|�دS�v���šARING0 �O�̰��šA�@��@�~�t�ΡB�X�ʵ{�����b�o�ص��ŤU����CRING3 �O�̧C���šA�@�����ε{���b RING3 ������C

Task �걵�X��
nested task
NT
14

���X�ХΨӪ��ܥثe���檺�{�� ( task ) ���e�O�_�٦���L�{�����ݳQ����A�Y NT=1�A�����٦��{�����ݰ���F�Ϥ��h�_�C

�^�_�X��
resume flag
RF
16

���X�ХΨӬO�_�Ȯɧ�����ҥ~�A�Y RF=1�ACPU �|�h�B�z�����ҥ~�A�Ϥ����|�C

���� 86 �Ҧ�
virtual 86 mode
VM
17

���� 86 �Ҧ� ( V86 mode ) �i�����@�دS�����O�@�Ҧ��ACPU �n���i�J�O�@�Ҧ�����A�~�i�i�J V86 �Ҧ��A�ҥH�� VM=1 �ɬ� V86 �Ҧ��FVM=0 �ɬ��O�@�Ҧ��C

����ˬd
alignment check
AC
18

�� AC �P CR0 �Ȧs���P�ɬ��@�ɡACPU �|�ˬd�O����s����}�O�_����A�S��������s���ʧ@�|���͡y����ˬd�ҥ~�z�C�ҿסy�ˬd�O����s����}�O�_����z���N��O�G���s���r�� ( word ) �����������ƩҦb��}�����O 2 �����ơB�s�����r�� ( dword ) �����������ƩҦb��}�����O 4 �����ơC

�������_�X��
virtual interrupt flag
VIF
19

�Ω�h�u���ҤU�䴩���_�X�СC

�������_�a�m�X��
virtual interrupt pending flag
VIP
20

�Ω�h�u���ҤU�䴩���_�X�СC

�ѧO�X��
identification flag
ID
21

�p�G���ε{���i�H�M���γ]�w�ѧO�X�СA���� CPU �䴩 CPUID ���O�C


�O����޲z�Ȧs��

80386/80486/Pentium �ϥΥ|�ӰO����޲z�Ȧs���ӰO���O�@�Ҧ����U�A�O����y�z�������}�Ҧb�A���̬O�G

  1. GDTR ( global descriptor table register�A����y�z������Ȧs�� )�G�ΨӰO�� GDT ( ����y�z������ ) �Ҧb���_�l��}�C
  2. LDTR ( local descriptor table register�A�ϰ�y�z������Ȧs�� )�G�ΨӰO�� LDT ( �ϰ�y�z������ ) �Ҧb���_�l��}�C
  3. IDTR ( interrupt descriptor table register�A���_�y�z������Ȧs�� )�G�ΨӰO�� IDT ( ���_�y�z������ ) �Ҧb���_�l��}�C
  4. TR ( task register�ATASK �Ȧs�� )�G�ΨӰO�����b���檺�u�@ ( task ) �ҹ����� TSS ( task state segment ) ��ܾ��C


����Ȧs��

80386/80486 ���|�ӱ���Ȧs���A���O�O CR0�BCR1�BCR2�BCR3�APentium �٦h�F�@�� CR4�C

  1. CR0�G�����p�U�G
    • PE�G�O�@�Ҧ��Ұ� ( protection enabled ) �O�ΨӶi�J�O�@�Ҧ�������C�� 80x86 �t�C�q���}���ɡA���줸�� 0�A���� CPU �B��u��Ҧ� ( real mode )�A�ȯ�ϥ� 1MB �O����A�n�i�J�O�@�Ҧ������N���줸�����ܦ� 1�A�~�i�ϥΦh�F 4G �O����C
    • MP�G���줸�ΨӪ��� FPU �s�b�P�_�AMP �O monitor co-processor�C�p�G MP�BTS ���Q�]�w�A�h CPU ����� FWAIT �� WAIT ���O�ɡA�|���� device-not-avaiable �ҥ~ ( #NM �ҥ~ )�C
    • EM�G�� EM �Q�]�w�ɡA���ܹq���� CPU �����S���w�� FPU �A�ҥH����� FPU ���O�ɡA�|���� #NM �ҥ~�A�����H�n����� ( emulation )�C�Ϥ� EM �Q�M���A���ܹq�����w�w�ˤF FPU�C
    • TS�G
    • ET�Gextension type ���N�A�b 80386/80486 CPU ���AET �Q�]�w�ɡA���ܤ䴩 387 FPU�C�b Pentium/Xeon/P6 ���AET �Q�O�d�A���� 1�C
    • NE�G
    • WP�G
    • AM�G
    • NW�GNot write-through�A�����줸�� 0 �ɡA�Ұʧ֨������g�^ ( write-through )�A�N�Y�b���O���餺�e�ɡA�P�ɧ��O����Χ֨����e�F�Ϥ��h NW �� 1 �ɡA������g�^�A�N�Y�ȧ�s�֨����e�A�� CPU �Ŷ��ɤ~�g�^�ܰO����C80386 �S���֨��O����A�ҥH�S���o�Ӧ줸�C
    • CD�GCache Disable ���N�A�����줸���@�ɡACPU �� L1 �֨��\��N�Q�Ȱ��A�N��O�b CPU �� L1 �֨��O���� ( cache ) ������ƱN���|�A�s�W�A�]�N�O�w�g�b�֨��O���餺����Ƥ�����Q�֨��A�����b�֨��O���餺����ƴN���|�Q�֨��F�C80386 �S���o�ӺX�СC
    • PG�G
  2. CR1�G�Q�O�d�A���ϥΡC
  3. CR2�G���y�����~�z�ҥ~ ( page-fault ) �o�ͮɡA�y�����~���u�ʦ�} ( linear address ) �|�x�s�b CR2�C
  4. CR3�G������Ȧs���B�z���������ؿ� ( page directory )�A�����p�U�G
    • PWT�GPWT �b CR3 ���� 3 �줸�A�O�Ψӱ���p��B�z�����ؿ��֨��A�Y�]�w���줸�A�֨��ĥ� write-through�F�Ϥ��h�ĥ� write-back�CPWT �O page-level writes transparent ���Y�g�C
    • PCD�GPCD �b CR3 ���� 4 �줸�A�O�Ψӱ�������ؿ��֨��O�_�i�ϥΡAPCD �M CD ���ȳ��O 0 ���ܡA ���ܤ����ؿ��O�i�H�Q�֨��A�_�h�����ؿ��N������Q�֨��_�ӡCPCD �O page-level cache disable ���Y�g�C
    • PDB�GCR3 ���� 12 �� 31 �줸�٬������ؿ��_�l��} ( page-directory base )�A�x�s�����ؿ����e 20 �� ( �줸 12 �� 31 ) ����}�C
  5. CR4�GPentium �Ψ�H�W���Ū� CPU �~�� CR4 �Ȧs���A80386/80486 �S���o�ӼȦs���CCR4 �����p�U�G
    • VME�GVME �O virtual-86 mode extensions ���Y�g�A�� VME �Q�]�w�ɡA�i�H�b V86 �Ҧ������\���_�Ψҥ~�B�z�����A�ϥΤ��_�Ψҥ~�B�z�����i�H�W�i V86 �Ҧ��IJv�F�Ϥ� VME �Q�M���A�h�L�k�ϥΩ����C
    • PVI�G
    • TSD�G�줸 2 �٬��utime stamp disable�v�X�СC�����줸�]�� 0 �ɡA�b����S�v���ŤU������� RDTSC ���O�F�����줸�� 1 �ɡA�u���S�v���Ŭ� 0 �ɡA�~����� RDTSC ���O�C�Y���줸�� 1 �B�S�v���Ť��� 0 �ӤS���� RDTSC ���O�ɡA�|�o�ͤ@��O�@�Ҧ����`�C
    • DE�G
    • PSE�G
    • MCE�G

Toplist

最新的帖子

標籤