°°±°°‰; TEST86: 8086 DISPATCHED MNEMONICS TEST ASSEMBLY °°²°°‰ °°²±°‰ INCLUDE SEG °°²²°‰ ORG 0 °°²³°‰ IMPORT FOO °°²΄°‰ IMPORT SUB2 °°²΅°‰ °°³°°‰NEWSEG EQU X'1000' °°΄°°‰ °°΅°°‰ AAA ; 1 ASCII ADJUST FOR ADDITION °°Ά°°‰ AAD ; 2 ASCII ADJUST FOR DIVISION °°·°°‰ AAM ; 2 ASCII ADJUST FOR MULTIPLICATION °°Έ°°‰ AAS ; 1 ASCII ADJUST FOR SUBTRACTION °°Ή°°‰ °±°°°‰ ADC AX,BX ; 11 ADD WITH CARRY WORD °±±°°‰ ADCB AH,BL ; 11 BYTE °±²°°‰ ADCBI AL,1 ; 13 ADD WITH CARRY BYTE IMMEDIATE °±³°°‰ ADCI AX,2 ; 12 WORD °±΄°°‰ °±΅°°‰ ADD CX,DX ; 11 ADD WORD °±Ά°°‰ ADDB CL,DH ; 11 BYTE °±·°°‰ ADDBI AH,3 ; 13 ADD BYTE IMMEDIATE °±Έ°°‰ ADDI BX,4 ; 12 WORD °±Ή°°‰ °²°°°‰ AND AX,HERE ; 11 AND WORD °²±°°‰ ANDB AL,THERE ; 11 BYTE °²²°°‰ ANDBI BH,5 ; 13 AND BYTE IMMEDAITE °²³°°‰ ANDI CX,6 ; 14 WORD °²΄°°‰ °²΅°°‰ CALL HERE ; 15.1 CALL WITHIN SEGMENT °²Ά°°‰ CALL HERE,NEWSEG ; 15.2 INTERSEGMENT DIRECT °²·°°‰ CALLI HERE ; 16 CALL INDIRECT °²Έ°°‰ CALLL HERE[BX] ; 16 CALL INDIRECT LONG °²Ή°°‰ °³°°°‰ CBW ; 1 CONVERT BYTE TO WORD °³±°°‰ CLC ; 1 CLEAR CARRY FLAG °³²°°‰ CLD ; 1 CLEAR DIRECTION FLAG °³³°°‰ CLI ; 1 CLEAR INTERRUPT FLAG °³΄°°‰ CMC ; 1 COMPLEMENT CARRY FLAG °³΅°°‰ °³Ά°°‰ CMP BX,HERE[BX] ; 11 COMPARE WORD °³·°°‰ CMPB BH,THERE[BX] ; 11 BYTE °³Έ°°‰ CMPBI CL,7 ; 13 COMPARE BYTE IMMEDIATE °³Ή°°‰ CMPC ; 1 COMPARE BYTE STRINGS °΄°°°‰ CMPI DX,8 ; 12 COMPARE IMMEDAITE °΄±°°‰ CMPW ; 1 COMPARE WORD STRINGS °΄²°°‰ °΄³°°‰ CWD ; 1 CONVERT WORD TO DOUBLE WORD °΄΄°°‰ DAA ; 1 DECIMAL ADJUST FOR ADDITION °΄΅°°‰ DAS ; 1 DECIMAL ADJUST FOR SUBTRACTION °΄Ά°°‰ °΄·°°‰ DEC BX ; 7 DECREMENT WORD °΄Έ°°‰ DECB AL ; 3 DECREMENT BYTE °΄Ή°°‰ DIV AX ; 3 UNSIGNED DIVIDE WORD °΅°°°‰ DIVB AH ; 3 UNSIGNED DIVIDE BYTE °΅±°°‰ °΅²°°‰ ESC 38,THERE ; 22 ESCAPE OPCODE TO PERIPHERAL °΅³°°‰ HLT ; 1 HALT °΅΄°°‰ °΅΅°°‰ IDIV BX ; 3 SIGNED DIVIDE WORD °΅Ά°°‰ IDIVB BL ; 3 SIGNED DIVIDE BYTE °΅·°°‰ °΅Έ°°‰ IMUL CX ; 3 SIGNED MULTIPLY WORD °΅Ή°°‰ IMULB CH ; 3 SIGNED MULTIPLY BYTE °Ά°°°‰ °Ά±°°‰ IN ; 5 INPUT WORD °Ά²°°‰ INB 1 ; 5 INPUT BYTE °Ά³°°‰ INC [BX] ; 7 INCREMENT WORD °Ά΄°°‰ INCB DL ; 3 INCREMENT BYTE °Ά΅°°‰ INT 2 ; 5 INTERRUPT °ΆΆ°°‰ INTO ; 1 INTERRUPT ON OVERFLOW °Ά·°°‰ °ΆΈ°°‰ IRET ; 1 INTERRUPT RETURN °ΆΉ°°‰ °·°°°‰ JA THERE ; 8 JUMP ON ABOVE °·±°°‰ JAE THERE+1 ; 8 JUMP ON ABOVE OR EQUAL °·²°°‰ JB THERE+2 ; 8 JUMP ON BELOW °·³°°‰ JBE THERE+3 ; 8 JUMP ON BELOW OR EQUAL °·΄°°‰ JCXZ THERE+4 ; 8 JUMP ON CX COUNT ZERO °·΅°°‰ JE THERE+5 ; 8 JUMP ON EQUAL °·Ά°°‰ JG THERE ; 8 JUMP ON GREATER °··°°‰ JGE THERE ; 8 JUMP ON GREATER OR EQUAL °·Έ°°‰ JL THERE ; 8 JUMP ON LESS THAN °·Ή°°‰ JLE THERE ; 8 JUMP ON LESS THAN OR EQUAL °Έ°°°‰ °Έ±°°‰ JMP HERE ; 15.1 JUMP WITHIN SEGMENT °Έ²°°‰ JMP HERE,NEWSEG ; 15.2 INTERSEGMENT DIRECT °Έ³°°‰ JMPI HERE[BP+SI] ; 16 JUMP INDIRECT °Έ΄°°‰ JMPL [BP][DI] ; 16 JUMP INDIRECT LONG °Έ΅°°‰ JMPS THERE ; 8 JUMP SHORT REACH °ΈΆ°°‰ °Έ·°°‰ JNA THERE ; 8 JUMP ON NOT ABOVE °ΈΈ°°‰ JNAE THERE ; 8 JUMP ON NOT ABOVE OR EQUAL °ΈΉ°°‰ JNB THERE ; 8 JUMP ON NOT BELOW °Ή°°°‰ JNBE THERE ; 8 JUMP ON NOT BELOW OR EQUAL °Ή±°°‰ JNE THERE ; 8 JUMP ON NOT EQUAL °Ή²°°‰ JNG THERE ; 8 JUMP ON NOT GREATER °Ή³°°‰ JNGE THERE ; 8 JUMP ON NOT GREATER OR EQUAL °Ή΄°°‰ JNL THERE ; 8 JUMP ON NOT LESS THAN °Ή΅°°‰ JNLE THERE ; 8 JUMP ON NOT LESS THAN OR EQUAL °ΉΆ°°‰ JNO THERE ; 8 JUMP ON NOT OVERFLOW °Ή·°°‰ JNP THERE ; 8 JUMP ON NOT PARITY EVEN °ΉΈ°°‰ JNS THERE ; 8 JUMP ON NOT SIGN °ΉΉ°°‰ JNZ THERE ; 8 JUMP ON NOT ZERO ±°°°°‰ JO THERE ; 8 JUMP ON OVERFLOW ±°±°°‰ JP THERE ; 8 JUMP ON PARITY EVEN ±°²°°‰ JPE THERE ; 8 JUMP ON PARITY EVEN ±°³°°‰ JPO THERE ; 8 JUMP ON PARITY ODD ±°΄°°‰ JS THERE ; 8 JUMP ON SIGN ±°΅°°‰ JZ THERE ; 8 JUMP ON ZERO ±°Ά°°‰ ±°·°°‰ LAHF ; 1 LOAD AH FROM FLAGS ±°Έ°°‰ LDS BX,HERE ; 4 LOAD POINTER TO DATA SEG REG ±°Ή°°‰ LEA CX,[BX] ; 4 LOAD EFFECTIVE ADDRESS TO REG ±±°°°‰ LES DX,THERE ; 4 LOAD POINTER TO EXTRA SEG ±±±°°‰ ±±²°°‰THERE: DS 6 ±±³°°‰ ±±΄°°‰ LOCK ; 1 BUS LOCK PREFIX ±±΅°°‰ LODC ; 1 LOAD BYTE STRING ±±Ά°°‰ LODW ; 1 LOAD WORD STRING ±±·°°‰ ±±Έ°°‰ LOOP THERE ; 8 REPEAT LOOP CX TIMES ±±Ή°°‰ LOOPE THERE ; 8 WHILE EQUAL OR ZERO ±²°°°‰ LOOPNE THERE ; 8 WHILE NOT EQUAL OR NON-ZERO ±²±°°‰ LOOPNZ THERE ; 8 WHILE NOT EQUAL OFR NON-ZERO ±²²°°‰ LOOPZ THERE ; 8 WHILE EQUAL OR ZERO ±²³°°‰ ±²΄°°‰ MOV AX,CS ; 21 MOVE WORD ±²΅°°‰ MOVB THERE[BX],CL ; 20 MOVE BYTE ±²Ά°°‰ MOVBI BH,3 ; 19 MOVE BYTE IMMEDIATE ±²·°°‰ MOVC ; 1 MOVE BYTE STRING ±²Έ°°‰ MOVI YONDER,YONDER ; 18 MOVE WORD IMMEDIATE ±²Ή°°‰ MOVW ; 1 MOVE WORD STRING ±³°°°‰ ±³±°°‰ MUL HERE ; 3 UNSIGNED MULTIPLY WORD ±³²°°‰ MULB HERE+1 ; 3 UNSIGNED MULTIPLY BYTE ±³³°°‰ ±³΄°°‰ NEG HERE+2 ; 3 NEGATE WORD ±³΅°°‰ NEGB HERE+3 ; 3 NEGATE BYTE ±³Ά°°‰ NOP ; 1 NO OPERATION ±³·°°‰ NOT THERE ; 3 COMPLEMENT WORD ±³Έ°°‰ NOTB THERE+1 ; 3 CONPLEMENT BYTE ±³Ή°°‰ ±΄°°°‰ OR CX,HERE[SI] ; 11 OR WORD ±΄±°°‰ ORB CH,THERE[SI] ; 11 BYTE ±΄²°°‰ ORBI DH,9 ; 13 OR BYTE IMMEDIATE ±΄³°°‰ ORI SP,10 ; 14 OR WORD IMMEDIATE ±΄΄°°‰ ±΄΅°°‰ OUT 3 ; 5 OUTPUT WORD ±΄Ά°°‰ OUTB 4 ; 5 OUTPUT BYTE ±΄·°°‰ ±΄Έ°°‰ POP CS ; 6 POP FROM STACK ±΄Ή°°‰ POPF ; 1 POP FLAGS FROM STACK ±΅°°°‰ PUSH HERE[DI] ; 6 PUSH ONTO STACK ±΅±°°‰ PUSHF ; 1 PUSH FLAGS ONTO STACK ±΅²°°‰ ±΅³°°‰ RCL AX ; 10 ROTATE THROUGH CARRY LEFT WORD ±΅΄°°‰ RCLB AH ; 10 BYTE ±΅΅°°‰ RCR BX ; 10 ROTATE THROUGH CARRY RIGHT WORD ±΅Ά°°‰ RCRB CH ; 10 BYTE ±΅·°°‰ ±΅Έ°°‰ REP ; 1 REPEAT STRING OPERATION ±΅Ή°°‰ REPE ; 1 ±Ά°°°‰ REPNE ; 1 ±Ά±°°‰ REPNZ ; 1 ±Ά²°°‰ REPZ ; 1 ±Ά³°°‰ ±Ά΄°°‰ RET ; 17 RETURN ±Ά΅°°‰ RET 5 ; 17 RETURN AND ADJUST STACK ±ΆΆ°°‰ ±Ά·°°‰ RETS ; 17 RETURN INTER SEGMENT ±ΆΈ°°‰ RETS -2 ; 17 RETURN INTER SEGMENT ADJ STKACK ±ΆΉ°°‰ ±·°°°‰ ROL BX,CL ; 10 ROTATE LEFT WORD ±·±°°‰ ROLB BL,CL ; 10 BYTE ±·²°°‰ ROR CX,CL ; 10 ROTATE RIGHT WORD ±·³°°‰ RORB CH,CL ; 10 BYTE ±·΄°°‰ ±·΅°°‰ SAHF ; 1 STORE AH INTO FLAGS ±·Ά°°‰ ±··°°‰ SAL HERE ; 10 SHIFT LEFT WORD ±·Έ°°‰ SALB THERE ; 10 BYTE ±·Ή°°‰ SAR YONDER ; 10 SHIFT ARITHMETIC RIGHT WORD ±Έ°°°‰ SARB HERE,CL ; 10 BYTE ±Έ±°°‰ ±Έ²°°‰ SBB DX,HERE[DI] ; 11 SUBTRACT WITH BORROW WORD ±Έ³°°‰ SBBB DL,THERE[DI] ; 11 BYTE ±Έ΄°°‰ SBBBI CH,33 ; 13 SUBTRACT BYTE WITH BORROW ±Έ΅°°‰ SBBI BP,33 ; 12 WORD ±ΈΆ°°‰ ±Έ·°°‰ SCAC ; 1 SCAN BYTE STRING ±ΈΈ°°‰ SCAW ; 1 SCAN WORD STRING ±ΈΉ°°‰ ±Ή°°°‰ SHL DX ; 10 SHIFT LEFT WORD ±Ή±°°‰ SHLB DL ; 10 BYTE ±Ή²°°‰ SHR BP ; 10 SHIFT LOGICAL RIGHT WORD ±Ή³°°‰ SHRB DH ; 10 BYTE ±Ή΄°°‰ ±Ή΅°°‰ STC ; 1 SET CARRY FLAG ±ΉΆ°°‰ STD ; 1 SET DIRECTION FLAG ±Ή·°°‰ STI ; 1 SET INTERRUPT FLAG ±ΉΈ°°‰ STOC ; 1 STORE BYTE STRING ±ΉΉ°°‰ STOW ; 1 STORE WORD STRING ²°°°°‰ ²°±°°‰ SUB SP,HERE[BP][SI] ; 11 SUBTRACT WORD ²°²°°‰ SUBB AH,THERE[BP+SI] ; 11 BYTE ²°³°°‰ SUBBI BL,33 ; 13 SUBTRACT BYTE IMMEDIATE ²°΄°°‰ SUBI SI,33 ; 12 WORD ²°΅°°‰ ²°Ά°°‰ TEST BP,HERE[BX][DI] ; 11 TEST AND SET FLAGS WORD ²°·°°‰ TESTB BH,THERE[BX+DI] ; 11 BYTE ²°Έ°°‰ TESTBI DL,33 ; 13 TEST BYTE IMMEDIATE ²°Ή°°‰ TESTI DI,33 ; 14 WORD ²±°°°‰ ²±±°°‰ WAIT ; 1 WAIT STATE ²±²°°‰ XCHG AX,DX ; 9 EXCHANGE CONTENTS WORD ²±³°°‰ XCHGB HERE[BX][SI],CH ; 11 EXCHANGE CONTENTS BYTE ²±΄°°‰ XLAT ; 1 TRANSLATE ²±΅°°‰ ²±Ά°°‰ XOR HERE[BX][SI],SI ; 11 EXCLUSIVE OR WORD ²±·°°‰ XORB THERE[BX+SI],DH ; 11 BYTE ²±Έ°°‰ XORBI AL,33 ; 13 EXCLUSIVE OR BYTE IMMEDIATE ²±Ή°°‰ XORI AX,HERE ; 14 WORD ²²°°°‰ ²²±°°‰ $CS ; 1 CODE SEGMENT OVERRIDE ²²²°°‰ $DS ; 1 DATA SEGMENT OVERRIDE ²²³°°‰ $ES ; 1 EXTRA SEGMENT OVERRIDE ²²΄°°‰ $SS ; 1 STACK SEGMENT OVERRIDE ²²΅°°‰ ²²Ά°°‰HERE: DS 4 ²²·°°‰ ²²Έ°°‰;--------------- ²²Ή°°‰ ASEG ²³°°°‰ ORG X'5000' ²³±°°‰YONDER: ²³²°°‰ ²³³°°‰ END