241 lines
15 KiB
Plaintext
241 lines
15 KiB
Plaintext
|
----------------------------------------------------------------
|
||
|
| |
|
||
|
| |
|
||
|
| Intel |
|
||
|
| |
|
||
|
| 88888 000 88888 88888 |
|
||
|
| 8 8 0 0 8 8 8 8 |
|
||
|
| 8 8 0 0 0 8 8 8 8 |
|
||
|
| 88888 0 0 0 88888 88888 |
|
||
|
| 8 8 0 0 0 8 8 8 8 |
|
||
|
| 8 8 0 0 8 8 8 8 |
|
||
|
| 88888 000 88888 88888 |
|
||
|
| |
|
||
|
| 8088 MICROPROCESSOR Instruction Set Summary |
|
||
|
| |
|
||
|
| |
|
||
|
| |
|
||
|
| |
|
||
|
| |
|
||
|
| _________ _________ |
|
||
|
| _| \__/ |_ |
|
||
|
| GND |_|1 40|_| Vcc |
|
||
|
| _| |_ |
|
||
|
| <-- A14 |_|2 39|_| A15 --> |
|
||
|
| _| |_ |
|
||
|
| <-- A13 |_|3 38|_| A16/S3 --> |
|
||
|
| _| |_ |
|
||
|
| <-- A12 |_|4 37|_| A17/S4 --> |
|
||
|
| _| |_ |
|
||
|
| <-- A11 |_|5 36|_| A18/S5 --> |
|
||
|
| _| |_ |
|
||
|
| <-- A10 |_|6 35|_| A19/S6 --> |
|
||
|
| _| |_ ___ |
|
||
|
| <-- A9 |_|7 34|_| SSO --> |
|
||
|
| _| |_ __ |
|
||
|
| <--> A8 |_|8 33|_| MN/MX <-- |
|
||
|
| _| |_ |
|
||
|
| <--> AD7 |_|9 32|_| RD --> |
|
||
|
| _| |_ __ ___ |
|
||
|
| <--> AD6 |_|10 8088 31|_| RQ/GT0,HOLD <-->|
|
||
|
| _| |_ __ ___ |
|
||
|
| <--> AD5 |_|11 30|_| RQ/GT1,HOLD <-->|
|
||
|
| _| |_ ____ __ |
|
||
|
| <--> AD4 |_|12 29|_| LOCK,WR --> |
|
||
|
| _| |_ _ |
|
||
|
| <--> AD3 |_|13 28|_| S2,IO/M --> |
|
||
|
| _| |_ _ |
|
||
|
| <--> AD2 |_|14 27|_| S1,DT/R --> |
|
||
|
| _| |_ ___ |
|
||
|
| <--> AD1 |_|15 26|_| S0,DEN --> |
|
||
|
| _| |_ |
|
||
|
| <--> AD0 |_|16 25|_| QS0,ALE --> |
|
||
|
| _| |_ ____ |
|
||
|
| --> NMI |_|17 24|_| QS1,INTA --> |
|
||
|
| _| |_ ____ |
|
||
|
| --> INTR |_|18 23|_| TEST <-- |
|
||
|
| _| |_ |
|
||
|
| --> CLK |_|19 22|_| READY <-- |
|
||
|
| _| |_ |
|
||
|
| GND |_|20 21|_| RESET <-- |
|
||
|
| |______________________| |
|
||
|
| |
|
||
|
| |
|
||
|
| |
|
||
|
| |
|
||
|
| |
|
||
|
| |
|
||
|
|Written by Jonathan Bowen |
|
||
|
| Programming Research Group |
|
||
|
| Oxford University Computing Laboratory |
|
||
|
| 8-11 Keble Road |
|
||
|
| Oxford OX1 3QD |
|
||
|
| England |
|
||
|
| |
|
||
|
| Tel +44-865-273840 |
|
||
|
| |
|
||
|
|Created October 1982 |
|
||
|
|Updated April 1985 |
|
||
|
|Issue 1.3 Copyright (C) J.P.Bowen 1985|
|
||
|
----------------------------------------------------------------
|
||
|
----------------------------------------------------------------
|
||
|
|Mnemonic |ODITSZAPC|Description |
|
||
|
|------------------+---------+---------------------------------|
|
||
|
|AAA |?---??*?*|ASCII Adjust for Add in AX |
|
||
|
|AAD |?---**?*?|ASCII Adjust for Divide in AX |
|
||
|
|AAM |?---**?*?|ASCII Adjust for Multiply in AX |
|
||
|
|AAS |?---??*?*|ASCII Adjust for Subtract in AX |
|
||
|
|ADC d,s |*---*****|Add with Carry |
|
||
|
|ADD d,s |*---*****|Add |
|
||
|
|AND d,s |*---**?**|Logical AND |
|
||
|
|CALL a |---------|Call |
|
||
|
|CBW |---------|Convert Byte to Word in AX |
|
||
|
|CLC |--------0|Clear Carry |
|
||
|
|CLD |-0-------|Clear Direction |
|
||
|
|CLI |--0------|Clear Interrupt |
|
||
|
|CMC |--------*|Complement Carry |
|
||
|
|CMP d,s |*---*****|Compare |
|
||
|
|CMPS |*---*****|Compare memory at SI and DI |
|
||
|
|CWD |---------|Convert Word to Double in AX,DX |
|
||
|
|DAA |?---*****|Decimal Adjust for Add in AX |
|
||
|
|DAS |?---*****|Decimal Adjust for Subtract in AX|
|
||
|
|DEC d |*---****-|Decrement |
|
||
|
|DIV s |?---?????|Divide (unsigned) in AX(,DX) |
|
||
|
|ESC s |---------|Escape (to external device) |
|
||
|
|HLT |---------|Halt |
|
||
|
|IDIV s |?---?????|Divide (signed) in AX(,DX) |
|
||
|
|IMUL s |*---????*|Multiply (signed) in AX(,DX) |
|
||
|
|IN d,p |---------|Input |
|
||
|
|INC d |*---****-|Increment |
|
||
|
|INT |--00-----|Interrupt |
|
||
|
|INTO |--**-----|Interrupt on Overflow |
|
||
|
|IRET |*********|Interrupt Return |
|
||
|
|JB/JNAE a |---------|Jump on Below/Not Above or Equal |
|
||
|
|JBE/JNA a |---------|Jump on Below or Equal/Not Above |
|
||
|
|JCXZ a |---------|Jump on CX Zero |
|
||
|
|JE/JZ a |---------|Jump on Equal/Zero |
|
||
|
|JL/JNGE a |---------|Jump on Less/Not Greater or Equal|
|
||
|
|JLE/JNG a |---------|Jump on Less or Equal/Not Greater|
|
||
|
|JMP a |---------|Unconditional Jump |
|
||
|
|JNB/JAE a |---------|Jump on Not Below/Above or Equal |
|
||
|
|JNBE/JA a |---------|Jump on Not Below or Equal/Above |
|
||
|
|JNE/JNZ a |---------|Jump on Not Equal/Not Zero |
|
||
|
|JNL/JGE a |---------|Jump on Not Less/Greater or Equal|
|
||
|
|JNLE/JG a |---------|Jump on Not Less or Equal/Greater|
|
||
|
|JNO a |---------|Jump on Not Overflow |
|
||
|
|JNP/JPO a |---------|Jump on Not Parity/Parity Odd |
|
||
|
|JNS a |---------|Jump on Not Sign |
|
||
|
|JO a |---------|Jump on Overflow |
|
||
|
|JP/JPE a |---------|Jump on Parity/Parity Even |
|
||
|
|JS a |---------|Jump on Sign |
|
||
|
|LAHF |---------|Load AH with 8080 Flags |
|
||
|
|LDS r,s |---------|Load pointer to DS |
|
||
|
|LEA r,s |---------|Load EA to register |
|
||
|
|LES r,s |---------|Load pointer to ES |
|
||
|
|LOCK |---------|Bus Lock prefix |
|
||
|
|LODS |---------|Load memory at SI into AX |
|
||
|
|LOOP a |---------|Loop CX times |
|
||
|
|LOOPNZ/LOOPNE a |---------|Loop while Not Zero/Not Equal |
|
||
|
|LOOPZ/LOOPE a |---------|Loop while Zero/Equal |
|
||
|
|MOV d,s |---------|Move |
|
||
|
|MOVS |---------|Move memory at SI to DI |
|
||
|
|MUL s |*---????*|Multiply (unsigned) in AX(,DX) |
|
||
|
|NEG d |*---*****|Negate |
|
||
|
|NOP |---------|No Operation (= XCHG AX,AX) |
|
||
|
|NOT d |---------|Logical NOT |
|
||
|
|OR d,s |*---**?**|Logical inclusive OR |
|
||
|
|OUT p,s |---------|Output |
|
||
|
|POP d |---------|Pop |
|
||
|
|POPF |*********|Pop Flags |
|
||
|
|PUSH s |---------|Push |
|
||
|
|PUSHF |---------|Push Flags |
|
||
|
|RCL d,c |*-------*|Rotate through Carry Left |
|
||
|
|RCR d,c |*-------*|Rotate through Carry Right |
|
||
|
|REP/REPNE/REPNZ |---------|Repeat/Repeat Not Equal/Not Zero |
|
||
|
|REPE/REPZ |---------|Repeat Equal/Zero |
|
||
|
|RET (s) |---------|Return from call |
|
||
|
|ROL d,c |-------- |Rotate Left |
|
||
|
|ROR d,c |*-------*|Rotate Right |
|
||
|
|SAHF |----*****|Store AH into 8080 Flags |
|
||
|
----------------------------------------------------------------
|
||
|
----------------------------------------------------------------
|
||
|
|Mnemonic |ODITSZAPC|Description |
|
||
|
|------------------+---------+---------------------------------|
|
||
|
|SAR d,c |*---**?**|Shift Arithmetic Right |
|
||
|
|SBB d,s |*---*****|Subtract with Borrow |
|
||
|
|SCAS |*---*****|Scan memory at DI compared to AX |
|
||
|
|SEG r |---------|Segment register |
|
||
|
|SHL/SAL d,c |*---**?**|Shift logical/Arithmetic Left |
|
||
|
|SHR d,c |*---**?**|Shift logical Right |
|
||
|
|STC |--------1|Set Carry |
|
||
|
|STD |-0-------|Set Direction |
|
||
|
|STI |--0------|Set Interrupt |
|
||
|
|STOS |---------|Store AX into memory at DI |
|
||
|
|SUB d,s |*---*****|Subtract |
|
||
|
|TEST d,s |*---**?**|AND function to flags |
|
||
|
|WAIT |---------|Wait |
|
||
|
|XCHG r(,d) |---------|Exchange |
|
||
|
|XLAT |---------|Translate byte to AL |
|
||
|
|XOR d,s |*---**?**|Logical Exclusive OR |
|
||
|
|------------------+---------+---------------------------------|
|
||
|
| |-*01? |Unaff/affected/reset/set/unknown |
|
||
|
| OF |O |Overflow Flag (Bit 11) |
|
||
|
| DF | D |Direction Flag (Bit 10) |
|
||
|
| IF | I |Interrupt enable Flag (Bit 9) |
|
||
|
| TF | T |Trap Flag (Bit 8) |
|
||
|
| SF | S |Sign Flag (Bit 7) |
|
||
|
| ZF | Z |Zero Flag (Bit 6) |
|
||
|
| AF | A |Auxilary carry Flag (Bit 4) |
|
||
|
| PF | P |Parity Flag (Bit 2) |
|
||
|
| CF | C|Carry Flag (Bit 0) |
|
||
|
|------------------+-------------------------------------------|
|
||
|
|ALIGN |Align to word boundary |
|
||
|
|ASSUME sr:sy(,...)|Assume segment register name(s) |
|
||
|
|ASSUME NOTHING |Remove all former assumptions |
|
||
|
|DB e(,...) |Define Byte(s) |
|
||
|
|DBS e |Define Byte Storage |
|
||
|
|DD e(,...) |Define Double Word(s) |
|
||
|
|DDS e |Define Double Word Storage |
|
||
|
|DW e(,...) |Define Word(s) |
|
||
|
|DWS e |Define Word Storage |
|
||
|
|EXT (sr:)sy(t) |External(s)(t=ABS/BYTE/DWORD/FAR/NEAR/WORD)|
|
||
|
|LABEL t |Label (t=BYTE/DWORD/FAR/NEAR/WORD)|
|
||
|
|PROC t |Procedure (t=FAR/NEAR, default NEAR)|
|
||
|
|------------------+-------------------------------------------|
|
||
|
| ABS |Absolute value of operand |
|
||
|
| BYTE |Byte type operation |
|
||
|
| DWORD |Double Word operation |
|
||
|
| FAR |IP and CS registers altered |
|
||
|
| HIGH |High-order 8 bits of 16-bit value |
|
||
|
| LENGTH |Number of basic units |
|
||
|
| LOW |Low-order 8 bit of 16-bit value |
|
||
|
| NEAR |Only IP register need be altered |
|
||
|
| OFFSET |Offset portion of an address |
|
||
|
| PTR |Create a variable or label |
|
||
|
| SEG |Segment of address |
|
||
|
| SHORT |One byte for a JMP operation |
|
||
|
| SIZE |Number of bytes defined by statement |
|
||
|
| THIS |Create a variable/label of specified type |
|
||
|
| TYPE |Number of bytes in the unit defined |
|
||
|
| WORD |Word operation |
|
||
|
|------------------+-------------------------------------------|
|
||
|
| AX BX CX DX |Accumulator/Base/Count/Data registers |
|
||
|
| AL BL CL DL |Low byte of general registers |
|
||
|
| AH BH CH DH |High byte of general registers |
|
||
|
| SP BP |Stack/Base Pointer registers |
|
||
|
| SI DI |Source/Destination Index registers |
|
||
|
| CS DS SS ES |Code/Data/Stack/Extra Segment registers |
|
||
|
| IP |Instruction Pointer register |
|
||
|
|------------------+-------------------------------------------|
|
||
|
| a |Address |
|
||
|
| c |Count |
|
||
|
| d |Destination |
|
||
|
| e |Expression or string |
|
||
|
| p |I/O port |
|
||
|
| r |Register |
|
||
|
| s |Source |
|
||
|
| sr |Segment register (CS,DS,SS,ES) |
|
||
|
| sy |Symbol |
|
||
|
| t |Type of symbol |
|
||
|
----------------------------------------------------------------
|