552 lines
62 KiB
Plaintext
Executable File
552 lines
62 KiB
Plaintext
Executable File
|
||
+-----------+------------+-------------+-------------+-------------+-------------+-------------------+
|
||
| Component | Technology | Amnt of ROM | Type of ROM | Amnt of RAM | No. of SFRs | Serial I/O Type |
|
||
|-----------|------------|-------------|-------------|-------------|-------------|-------------------|
|
||
| 8031 | HMOS | 0 | -- | 128 bytes | 21 | Start/Stop Async |
|
||
| 8051 | HMOS | 4Kbytes | Masked | 128 bytes | 21 | Start/Stop Async |
|
||
| 8751 | HMOS | 4Kbytes | EPROM | 128 bytes | 21 | Start/Stop Async |
|
||
| 8053 | HMOS | 8Kbytes | Masked | 128 bytes | 21 | Start/Stop Async |
|
||
| 9761 | HMOS | 8Kbytes | EPROM | 128 bytes | 21 | Start/Stop Async |
|
||
| 8751 | HMOS | 8Kbytes | EPROM | 128 bytes | 21 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 80C31 | CMOS | 0 | -- | 128 bytes | 21 | Start/Stop Async |
|
||
| 80C51 | CMOS | 4Kbytes | Masked | 128 bytes | 21 | Start/Stop Async |
|
||
| 87C51 | CMOS | 4Kbytes | EPROM | 128 bytes | 21 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 8032 | HMOS | 0 | -- | 256 bytes | 26 | Start/Stop Async |
|
||
| 8052 | HMOS | 8Kbytes | Masked | 256 bytes | 26 | Start/Stop Async |
|
||
| 8752 | HMOS | 8Kbytes | EPROM | 256 bytes | 26 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 80C32 | CMOS | 0 | -- | 256 bytes | 26 | Start/Stop Async |
|
||
| 80C52 | CMOS | 8Kbytes | Masked | 256 bytes | 26 | Start/Stop Async |
|
||
| 87C52 | CMOS | 8Kbytes | EPROM | 256 bytes | 26 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 8044 | HMOS | 4Kbytes | Masked | 192 bytes | 34 | HDLC/SDLC |
|
||
| 8344 | HMOS | 0 | -- | 192 bytes | 34 | HDLC/SDLC |
|
||
| 8744 | HMOS | 4Kbytes | EPROM | 192 bytes | 34 | HDLC/SDLC |
|
||
| | | | | | | |
|
||
| 80535 | HMOS | 0 | -- | 256 bytes | 41 | Start/Stop Async |
|
||
| 80515 | HMOS | 8Kbytes | Masked | 256 bytes | 41 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 80C535 | CHMOS | 0 | -- | 256 bytes | 41 | Start/Stop Async |
|
||
| 80C515 | CHMOS | 8Kbytes | Masked | 256 bytes | 41 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 80532 | HMOS | 0 | -- | 128 bytes | 28 | Start/Stop Async |
|
||
| 80512 | HMOS | 4Kbytes | Masked | 128 bytes | 28 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 80C152 | CHMOS | 0 | -- | 256 bytes | 56 | CSMA/CD |
|
||
| 83C152 | CHMOS | 8Kbytes | Masked | 256 bytes | 56 | CSMA/CD |
|
||
| | | | | | | |
|
||
| 80C154 | CMOS | 0 | -- | 256 bytes | 27 | Start/Stop Async |
|
||
| 83C154 | CMOS | 16Kbytes | Masked | 256 bytes | 27 | Start/Stop Async |
|
||
| 85C154 | CMOS | 16Kbytes | EPROM | 256 bytes | 27 | Start/Stop Async |
|
||
| | | | | | | |
|
||
+-----------+------------+-------------+-------------+-------------+-------------+-------------------+
|
||
|
||
+-----------+------------+-------------+-------------+-------------+-------------+-------------------+
|
||
| Component | Technology | Amnt of ROM | Type of ROM | Amnt of RAM | No. of SFRs | Serial I/O Type |
|
||
|-----------|------------|-------------|-------------|-------------|-------------|-------------------|
|
||
| 80C51FA | CHMOS | 0 | -- | 256 bytes | 47 | Start/Stop Async |
|
||
| 83C51FA | CHMOS | 8Kbytes | Masked | 256 bytes | 47 | Start/Stop Async |
|
||
| 87C51FA | CHMOS | 8Kbytes | EPROM | 256 bytes | 47 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 83C51FB | CHMOS | 16Kbytes | Masked | 256 bytes | 47 | Start/Stop Async |
|
||
| 87C51FB | CHMOS | 16Kbytes | EPROM | 256 bytes | 47 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 83C51FB | CHMOS | 32Kbytes | Masked | 256 bytes | 47 | Start/Stop Async |
|
||
| 87C51FB | CHMOS | 32Kbytes | EPROM | 256 bytes | 47 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 80C537 | CHMOS | 0 | -- | 256 bytes | 41 | Start/Stop Async |
|
||
| 80C517 | CHMOS | 8Kbytes | Masked | 256 bytes | 82 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 80C451 | CMOS | 0 | -- | 128 bytes | 24 | Parallel I/F |
|
||
| 83C451 | CMOS | 4Kbytes | Masked | 128 bytes | 24 | Parallel I/F |
|
||
| 87C451 | CMOS | 4Kbytes | EPROM | 128 bytes | 24 | Parallel I/F |
|
||
| | | | | | | |
|
||
| 80C452 | CHMOS | 0 | -- | 256 bytes | 55 | U.P.I. |
|
||
| 83C452 | CHMOS | 8Kbytes | -- | 256 bytes | 55 | U.P.I. |
|
||
| 87C452 | CHMOS | 8Kbytes | -- | 256 bytes | 55 | U.P.I. |
|
||
| | | | | | | |
|
||
| 80C552 | CMOS | 0 | -- | 256 bytes | 54 | Start/Stop Async |
|
||
| 83C552 | CMOS | 8Kbytes | Masked | 256 bytes | 54 | Start/Stop Async |
|
||
| 87C552 | CMOS | 8Kbytes | EPROM | 256 bytes | 54 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 80C652 | CMOS | 0 | -- | 256 bytes | 24 | Start/Stop Async |
|
||
| 83C652 | CMOS | 8Kbytes | Masked | 256 bytes | 24 | Start/Stop Async |
|
||
| 87C652 | CMOS | 8Kbytes | EPROM | 256 bytes | 24 | Start/Stop Async |
|
||
| 83C654 | CMOS | 16Kbytes | Masked | 256 bytes | 24 | Start/Stop Async |
|
||
| 87C654 | CMOS | 16Kbytes | EPROM | 256 bytes | 24 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 83C752 | CMOS | 2Kbytes | Masked | 64 bytes | 25 | I2C |
|
||
| 87C752 | CMOS | 2Kbytes | EPROM | 64 bytes | 25 | I2C |
|
||
| | | | | | | |
|
||
| 83C751 | CMOS | 2Kbytes | Masked | 64 bytes | 20 | I2C |
|
||
| 87C751 | CMOS | 2Kbytes | EPROM | 64 bytes | 20 | I2C |
|
||
| | | | | | | |
|
||
| 80C521 | CMOS | 0 | -- | 256 bytes | 26 | Start/Stop Async |
|
||
| 80C321 | CMOS | 8Kbytes | Masked | 256 bytes | 26 | Start/Stop Async |
|
||
| 87C521 | CMOS | 8Kbytes | EPROM | 256 bytes | 26 | Start/Stop Async |
|
||
| 80C541 | CMOS | 16Kbytes | Masked | 256 bytes | 26 | Start/Stop Async |
|
||
| 87C541 | CMOS | 16Kbytes | EPROM | 256 bytes | 26 | Start/Stop Async |
|
||
| | | | | | | |
|
||
| 80C851 | CMOS | 0 | -- | 128 bytes | 21 | Start/Stop Async |
|
||
| 83C851 | CMOS | 4Kbytes | Masked | 128 bytes | 21 | Start/Stop Async |
|
||
| | | | | | | |
|
||
+-----------+------------+-------------+-------------+-------------+-------------+-------------------+
|
||
|
||
$DATE(date) Places date in page header $EJECT Places a form feed in listing
|
||
$INCLUDE(file) Inserts file in source program $LIST Allows listing to be output
|
||
$NOLIST Stops outputting the listing $MOD51 Uses 8051 predefined symbols
|
||
$MOD52 Uses 8052 predefined symbols $MOD44 Uses 8044 predefined symbols
|
||
$NOMOD No predefined symbols used $OBJECT(file) Places object output in file
|
||
$NOOBJECT No object file is generated $PAGING Break output listing into pages
|
||
$NOPAGING Print listing w/o page breaks $PAGELENGTH(n) No. of lines on a listing page
|
||
$PAGEWIDTH(n) No. of columns on a listing page $PRINT(file) Places listing output in file
|
||
$NOPRINT Listing will not be output $SYMBOLS Append symbol table to listing
|
||
$NOSYMBOLS Symbol table will not be output $TITLE(string) Places string in page header
|
||
|
||
EQU Define symbol DATA Define internal memory symbol
|
||
IDATA Define indirectly addressed internal XDATA Define external memory symbol
|
||
memory symbol BIT Define internal bit memory symbol
|
||
CODE Define program memory symbol DS Reserve bytes of data memory
|
||
DBIT Reserve bits of bit memory DB Store byte values in program memory
|
||
DW Store word values in program memory ORG Set segment location counter
|
||
END End of assembly language source file CSEG Select program memory space
|
||
DSEG Select internal memory data space XSEG Select external memory data space
|
||
ISEG Select indirectly addressed internal BSEG Select bit addressable memory space
|
||
memory space USING Select register bank
|
||
IF Begin conditional assembly block ELSE Alternative conditional assembly block
|
||
ENDIF End conditional assembly block
|
||
|
||
ACALL Absolute call ADD Add ADDC Add with carry
|
||
AJMP Absolute jump ANL Logical and CJNE Compare & jump if not equal
|
||
CLR Clear CPL Complement DA Decimal adjust
|
||
DEC Decrement DIV Divide DJNZ Decrement & jump if not zero
|
||
INC Increment JB Jump if bit set JBC Jump & clear bit if bit set
|
||
JC Jump if carry set JMP Jump JNB Jump if bit not set
|
||
JNC Jump if carry not set JNZ Jump if accum. not zero JZ Jump if accumulator zero
|
||
LCALL Long call LJMP Long jump MOV Move
|
||
MOVC Move code MOVX Move external MUL Multiply
|
||
NOP No operation ORL Inclusive or POP Pop stack
|
||
PUSH Push stack RET Return RETI Return from interrupt
|
||
RL Rotate left RLC Rotate left thru carry RR Rotate right
|
||
RRC Rotate right thru carry SETB Set bit SJMP Short jump
|
||
SUBB Subtract with borrow SWAP Swap nibbles XCH Exchange bytes
|
||
XCHD Exchange digits XRL Exclusive or CALL Generic call
|
||
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | | DEST | SOURCE | ASSEMBLY |HEX |B |C | PSW |
|
||
| MNEMONIC | OPERATION | ADDR | ADDR | LANGUAGE |OP- |Y |Y |C A O |
|
||
| | | MODE | MODE | FORM |CODE |T |C |F C V |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| ACALL | | | | | | | | |
|
||
| 2K in Page (11 bits) | PC + 2 -> STACK | Prog Direct | | ACALL Paddr | see | 2 | 2 | - - - |
|
||
| Absolute Call | SP + 2 -> SP | | | | note | | | |
|
||
| | Paddr<10:0> -> PC<10:0> | | | | 1 | | | |
|
||
| | PC<15:11> -> PC<15:11> | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| ADD | | | | | | | | |
|
||
| Add Operand to | A + SOper -> A | Accumulator | Immediate | ADD A,#data | 24 | 2 | 1 | * * * |
|
||
| Accumulator | | " | Direct | ADD A,Daddr | 25 | 2 | 1 | |
|
||
| | | " | Indirect | ADD A,@Ri | 26,27 | 1 | 1 | |
|
||
| | | " | Register | ADD A,Rn | 28-2F | 1 | 1 | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| ADDC | | | | | | | | |
|
||
| Add Operand with | A + SOper + C -> A | Accumulator | Immediate | ADDC A,#data | 34 | 2 | 1 | * * * |
|
||
| Carry to Accumulator | | " | Direct | ADDC A,Daddr | 35 | 2 | 1 | |
|
||
| | | " | Indirect | ADDC A,@Ri | 36,37 | 1 | 1 | |
|
||
| | | " | Register | ADDC A,Rn | 38-3F | 1 | 1 | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| AJMP | | | | | see | | | |
|
||
| 2K in Page (11 bits) | Paddr<10:0> -> PC<10:0> | Prog Direct | | AJMP Paddr | note | 2 | 2 | - - - |
|
||
| Absolute Jump | PC<15:11> -> PC<15:11> | | | | 2 | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| ANL | | | | | | | | |
|
||
| Logical AND of Source | SOper ^ DOper -> DOper | Direct | Accumulator | ANL Daddr,A | 52 | 2 | 1 | - - - |
|
||
| Operand with | | " | Immediate | ANL Daddr,#data | 53 | 3 | 2 | |
|
||
| Destination Operand | | Accumulator | Immediate | ANL A,#data | 54 | 2 | 1 | |
|
||
| | | " | Direct | ANL A,Daddr | 55 | 2 | 1 | |
|
||
| | | " | Indirect | ANL A,@Ri | 56,57 | 1 | 1 | |
|
||
| | | " | Register | ANL A,Rn | 58-5F | 1 | 1 | |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| Logical AND of Source | SOper ^ CF -> CF | Carry Flag | Bit Direct | ANL C,Baddr | 82 | 2 | 2 | * - - |
|
||
| Operand with | | | | | | | | |
|
||
| Carry Flag (Continued)| | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | | DEST | SOURCE | ASSEMBLY |HEX |B |C | PSW |
|
||
| MNEMONIC | OPERATION | ADDR | ADDR | LANGUAGE |OP- |Y |Y |C A O |
|
||
| | | MODE | MODE | FORM |CODE |T |C |F C V |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| ANL (Continued) | | | | | | | | |
|
||
| Logical AND of Source | ~SOper ^ CF -> CF | Carry Flag | Bit Direct | ANL C,/Baddr | B0 | 2 | 2 | * - - |
|
||
| Operand Complemented | | | | | | | | |
|
||
| with Carry Flag | | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| CJNE | | | | | | | | |
|
||
| Compare Operands and | Jump Relative to PC if | Accumulator | Immediate | CJNE A,#data,Roff | B4 | 3 | 2 | * - - |
|
||
| Jump Relative if not | DOper <> SOper | " | Direct | CJNE A,Daddr,Roff | B5 | 3 | 2 | see |
|
||
| Equal | | Indirect | Immediate | CJNE @Ri,#data,Roff | B6,B7 | 3 | 2 | note |
|
||
| | | Register | " | CJNE Rn,#data,Roff | B8-BF | 3 | 2 | 3 |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| CLR | | | | | | | | |
|
||
| Clear Accumulator | 0 -> A | Accumulator | | CLR A | E4 | 1 | 1 | - - - |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| Clear Carry Flag | 0 -> CF | Carry Flag | | CLR C | C3 | 1 | 1 | 0 - - |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| Clear Bit Operand | 0 -> DOper | Bit Direct | | CLR Baddr | C2 | 2 | 1 | - - - |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| CPL | | | | | | | | |
|
||
| Complement Accumulator| ~A -> A | Accumulator | | CPL A | F4 | 1 | 1 | - - - |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| Complement Carry Flag | ~CF -> CF | Carry Flag | | CPL C | B3 | 1 | 1 | * - - |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| Complement Bit Operand| ~DOper -> DOper | Bit Direct | | CPL Baddr | B2 | 2 | 1 | - - - |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| DA | | | | | | | | |
|
||
| Decimal Adjust | If (A<3:0> > 9) v AC | Accumulator | | DA A | D4 | 1 | 1 | * - - |
|
||
| Accumulator for | then A<3:0>+6 -> A<3:0>| | | | | | | see |
|
||
| Addition | If (A<7:4> > 9) v CF | | | | | | | note |
|
||
| | then A<7:4>+6 -> A<7:4>| | | | | | | 4 |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | | DEST | SOURCE | ASSEMBLY |HEX |B |C | PSW |
|
||
| MNEMONIC | OPERATION | ADDR | ADDR | LANGUAGE |OP- |Y |Y |C A O |
|
||
| | | MODE | MODE | FORM |CODE |T |C |F C V |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| DEC | | | | | | | | |
|
||
| Decrement Operand | DOper - 1 -> DOper | Accumulator | | DEC A | 14 | 1 | 1 | - - - |
|
||
| | | Direct | | DEC Daddr | 15 | 2 | 1 | |
|
||
| | | Indirect | | DEC @Ri | 16,17 | 1 | 1 | |
|
||
| | | Register | | DEC Rn | 18-1F | 1 | 1 | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| DIV | | | | | | | | |
|
||
| Divide Accumulator by | A / B -> A | AB | | DIV AB | 84 | 1 | 4 | 0 - * |
|
||
| B Register | Remainder -> B | | | | | | | see |
|
||
| | | | | | | | | note 5|
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| DJNZ | | | | | | | | |
|
||
| Decrement Operand and | DOper - 1 -> DOper | Direct | | DJNZ Daddr,Roff | D5 | 3 | 2 | - - - |
|
||
| Jump Relative if Not | If DOper <> 0 then Jump | Register | | DJNZ Rn,Roff | D8-DF | 2 | 2 | |
|
||
| Zero | Relative to PC | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| INC | | | | | | | | |
|
||
| Increment Operand | DOper + 1 -> DOper | Accumulator | | INC A | 04 | 1 | 1 | - - - |
|
||
| | | Direct | | INC Daddr | 05 | 2 | 1 | |
|
||
| | | Indirect | | INC @Ri | 06,07 | 1 | 1 | |
|
||
| | | Register | | INC Rn | 08-0F | 1 | 1 | |
|
||
| | | Data Pointer| | INC DPTR | A3 | 1 | 2 | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| JB | | | | | | | | |
|
||
| Jump Relative if Bit | If DOper = 1 then Jump | Bit Direct | | JB Baddr,Roff | 20 | 3 | 2 | - - - |
|
||
| Operand is Set | Relative to PC | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| JBC | | | | | | | | |
|
||
| Jump Relative if Bit | If DOper = 1 then | Bit Direct | | JBC Baddr,Roff | 10 | 3 | 2 | * * * |
|
||
| Operand is Set and | 0 -> DOper and Jump | | | | | | | see |
|
||
| Clear Bit Operand | Relative to PC | | | | | | | note 6|
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | | DEST | SOURCE | ASSEMBLY |HEX |B |C | PSW |
|
||
| MNEMONIC | OPERATION | ADDR | ADDR | LANGUAGE |OP- |Y |Y |C A O |
|
||
| | | MODE | MODE | FORM |CODE |T |C |F C V |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| JC | | | | | | | | |
|
||
| Jump Relative if | If CF = 1 then Jump | Carry Flag | | JC Roff | 40 | 2 | 2 | - - - |
|
||
| Carry Flag is Set | Relative to PC | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| JMP | | | | | | | | |
|
||
| Jump Indirect | DPTR<15:0> + A<7:0> | Prog Indir | | JMP @A+DPTR | 73 | 1 | 2 | - - - |
|
||
| | -> PC<15:0> | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| JNB | | | | | | | | |
|
||
| Jump Relative if Bit | If DOper = 0 then Jump | Bit Direct | | JNB Baddr,Roff | 30 | 3 | 2 | - - - |
|
||
| Operand is Clear | Relative to PC | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| JNC | | | | | | | | |
|
||
| Jump Relative if | If CF = 0 then Jump | Carry Flag | | JNC Roff | 50 | 2 | 2 | - - - |
|
||
| Carry Flag is Clear | Relative to PC | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| JNZ | | | | | | | | |
|
||
| Jump Relative if the | If A<7:0> <> 0 then | Accumulator | | JNZ Roff | 70 | 2 | 2 | - - - |
|
||
| Accumulator is Not | Jump Relative to PC | | | | | | | |
|
||
| Zero | | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| JZ | | | | | | | | |
|
||
| Jump Relative if the | If A<7:0> = 0 then | Accumulator | | JZ Roff | 60 | 2 | 2 | - - - |
|
||
| Accumulator is Zero | Jump Relative to PC | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| LCALL | | | | | | | | |
|
||
| Long (16 bits) Call | PC + 3 -> STACK | Prog Direct | | LCALL Paddr | 12 | 3 | 2 | - - - |
|
||
| | SP + 2 -> SP | | | | | | | |
|
||
| | Paddr<15:0> -> PC<15:0> | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| LJMP | | | | | | | | |
|
||
| Long (16 bits) | Paddr<15:0> -> PC<15:0> | Prog Direct | | LJMP Paddr | 02 | 3 | 2 | - - - |
|
||
| Absolute Jump | | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | | DEST | SOURCE | ASSEMBLY |HEX |B |C | PSW |
|
||
| MNEMONIC | OPERATION | ADDR | ADDR | LANGUAGE |OP- |Y |Y |C A O |
|
||
| | | MODE | MODE | FORM |CODE |T |C |F C V |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| MOV | | | | | | | | |
|
||
| Move Source Operand | SOper -> DOper | Accumulator | Immediate | MOV A,#data | 74 | 2 | 1 | - - - |
|
||
| to Destination | | " | Direct | MOV A,Daddr | E5 | 2 | 1 | |
|
||
| Operand | | " | Indirect | MOV A,@Ri | E6,E7 | 1 | 1 | |
|
||
| | | " | Register | MOV A,Rn | E8-EF | 1 | 1 | |
|
||
| | | Direct | Accumulator | MOV Daddr,A | F5 | 2 | 1 | |
|
||
| | | " | Immediate | MOV Daddr,#data | 75 | 3 | 2 | |
|
||
| | | " | Direct | MOV Daddr,Daddr | 85 | 3 | 2 | |
|
||
| | | " | Indirect | MOV Daddr,@Ri | 86,87 | 2 | 2 | |
|
||
| | | " | Register | MOV Daddr,Rn | 88-8F | 2 | 2 | |
|
||
| | | Indirect | Accumulator | MOV @Ri,A | F6,F7 | 1 | 1 | |
|
||
| | SOper -> DOper | " | Immediate | MOV @Ri,#data | 76,77 | 2 | 1 | |
|
||
| | | " | Direct | MOV @Ri,Daddr | A6,A7 | 2 | 2 | |
|
||
| | | Register | Accumulator | MOV Rn,A | F8-FF | 1 | 1 | |
|
||
| | | " | Immediate | MOV Rn,#data | 78-7F | 2 | 1 | |
|
||
| | | " | Direct | MOV Rn,Daddr | A8-AF | 2 | 2 | |
|
||
| | | Data Pointer| Immediate | MOV DPTR,#data16 | 90 | 3 | 2 | |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| Move Carry Flag to Bit| CF -> DOper | Bit Direct | Carry Flag | MOV Baddr,C | 92 | 2 | 2 | - - - |
|
||
| Destination Operand | | | | | | | | |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| Move Bit Destination | DOper -> CF | Carry Flag | Bit Direct | MOV C,Baddr | A2 | 2 | 1 | * - - |
|
||
| Operand to Carry Flag | | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| MOVC | | | | | | | | |
|
||
| Move byte from | PM(DPTR<15:0> + A<7:0>) | Accumulator | Prog Ind | MOVC A,@A+DPTR | 93 | 1 | 2 | - - - |
|
||
| Program Memory to | -> A<7:0> | | | | | | | |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | PM(PC<15:0> + A<7:0>) | Accumulator | Prog Ind | MOVC A,@A+PC | 83 | 1 | 2 | - - - |
|
||
| | -> A<7:0> | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | | DEST | SOURCE | ASSEMBLY |HEX |B |C | PSW |
|
||
| MNEMONIC | OPERATION | ADDR | ADDR | LANGUAGE |OP- |Y |Y |C A O |
|
||
| | | MODE | MODE | FORM |CODE |T |C |F C V |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| MOVX | | | | | | | | |
|
||
| Move byte from | SOper -> A | Accumulator | Indirect | MOVX A,@Ri | E2,E3 | 1 | 2 | - - - |
|
||
| External Data Memory | | " | " | MOVX A,@DPTR | E0 | 1 | 2 | |
|
||
| to the Accumulator | | | | | | | | |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| Move byte in the | A -> DOper | Indirect | Accumulator | MOVX @Ri,A | F2,F3 | 1 | 2 | - - - |
|
||
| Accumulator to | | " | " | MOVX @DPTR,A | F0 | 1 | 2 | |
|
||
| External Data Memory | | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| MUL | | | | | | | | |
|
||
| Multiply Accumulator | A X B -> B,A | AB | | MUL AB | A4 | 1 | 4 | 0 - * |
|
||
| by B Register | (see note 7) | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| NOP | | | | | | | | |
|
||
| No Operation | | | | NOP | 00 | 1 | 1 | - - - |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| ORL | | | | | | | | |
|
||
| Logical Inclusive OR | SOper v DOper -> DOper | Direct | Accumulator | ORL Daddr,A | 42 | 2 | 1 | - - - |
|
||
| of Source Operand | | " | Immediate | ORL Daddr,#data | 43 | 3 | 2 | |
|
||
| with Destination | | Accumulator | Immediate | ORL A,#data | 44 | 2 | 1 | |
|
||
| Operand | | " | Direct | ORL A,Daddr | 45 | 2 | 1 | |
|
||
| | | " | Indirect | ORL A,@Ri | 46,47 | 1 | 1 | |
|
||
| | | " | Register | ORL A,Rn | 48-4F | 1 | 1 | |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| Logical Inclusive OR | SOper v CF -> CF | Carry Flag | Bit Direct | ORL C,Baddr | 72 | 2 | 2 | * - - |
|
||
| of Source Operand | | | | | | | | |
|
||
| with Carry Flag | | | | | | | | |
|
||
| (continued) | | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | | DEST | SOURCE | ASSEMBLY |HEX |B |C | PSW |
|
||
| MNEMONIC | OPERATION | ADDR | ADDR | LANGUAGE |OP- |Y |Y |C A O |
|
||
| | | MODE | MODE | FORM |CODE |T |C |F C V |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| ORL(continued) | | | | | | | | |
|
||
| Logical Inclusive OR | ~SOper v CF -> CF | Carry Flag | Bit Direct | ORL C,/Baddr | A0 | 2 | 2 | * - - |
|
||
| of Source Operand | | | | | | | | |
|
||
| Complemented with | | | | | | | | |
|
||
| Carry Flag | | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| POP | | | | | | | | |
|
||
| Pop Stack and Place | STACK -> DOper | Direct | Stack | POP Daddr | D0 | 2 | 2 | - - - |
|
||
| in Destination Operand| SP - 1 -> SP | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| PUSH | | | | | | | | |
|
||
| Push Source Operand | SP + 1 -> SP | Stack | Direct | PUSH Daddr | C0 | 2 | 2 | - - - |
|
||
| onto Stack | SOper -> STACK | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| RET | | | | | | | | |
|
||
| Return from | STACK -> PC<15:8> | | | RET | 22 | 1 | 2 | - - - |
|
||
| Subroutine | SP - 1 -> SP | | | | | | | |
|
||
| | STACK -> PC<7:0> | | | | | | | |
|
||
| | SP - 1 -> SP | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| RETI | | | | | | | | |
|
||
| Return from | STACK -> PC<15:8> | | | RETI | 32 | 1 | 2 | - - - |
|
||
| Interrupt Routine | SP - 1 -> SP | | | | | | | |
|
||
| | STACK -> PC<7:0> | | | | | | | |
|
||
| | SP - 1 -> SP | | | | | | | |
|
||
| | 0 -> Intrupt Active Flag| | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| RL | | | | | | | | |
|
||
| Rotate Accumulator | A<6:0> -> A<7:1> | Accumulator | | RL A | 23 | 1 | 1 | - - - |
|
||
| Left One Bit | A<7> -> A<0> | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | | DEST | SOURCE | ASSEMBLY |HEX |B |C | PSW |
|
||
| MNEMONIC | OPERATION | ADDR | ADDR | LANGUAGE |OP- |Y |Y |C A O |
|
||
| | | MODE | MODE | FORM |CODE |T |C |F C V |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| RLC | | | | | | | | |
|
||
| Rotate Accumulator | A<6:0> -> A<7:1> | Accumulator | | RLC A | 33 | 1 | 1 | * - - |
|
||
| Left One Bit Thru | CF -> A<0> | | | | | | | |
|
||
| the Carry Flag | A<7> -> CF | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| RR | | | | | | | | |
|
||
| Rotate Accumulator | A<7:1> -> A<6:0> | Accumulator | | RR A | 03 | 1 | 1 | - - - |
|
||
| Right One Bit | A<0> -> A<7> | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| RRC | | | | | | | | |
|
||
| Rotate Accumulator | A<7:1> -> A<6:0> | Accumulator | | RRC A | 13 | 1 | 1 | * - - |
|
||
| Right One Bit Thru | CF -> A<7> | | | | | | | |
|
||
| the Carry Flag | A<0> -> CF | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| SETB | | | | | | | | |
|
||
| Set Bit Operand | 1 -> CF | Carry Flag | | SETB C | D3 | 1 | 1 | 1 - - |
|
||
| |-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | 1 -> DOper | Bit Direct | | SETB Baddr | D2 | 2 | 1 | - - - |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| SJMP | | | | | | | | |
|
||
| Short (8 bits) | Jump Relative to PC | | | SJMP Roff | 80 | 2 | 2 | - - - |
|
||
| Relative Jump | | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| SUBB | | | | | | | | |
|
||
| Subtract Operand with | A - SOper - CF -> A | Accumulator | Immediate | SUBB A,#data | 94 | 2 | 1 | * * * |
|
||
| Borrow from the | | " | Direct | SUBB A,Daddr | 95 | 2 | 1 | |
|
||
| Accumulator | | " | Indirect | SUBB A,@Ri | 96,97 | 1 | 1 | |
|
||
| | | " | Register | SUBB A,Rn | 98-9F | 1 | 1 | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| SWAP | | | | | | | | |
|
||
| Swap Nibbles within | A<7:4> -> A<3:0> | Accumulator | | SWAP A | C4 | 1 | 1 | - - - |
|
||
| the Accumulator | A<3:0> -> A<7:4> | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| | | DEST | SOURCE | ASSEMBLY |HEX |B |C | PSW |
|
||
| MNEMONIC | OPERATION | ADDR | ADDR | LANGUAGE |OP- |Y |Y |C A O |
|
||
| | | MODE | MODE | FORM |CODE |T |C |F C V |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| XCH | | | | | | | | |
|
||
| Exchange bytes of the | SOper<7:0> -> A<7:0> | Accumulator | Direct | XCH A,Daddr | C5 | 2 | 1 | - - - |
|
||
| Accumulator and the | A<7:0> -> SOper<7:0> | " | Indirect | XCH A,@Ri | C6,C7 | 1 | 1 | |
|
||
| Source Operand | | " | Register | XCH A,Rn | C8-CF | 1 | 1 | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| XCHD | | | | | | | | |
|
||
| Exchange the Least | SOper<3:0> -> A<3:0> | Accumulator | Indirect | XCHD A,@Ri | D6,D7 | 1 | 1 | - - - |
|
||
| Significant Nibble of | A<3:0> -> SOper<3:0> | | | | | | | |
|
||
| the Accumulator and | | | | | | | | |
|
||
| the Source Operand | | | | | | | | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
| XRL | | | | | | | | |
|
||
| Logical Exclusive OR | SOper v DOper -> DOper | Direct | Accumulator | XRL Daddr,A | 62 | 2 | 1 | - - - |
|
||
| of Source Operand | | " | Immediate | XRL Daddr,#data | 63 | 3 | 2 | |
|
||
| with Destination | | Accumulator | Immediate | XRL A,#data | 64 | 2 | 1 | |
|
||
| Operand | | " | Direct | XRL A,Daddr | 65 | 2 | 1 | |
|
||
| | | " | Indirect | XRL A,@Ri | 66,67 | 1 | 1 | |
|
||
| | | " | Register | XRL A,Rn | 68-6F | 1 | 1 | |
|
||
|------------------------|-------------------------|-------------|-------------|------------------------|-------|---|---|-------|
|
||
|
||
BMULB BYTE SIGNED MULTIPLY JUL-30-84 PAGE 1
|
||
|
||
|
||
1 ;
|
||
2 ; 8-bit by 8-bit signed multiply--byte signed multiply
|
||
3 ;
|
||
4 ; This routine takes the signed byte in multiplicand and
|
||
5 ; multiplies it by the signed byte in multiplier and places
|
||
6 ; the signed 16-bit product in product_high and product_low.
|
||
7 ;
|
||
8 ; This routine assumes 2s complement representation of signed
|
||
9 ; numbers. The maximum numbers possible is then -128 and +127.
|
||
10 ; Multiplying the possible maximum numbers together easily fits
|
||
11 ; in a 16-bit product, so no overflow test is done on the answer.
|
||
12 ;
|
||
13 ; Registers altered by routine: A, B, PSW.
|
||
14 ;
|
||
15 ;
|
||
16 ; Primary controls
|
||
17 $MOD51
|
||
18 $TITLE(BYTE SIGNED MULTIPLY)
|
||
19 $DATE(JUL-30-84)
|
||
20 $PAGEWIDTH(132)
|
||
21 $OBJECT(B:BMULB.OBJ)
|
||
22 ;
|
||
23 ;
|
||
24 ; Variable declarations
|
||
25 ;
|
||
00F0 26 sign_flag BIT 0F0H ;sign of product
|
||
0030 27 multiplier DATA 030H ;8-bit multiplier
|
||
0031 28 multiplicand DATA 031H ;8-bit multiplicand
|
||
0032 29 product_high DATA 032H ;high byte of 16-bit answer
|
||
0033 30 product_low DATA 033H ;low byte of answer
|
||
31 ;
|
||
32 ;
|
||
33 ;
|
||
0100 34 ORG 100H ;arbitrary start
|
||
35 ;
|
||
0100 36 byte_signed_multiply:
|
||
0100 C2F0 37 CLR sign_flag ;reset sign
|
||
0102 E530 38 MOV A,multiplier ;put multiplier in accumulator
|
||
0104 30E704 39 JNB ACC.7,positive ;test sign bit of multiplier
|
||
0107 F4 40 CPL A ;negative--complement and
|
||
|
||
BMULB BYTE SIGNED MULTIPLY JUL-30-84 PAGE 2
|
||
|
||
0108 04 41 INC A ;add 1 to convert to positive
|
||
0109 D2F0 42 SETB sign_flag ;and set sign flag
|
||
43 ;
|
||
010B 8531F0 44 positive: MOV B,multiplicand ;put multiplicand in B register
|
||
010E 30F707 45 JNB B.7,multiply ;test sign bit of multiplicand
|
||
0111 63F0FF 46 XRL B,#0FFh ;negative--complement and
|
||
0114 05F0 47 INC B ;add 1 to convert to positive
|
||
0116 B2F0 48 CPL sign_flag ;complement sign flag
|
||
49 ;
|
||
0118 A4 50 multiply: MUL AB ;do unsigned multiplication
|
||
51 ;
|
||
0119 30F00A 52 sign_test: JNB sign_flag,byte_signed_exit ;if positive,done
|
||
011C 63F0FF 53 XRL B,#0FFh ;else have to complement both
|
||
011F F4 54 CPL A ;bytes of the product and inc
|
||
0120 2401 55 ADD A,#1 ;need add here because inc doesn't set
|
||
0122 5002 56 JNC byte_signed_exit ;the carry flag
|
||
0124 05F0 57 INC B ;if add overflowed A, inc the high byte
|
||
58 ;
|
||
0126 59 byte_signed_exit:
|
||
0126 85F032 60 MOV product_high,B ;save the answer
|
||
0129 F533 61 MOV product_low,A
|
||
62 ;
|
||
012B 22 63 RET ;and return
|
||
64 END
|
||
|
||
ASSEMBLY COMPLETE, 0 ERRORS FOUND
|
||
|
||
BMULB BYTE SIGNED MULTIPLY JUL-30-84 PAGE 3
|
||
|
||
ACC D ADDR 00E0H PREDEFINED
|
||
B D ADDR 00F0H PREDEFINED
|
||
BYTE_SIGNED_EXIT C ADDR 0126H
|
||
BYTE_SIGNED_MULTIPLY C ADDR 0100H NOT USED
|
||
MULTIPLICAND D ADDR 0031H
|
||
MULTIPLIER D ADDR 0030H
|
||
MULTIPLY C ADDR 0118H
|
||
POSITIVE C ADDR 010BH
|
||
PRODUCT_HIGH D ADDR 0032H
|
||
PRODUCT_LOW D ADDR 0033H
|
||
SIGN_FLAG B ADDR 00F0H
|
||
SIGN_TEST C ADDR 0119H NOT USED
|