This documentation was automatically generated with AcDoc tool.
i8051 Architechture Description
i8051 Other Properties
ISA (ac_isa):
Name: i8051_isa.ac
Type_OP_R (ac_format):
Format Description: op1 5; reg 3;
Instructions: dec_r mov_ra subb_ar orl_ar xch_ar anl_ar mov_ar addc_ar inc_r xrl_ar add_ar
Type_2bytes (ac_format):
Type_IBRCH (ac_format):
Format Description: page 3; op2 5; addr0 8;
Instructions: acall ajmp
Type_3bytesReg (ac_format):
Format Description: op3 5; reg2 3; data 8; reladd 8;
Instructions: cjne_r
Type_3bytes (ac_format):
Type_1byte (ac_format):
Type_2bytesReg (ac_format):
Format Description: op3 5; reg2 3; addr 8;
Instructions: mov_r_iram mov_r_data djnz_r mov_iram_r
dec_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=20;
ASM: dec A
cpl_bit (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=178;
ASM: ['cpl %sfr', 'byte2']
ASM: ['cpl %imm', 'byte2']
jnz (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=112;
ASM: jnz %addr(pcrel,2)
ASM: byte2
dec_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=21;
ASM: ['dec %sfr', 'byte2']
ASM: ['dec %exp', 'byte2']
jnc (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=80;
ASM: jnc %addr(pcrel,2)
ASM: byte2
jnb (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=48;
ASM: ['jnb %sfr,%addr(pcrel,3)', 'byte2', 'byte3']
ASM: ['jnb %imm,%addr(pcrel,3)', 'byte2', 'byte3']
dec_r (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=3;
ASM: dec %reg
ASM: reg
ret (ac_instr):
Instruction Type: Type_1byte
Decoder: op=34;
ASM: ret
xrl_iram_a (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=98;
ASM: ['xrl %sfr,A', 'byte2']
ASM: ['xrl %exp,A', 'byte2']
mov_ra (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=31;
ASM: mov %reg,A
ASM: reg
inc_dptr (ac_instr):
Instruction Type: Type_1byte
Decoder: op=163;
ASM: inc DPTR
anl_iram_a (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=82;
ASM: ['anl %sfr,A', 'byte2']
ASM: ['anl %exp,A', 'byte2']
setb_bit (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=210;
ASM: ['setb %sfr', 'byte2']
ASM: ['setb %imm', 'byte2']
subb_ar (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=19;
ASM: subb A,%reg
ASM: reg
xrl_a_data (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=100;
ASM: xrl A,#%imm
ASM: byte2
swap (ac_instr):
Instruction Type: Type_1byte
Decoder: op=196;
ASM: swap A
cjne_addr (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=181;
ASM: ['cjne A,%sfr,%addr(pcrel,3)', 'byte2', 'byte3']
ASM: ['cjne A,%exp,%addr(pcrel,3)', 'byte2', 'byte3']
inc_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=5;
ASM: ['inc %sfr', 'byte2']
ASM: ['inc %exp', 'byte2']
cjne_r (ac_instr):
Instruction Type: Type_3bytesReg
Decoder: op3=23;
ASM: cjne %reg,#%imm,%addr(pcrel,3)
ASM: reg2
ASM: data
ASM: reladd
clr_bit (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=194;
ASM: ['clr %sfr', 'byte2']
ASM: ['clr %imm', 'byte2']
subb_a_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=150;
ASM: subb A,@R0
subb_a_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=151;
ASM: subb A,@R1
da (ac_instr):
Instruction Type: Type_1byte
Decoder: op=212;
ASM: da A
inc_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=7;
ASM: inc @R1
orl_ar (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=9;
ASM: orl A,%reg
ASM: reg
nop (ac_instr):
Instruction Type: Type_1byte
Decoder: op=0;
ASM: nop
mov_a_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=229;
ASM: ['mov A,%sfr', 'byte2']
ASM: ['mov A,%exp', 'byte2']
movx_r0_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=242;
ASM: movx @R0,A
xch_ar (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=25;
ASM: xch A,%reg
ASM: reg
div (ac_instr):
Instruction Type: Type_1byte
Decoder: op=132;
ASM: div AB
mov_a_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=231;
ASM: mov A,@R1
mov_a_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=230;
ASM: mov A,@R0
ljmp (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=2;
ASM: ljmp %addr
ASM: byte2
ASM: byte3
cjne_data (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=180;
ASM: cjne A,#%imm,%addr(pcrel,3)
ASM: byte2
ASM: byte3
addc_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=55;
ASM: addc A,@R1
orl_iram_data (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=67;
ASM: ['orl %sfr,#%imm', 'byte2', 'byte3']
ASM: ['orl %exp,#%imm', 'byte2', 'byte3']
djnz_iram_reladd (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=213;
ASM: ['djnz %sfr,%addr(pcrel,3)', 'byte2', 'byte3']
ASM: ['djnz %exp,%addr(pcrel,3)', 'byte2', 'byte3']
mov_r_iram (ac_instr):
Instruction Type: Type_2bytesReg
Decoder: op3=21;
ASM: ['mov %reg,%sfr', 'reg2', 'addr']
ASM: ['mov %reg,%exp', 'reg2', 'addr']
mov_arr_R1_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=167;
ASM: ['mov @R1,%sfr', 'byte2']
ASM: ['mov @R1,%exp', 'byte2']
movx_a_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=226;
ASM: movx A,@R0
movx_a_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=227;
ASM: movx A,@R1
mov_iram_arr_R0 (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=134;
ASM: ['mov %sfr,@R0', 'byte2']
ASM: ['mov %exp,@R0', 'byte2']
mov_iram_arr_R1 (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=135;
ASM: ['mov %sfr,@R1', 'byte2']
ASM: ['mov %exp,@R1', 'byte2']
clr_c (ac_instr):
Instruction Type: Type_1byte
Decoder: op=195;
ASM: clr C
anl_ar (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=11;
ASM: anl A,%reg
ASM: reg
orl_a_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=69;
ASM: ['orl A,%sfr', 'byte2']
ASM: ['orl A,%exp', 'byte2']
xchd_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=214;
ASM: xchd A, @R0
rrc_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=19;
ASM: rrc A
dec_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=23;
ASM: dec @R1
dec_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=22;
ASM: dec @R0
xch_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=198;
ASM: xch A,@R0
xch_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=199;
ASM: xch A,@R1
mul (ac_instr):
Instruction Type: Type_1byte
Decoder: op=164;
ASM: mul AB
rr_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=3;
ASM: rr A
subb_a_data (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=148;
ASM: subb A,#%imm
ASM: byte2
jz (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=96;
ASM: jz %addr(pcrel,2)
ASM: byte2
mov_ar (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=29;
ASM: mov A,%reg
ASM: reg
mov_iram_data (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=117;
ASM: [['mov %sfr,#hi(%exp(high))', 'byte2', 'byte3'], ['mov %sfr,#%exp', 'byte2', 'byte3']]
ASM: ['mov %exp,#%imm', 'byte2', 'byte3']
xch_a_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=197;
ASM: ['xch A,%sfr', 'byte2']
ASM: ['xch A,%exp', 'byte2']
anl_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=86;
ASM: anl A,@R0
anl_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=87;
ASM: anl A,@R1
xrl_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=103;
ASM: xrl A,@R1
xrl_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=102;
ASM: xrl A,@R0
mov_dptr_data (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=144;
ASM: mov DPTR,#%exp
ASM: byte2
ASM: byte3
lcall (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=18;
ASM: lcall %addr
ASM: byte2
ASM: byte3
jb (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=32;
ASM: ['jb %sfr,%addr(pcrel,3)', 'byte2', 'byte3']
ASM: ['jb %imm,%addr(pcrel,3)', 'byte2', 'byte3']
jc (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=64;
ASM: jc %addr(pcrel,2)
ASM: byte2
anl_c_bit (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=130;
ASM: ['anl C,%sfr', 'byte2']
ASM: ['anl C,%imm', 'byte2']
cjne_arr_R0 (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=182;
ASM: cjne @R0,#%imm,%addr(pcrel,3)
ASM: byte2
ASM: byte3
cjne_arr_R1 (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=183;
ASM: cjne @R1,#%imm,%addr(pcrel,3)
ASM: byte2
ASM: byte3
mov_r_data (ac_instr):
Instruction Type: Type_2bytesReg
Decoder: op3=15;
ASM: mov %reg,#%exp
ASM: reg2
ASM: addr
mov_c_bit (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=162;
ASM: ['mov C,%sfr', 'byte2']
ASM: ['mov C,%imm', 'byte2']
mov_iram_iram (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=133;
ASM: [[['mov %sfr,%sfr', 'byte3', 'byte2'], ['mov %sfr,%exp', 'byte3', 'byte2']], ['mov %exp,%sfr', 'byte3', 'byte2']]
ASM: ['mov %exp,%exp', 'byte3', 'byte2']
acall (ac_instr):
Instruction Type: Type_IBRCH
Decoder: op2=17;
ASM: acall %addr
ASM: page
ASM: addr0
inc_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=4;
ASM: inc A
movx_r1_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=243;
ASM: movx @R1,A
pop (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=208;
ASM: ['pop %sfr', 'byte2']
ASM: ['pop %exp', 'byte2']
mov_arr_R0_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=246;
ASM: mov @R0,A
movc_pc (ac_instr):
Instruction Type: Type_1byte
Decoder: op=131;
ASM: movc A,@A+PC
addc_ar (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=7;
ASM: addc A,%reg
ASM: reg
inc_r (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=1;
ASM: inc %reg
ASM: reg
anl_a_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=85;
ASM: ['anl A,%sfr', 'byte2']
ASM: ['anl A,%exp', 'byte2']
addc_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=54;
ASM: addc A,@R0
xrl_a_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=101;
ASM: ['xrl A,%sfr', 'byte2']
ASM: ['xrl A,%exp', 'byte2']
mov_arr_R0_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=166;
ASM: ['mov @R0,%sfr', 'byte2']
ASM: ['mov @R0,%exp', 'byte2']
djnz_r (ac_instr):
Instruction Type: Type_2bytesReg
Decoder: op3=27;
ASM: djnz %reg,%addr(pcrel,2)
ASM: reg2
ASM: addr
mov_a_data (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=116;
ASM: mov A,#%imm
ASM: byte2
add_a_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=37;
ASM: ['add A,%sfr', 'byte2']
ASM: ['add A,%exp', 'byte2']
orl_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=70;
ASM: orl A,@R0
orl_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=71;
ASM: orl A,@R1
anl_c_nbit (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=176;
ASM: ['anl C,/%sfr', 'byte2']
ASM: ['anl C,/%imm', 'byte2']
add_a_data (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=36;
ASM: ['add A, #hi(%exp(high))', 'byte2']
ASM: ['add A, #%exp', 'byte2']
jmp (ac_instr):
Instruction Type: Type_1byte
Decoder: op=115;
ASM: jmp @A+DPTR
add_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=38;
ASM: add A,@R0
add_arr_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=39;
ASM: add A,@R1
inc_arr_R0 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=6;
ASM: inc @R0
xrl_iram_data (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=99;
ASM: ['xrl %sfr,#%imm', 'byte2', 'byte3']
ASM: ['xrl %exp,#%imm', 'byte2', 'byte3']
mov_arr_R0_data (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=118;
ASM: mov @R0,#%imm
ASM: byte2
xrl_ar (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=13;
ASM: xrl A,%reg
ASM: reg
rl_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=35;
ASM: rl A
movc_dptr (ac_instr):
Instruction Type: Type_1byte
Decoder: op=147;
ASM: movc A,@A+DPTR
mov_arr_R1_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=247;
ASM: mov @R1,A
rlc_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=51;
ASM: rlc A
anl_a_data (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=84;
ASM: anl A, #%imm
ASM: byte2
cpl_c (ac_instr):
Instruction Type: Type_1byte
Decoder: op=179;
ASM: cpl C
cpl_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=244;
ASM: cpl A
reti (ac_instr):
Instruction Type: Type_1byte
Decoder: op=50;
ASM: reti
mov_arr_R1_data (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=119;
ASM: mov @R1,#%imm
ASM: byte2
orl_c_nbit (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=160;
ASM: ['orl C,/%sfr', 'byte2']
ASM: ['orl C,/%imm', 'byte2']
mov_iram_a (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=245;
ASM: ['mov %sfr,A', 'byte2']
ASM: ['mov %exp,A', 'byte2']
sjmp (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=128;
ASM: sjmp %addr(pcrel,2)
ASM: byte2
clr_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=228;
ASM: clr A
subb_a_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=149;
ASM: ['subb A,%sfr', 'byte2']
ASM: ['subb A,%exp', 'byte2']
mov_iram_r (ac_instr):
Instruction Type: Type_2bytesReg
Decoder: op3=17;
ASM: ['mov %sfr,%reg', 'addr', 'reg2']
ASM: ['mov %exp,%reg', 'addr', 'reg2']
orl_c_bit (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=114;
ASM: ['orl C,%sfr', 'byte2']
ASM: ['orl C,%imm', 'byte2']
addc_a_iram (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=53;
ASM: ['addc A,%sfr', 'byte2']
ASM: ['addc A,%exp', 'byte2']
setb_c (ac_instr):
Instruction Type: Type_1byte
Decoder: op=211;
ASM: setb C
movx_a_dptr (ac_instr):
Instruction Type: Type_1byte
Decoder: op=224;
ASM: movx A,@DPTR
mov_bit_c (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=146;
ASM: ['mov %sfr,C', 'byte2']
ASM: ['mov %imm,C', 'byte2']
ajmp (ac_instr):
Instruction Type: Type_IBRCH
Decoder: op2=1;
ASM: ajmp %addr
ASM: page
ASM: addr0
orl_iram_a (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=66;
ASM: ['orl %sfr,A', 'byte2']
ASM: ['orl %exp,A', 'byte2']
addc_a_data (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=52;
ASM: ['addc A, #hi(%exp(high))', 'byte2']
ASM: ['addc A, #%exp', 'byte2']
orl_a_data (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=68;
ASM: orl A,#%imm
ASM: byte2
anl_iram_data (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=83;
ASM: ['anl %sfr, #%imm', 'byte2', 'byte3']
ASM: ['anl %exp, #%imm', 'byte2', 'byte3']
movx_dptr_a (ac_instr):
Instruction Type: Type_1byte
Decoder: op=240;
ASM: movx @DPTR,A
jbc (ac_instr):
Instruction Type: Type_3bytes
Decoder: op=16;
ASM: ['jbc %sfr,%addr(pcrel,3)', 'byte2', 'byte3']
ASM: ['jbc %imm,%addr(pcrel,3)', 'byte2', 'byte3']
push (ac_instr):
Instruction Type: Type_2bytes
Decoder: op=192;
ASM: ['push %sfr', 'byte2']
ASM: ['push %exp', 'byte2']
add_ar (ac_instr):
Instruction Type: Type_OP_R
Decoder: op1=5;
ASM: add A,%reg
ASM: reg
xchd_R1 (ac_instr):
Instruction Type: Type_1byte
Decoder: op=215;
ASM: xchd A, @R1