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

📄 cpu86instr.vhd

📁 Intel微处理器8088的VHDL实现
💻 VHD
📖 第 1 页 / 共 2 页
字号:
-- IDIV regfield=111-----------------------------------------------------------------------------constant F6INSTR    : std_logic_vector(7 downto 0) := X"F6";    -- Byteconstant F7INSTR    : std_logic_vector(7 downto 0) := X"F7";    -- Word------------------------------------------------------------------------------- Carry Flag CLC/CMC/STC       -----------------------------------------------------------------------------constant CLC        : std_logic_vector(7 downto 0) := X"F8"; constant CMC        : std_logic_vector(7 downto 0) := X"F5"; constant STC        : std_logic_vector(7 downto 0) := X"F9"; constant CLD        : std_logic_vector(7 downto 0) := X"FC"; constant STDx       : std_logic_vector(7 downto 0) := X"FD";    -- Strange Problem, were is STD defined?constant CLI        : std_logic_vector(7 downto 0) := X"FA"; constant STI        : std_logic_vector(7 downto 0) := X"FB"; ------------------------------------------------------------------------------- 8080 Instruction LAHF/SAHF       -----------------------------------------------------------------------------constant LAHF       : std_logic_vector(7 downto 0) := X"9F"; constant SAHF       : std_logic_vector(7 downto 0) := X"9E"; ------------------------------------------------------------------------------- Conditional Jumps Jxxx       -----------------------------------------------------------------------------constant JZ         : std_logic_vector(7 downto 0) := X"74"; constant JL         : std_logic_vector(7 downto 0) := X"7C"; constant JLE        : std_logic_vector(7 downto 0) := X"7E"; constant JB         : std_logic_vector(7 downto 0) := X"72"; constant JBE        : std_logic_vector(7 downto 0) := X"76"; constant JP         : std_logic_vector(7 downto 0) := X"7A"; constant JO         : std_logic_vector(7 downto 0) := X"70"; constant JS         : std_logic_vector(7 downto 0) := X"78"; constant JNE        : std_logic_vector(7 downto 0) := X"75"; constant JNL        : std_logic_vector(7 downto 0) := X"7D"; constant JNLE       : std_logic_vector(7 downto 0) := X"7F"; constant JNB        : std_logic_vector(7 downto 0) := X"73"; constant JNBE       : std_logic_vector(7 downto 0) := X"77"; constant JNP        : std_logic_vector(7 downto 0) := X"7B"; constant JNO        : std_logic_vector(7 downto 0) := X"71"; constant JNS        : std_logic_vector(7 downto 0) := X"79"; constant JMPS       : std_logic_vector(7 downto 0) := X"EB";        -- Short Jump within segment , SignExt DISPLconstant JMP        : std_logic_vector(7 downto 0) := X"E9";        -- Long Jump within segment, No SignExt DISPLconstant JMPDIS     : std_logic_vector(7 downto 0) := X"EA";        -- Jump Inter Segment (CS:IP given)------------------------------------------------------------------------------- Push/Pop Flags       -----------------------------------------------------------------------------constant PUSHF      : std_logic_vector(7 downto 0) := X"9C"; constant POPF       : std_logic_vector(7 downto 0) := X"9D"; ------------------------------------------------------------------------------- PUSH Register    -----------------------------------------------------------------------------constant PUSHAX     : std_logic_vector(7 downto 0) := X"50"; constant PUSHCX     : std_logic_vector(7 downto 0) := X"51"; constant PUSHDX     : std_logic_vector(7 downto 0) := X"52"; constant PUSHBX     : std_logic_vector(7 downto 0) := X"53"; constant PUSHSP     : std_logic_vector(7 downto 0) := X"54"; constant PUSHBP     : std_logic_vector(7 downto 0) := X"55"; constant PUSHSI     : std_logic_vector(7 downto 0) := X"56"; constant PUSHDI     : std_logic_vector(7 downto 0) := X"57"; constant PUSHES     : std_logic_vector(7 downto 0) := X"06"; constant PUSHCS     : std_logic_vector(7 downto 0) := X"0E";           constant PUSHSS     : std_logic_vector(7 downto 0) := X"16"; constant PUSHDS     : std_logic_vector(7 downto 0) := X"1E"; ------------------------------------------------------------------------------- Pop Register     -----------------------------------------------------------------------------constant POPAX      : std_logic_vector(7 downto 0) := X"58"; constant POPCX      : std_logic_vector(7 downto 0) := X"59"; constant POPDX      : std_logic_vector(7 downto 0) := X"5A"; constant POPBX      : std_logic_vector(7 downto 0) := X"5B"; constant POPSP      : std_logic_vector(7 downto 0) := X"5C"; constant POPBP      : std_logic_vector(7 downto 0) := X"5D"; constant POPSI      : std_logic_vector(7 downto 0) := X"5E"; constant POPDI      : std_logic_vector(7 downto 0) := X"5F"; constant POPES      : std_logic_vector(7 downto 0) := X"07"; --constant POPCS    : std_logic_vector(7 downto 0) := X"1F"; -- Illegalconstant POPSS      : std_logic_vector(7 downto 0) := X"17"; constant POPDS      : std_logic_vector(7 downto 0) := X"1F"; 
constant POPRM      : std_logic_vector(7 downto 0) := X"8F"; ------------------------------------------------------------------------------- Exchange Register    -----------------------------------------------------------------------------constant XCHGW      : std_logic_vector(7 downto 0) := X"86"; constant XCHGB      : std_logic_vector(7 downto 0) := X"87"; constant XCHGAX     : std_logic_vector(7 downto 0) := X"90"; constant XCHGCX     : std_logic_vector(7 downto 0) := X"91"; constant XCHGDX     : std_logic_vector(7 downto 0) := X"92"; constant XCHGBX     : std_logic_vector(7 downto 0) := X"93"; constant XCHGSP     : std_logic_vector(7 downto 0) := X"94"; constant XCHGBP     : std_logic_vector(7 downto 0) := X"95"; constant XCHGSI     : std_logic_vector(7 downto 0) := X"96"; constant XCHGDI     : std_logic_vector(7 downto 0) := X"97"; ------------------------------------------------------------------------------- Load Effective Address       -----------------------------------------------------------------------------constant LEA        : std_logic_vector(7 downto 0) := X"8D"; constant LDS        : std_logic_vector(7 downto 0) := X"C5"; constant LES        : std_logic_vector(7 downto 0) := X"C4"; ------------------------------------------------------------------------------- Convert Instructions     -----------------------------------------------------------------------------constant CBW        : std_logic_vector(7 downto 0) := X"98"; constant CWD        : std_logic_vector(7 downto 0) := X"99"; constant AAS        : std_logic_vector(7 downto 0) := X"3F"; constant DAS        : std_logic_vector(7 downto 0) := X"2F"; constant AAA        : std_logic_vector(7 downto 0) := X"37"; constant DAA        : std_logic_vector(7 downto 0) := X"27"; constant AAM        : std_logic_vector(7 downto 0) := X"D4"; constant AAD        : std_logic_vector(7 downto 0) := X"D5"; constant XLAT       : std_logic_vector(7 downto 0) := X"D7"; ------------------------------------------------------------------------------- Misc Instructions    -----------------------------------------------------------------------------constant NOP        : std_logic_vector(7 downto 0) := X"90";    -- No Operationconstant LOCKBUS    : std_logic_vector(7 downto 0) := X"F0";    -- Assert /LOCK signalconstant WAITx      : std_logic_vector(7 downto 0) := X"9B";    -- WAIT is not implemented, result in NOPconstant HLT        : std_logic_vector(7 downto 0) := X"F4";    -- Halt Instruction, wait NMI, INTR, Reset------------------------------------------------------------------------------- Loop Instructions    -----------------------------------------------------------------------------constant LOOPCX     : std_logic_vector(7 downto 0) := X"E2"; constant LOOPZ      : std_logic_vector(7 downto 0) := X"E1"; constant LOOPNZ     : std_logic_vector(7 downto 0) := X"E0"; constant JCXZ       : std_logic_vector(7 downto 0) := X"E3"; ------------------------------------------------------------------------------- CALL Instructions    -----------------------------------------------------------------------------constant CALL       : std_logic_vector(7 downto 0) := X"E8";    -- Direct within Segment constant CALLDIS    : std_logic_vector(7 downto 0) := X"9A";    -- Direct Inter Segment ------------------------------------------------------------------------------- RET Instructions     -----------------------------------------------------------------------------constant RET        : std_logic_vector(7 downto 0) := X"C3";    -- Within Segment constant RETDIS     : std_logic_vector(7 downto 0) := X"CB";    -- Direct Inter Segment constant RETO       : std_logic_vector(7 downto 0) := X"C2";    -- Within Segment + Offsetconstant RETDISO    : std_logic_vector(7 downto 0) := X"CA";    -- Direct Inter Segment +Offset ------------------------------------------------------------------------------- INT Instructions     -----------------------------------------------------------------------------constant INT        : std_logic_vector(7 downto 0) := X"CD";    -- type=second byte constant INT3       : std_logic_vector(7 downto 0) := X"CC";    -- type=3 constant INTO       : std_logic_vector(7 downto 0) := X"CE";    -- type=4 constant IRET       : std_logic_vector(7 downto 0) := X"CF";    -- Interrupt Return ------------------------------------------------------------------------------- String/Repeat Instructions       -----------------------------------------------------------------------------constant MOVSB      : std_logic_vector(7 downto 0) := X"A4";     constant MOVSW      : std_logic_vector(7 downto 0) := X"A5";     constant CMPSB      : std_logic_vector(7 downto 0) := X"A6";     constant CMPSW      : std_logic_vector(7 downto 0) := X"A7";     constant SCASB      : std_logic_vector(7 downto 0) := X"AE";     constant SCASW      : std_logic_vector(7 downto 0) := X"AF";     constant LODSB      : std_logic_vector(7 downto 0) := X"AC";     constant LODSW      : std_logic_vector(7 downto 0) := X"AD";     constant STOSB      : std_logic_vector(7 downto 0) := X"AA";     constant STOSW      : std_logic_vector(7 downto 0) := X"AB";     constant REPNE      : std_logic_vector(7 downto 0) := X"F2";    -- stop if zf=1constant REPE       : std_logic_vector(7 downto 0) := X"F3";    -- stop if zf/=1 ------------------------------------------------------------------------------- Shift/Rotate Instructions   -- Operation define in MODRM REG bits-- Note REG=110 is undefined    -----------------------------------------------------------------------------constant SHFTROT0   : std_logic_vector(7 downto 0) := X"D0";    constant SHFTROT1   : std_logic_vector(7 downto 0) := X"D1";    constant SHFTROT2   : std_logic_vector(7 downto 0) := X"D2";    constant SHFTROT3   : std_logic_vector(7 downto 0) := X"D3";    ------------------------------------------------------------------------------- FF/FE Instructions. Use regfiled to decode operation   -- INC  reg=000  (FF/FE)-- DEC  reg=001  (FF/FE)-- CALL reg=010  (FF) Indirect within segment-- CALL reg=011  (FF) Indirect Intersegment-- JMP  reg=100  (FF) Indirect within segment-- JMP  reg=101  (FF) Indirect Intersegment-- PUSH reg=110  (FF)-----------------------------------------------------------------------------constant FEINSTR    : std_logic_vector(7 downto 0) := X"FE";    constant FFINSTR    : std_logic_vector(7 downto 0) := X"FF";    END cpu86instr;

⌨️ 快捷键说明

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