mirror of
https://github.com/rizinorg/rizin
synced 2026-08-22 20:26:16 -04:00
* Refactor of bflt to guess arch & fix m68k code * Fix endianness issues * Always cleanup at the end on travis ci
2463 lines
27 KiB
Text
2463 lines
27 KiB
Text
NAME=op: nop
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 00
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: ajmp addr11
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx a101
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0501
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: ljmp addr16
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 021234
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x1234
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: sjmp offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 8010
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0012
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: jmp @a+dptr
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 73
|
|
ar a=0x4
|
|
ar dptr=0x1230
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x1234
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: acall addr11
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx b101
|
|
ar sp=0x20
|
|
wx ffffff @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw; ar sp
|
|
p8 3 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0501
|
|
psw = 0x00
|
|
sp = 0x22
|
|
ff0200
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: lcall addr16
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 121234
|
|
ar sp=0x20
|
|
wx ffffff @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw; ar sp
|
|
p8 3 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x1234
|
|
psw = 0x00
|
|
sp = 0x22
|
|
ff0300
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: ret
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 22
|
|
wx 002301 @ _idata+0x20
|
|
ar sp=0x22
|
|
aes
|
|
ar pc; ar psw; ar sp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0123
|
|
psw = 0x00
|
|
sp = 0x20
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: reti
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 32
|
|
wx 002301 @ _idata+0x20
|
|
ar sp=0x22
|
|
aes
|
|
ar pc; ar psw; ar sp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0123
|
|
psw = 0x00
|
|
sp = 0x20
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: push direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c030
|
|
wx 40 @ _idata+0x30
|
|
ar sp=0x21
|
|
wx ffffff @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw; ar sp
|
|
p8 3 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
sp = 0x22
|
|
ffff40
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: pop direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx d030
|
|
ar sp=0x21
|
|
wx ff40ff @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw; ar sp
|
|
p8 1 @ _idata+0x30
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
sp = 0x20
|
|
40
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: jbc bit, offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 100330100430
|
|
wx 10 @ _idata+0x20
|
|
aes
|
|
ar pc
|
|
aes
|
|
ar pc; ar psw
|
|
pB 1 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
pc = 0x0036
|
|
psw = 0x00
|
|
00000000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: jb bit, offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 200330200430
|
|
wx 10 @ _idata+0x20
|
|
aes
|
|
ar pc
|
|
aes
|
|
ar pc; ar psw
|
|
pB 1 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
pc = 0x0036
|
|
psw = 0x00
|
|
00010000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: jnb bit, offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 300430300330
|
|
wx 10 @ _idata+0x20
|
|
aes
|
|
ar pc
|
|
aes
|
|
ar pc; ar psw
|
|
pB 1 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
pc = 0x0036
|
|
psw = 0x00
|
|
00010000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: jc offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c34030d34030
|
|
aes
|
|
aes
|
|
ar pc
|
|
aes
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
pc = 0x0036
|
|
psw = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: jnc offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx d35030c35030
|
|
aes
|
|
aes
|
|
ar pc
|
|
aes
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
pc = 0x0036
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: jz offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx f46030e46030
|
|
aes
|
|
aes
|
|
ar pc
|
|
aes
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
pc = 0x0036
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: jnz offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx e47030f47030
|
|
aes
|
|
aes
|
|
ar pc
|
|
aes
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
pc = 0x0036
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: cjne a, imm, offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx b46220b49620
|
|
ar a=0x62
|
|
aes
|
|
ar pc; ar psw
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
pc = 0x0026
|
|
psw = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: cjne a, direct, offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx b52030b52130
|
|
wx 1112 @ _idata+0x20
|
|
ar a=0x11
|
|
aes
|
|
ar pc; ar psw
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
pc = 0x0036
|
|
psw = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: cjne @Ri, imm, offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx b71130b71030
|
|
wx 1110 @ _idata+0x20
|
|
ar r1=0x20
|
|
aes
|
|
ar pc; ar psw
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
pc = 0x0036
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: cjne Rn, imm, offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx bf1120bf1220
|
|
ar r7=0x11
|
|
aes
|
|
ar pc; ar psw
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
pc = 0x0026
|
|
psw = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: djnz direct, offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx d52030d52030
|
|
wx 01 @ _idata+0x20
|
|
aes
|
|
ar pc
|
|
p8 1 @ _idata+0x20
|
|
aes
|
|
ar pc
|
|
p8 1 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
00
|
|
pc = 0x0036
|
|
ff
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: djnz Rn, offset
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx df30df30
|
|
ar r7=0x01
|
|
aes
|
|
ar pc
|
|
ar r7
|
|
aes
|
|
ar pc
|
|
ar r7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
r7 = 0x00
|
|
pc = 0x0034
|
|
r7 = 0xff
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: setb c
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx d3
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: setb bit
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx d204d206
|
|
aes
|
|
aes
|
|
ar pc; ar psw
|
|
s _idata+0x20
|
|
pB 1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0004
|
|
psw = 0x00
|
|
01010000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: clr a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx e4
|
|
ar a=18
|
|
ar P=1
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
a = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: clr c
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c3
|
|
ar c=1
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: clr bit
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c204c206
|
|
wx ff @ _idata+0x20
|
|
aes
|
|
aes
|
|
ar pc; ar psw
|
|
s _idata+0x20
|
|
pB 1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0004
|
|
psw = 0x00
|
|
10101111
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: cpl a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx f4
|
|
ar a=0xf8
|
|
ar P=0
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x07
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: cpl c
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx b3
|
|
ar c=1
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: cpl bit
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx b203b206
|
|
wx f0 @ _idata+0x20
|
|
aes
|
|
aes
|
|
ar pc; ar psw
|
|
s _idata+0x20
|
|
pB 1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0004
|
|
psw = 0x00
|
|
10111000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: dec a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 14
|
|
ar a=1
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
a = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: dec direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 1520
|
|
wx 80 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw
|
|
s _idata+0x20
|
|
p8 1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
7f
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: dec @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 16
|
|
ar r0=0x20
|
|
wx 80 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw
|
|
s _idata+0x20
|
|
p8 1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
7f
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: dec Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 1f
|
|
ar r7=0x80
|
|
aes
|
|
ar pc; ar psw; ar r7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
r7 = 0x7f
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: inc a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 04
|
|
ar a=0xff
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
a = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: inc direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 0520
|
|
wx 80 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw
|
|
s _idata+0x20
|
|
p8 1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
81
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: inc @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 06
|
|
ar r0=0x20
|
|
wx 80 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw
|
|
s _idata+0x20
|
|
p8 1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
81
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: inc Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 0f
|
|
ar r7=0x80
|
|
aes
|
|
ar pc; ar psw; ar r7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
r7 = 0x81
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: inc dptr
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx a3
|
|
ar dptr=0xff
|
|
aes
|
|
ar pc; ar psw; ar dptr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
dptr = 0x0100
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: add a, imm (carry)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 2480
|
|
ar a=0x80
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x80
|
|
a = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: add a, imm (aux carry)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 2408
|
|
ar a=0x08
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x41
|
|
a = 0x10
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: add a, imm (overflow)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 2440
|
|
ar a=0x40
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x05
|
|
a = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: add a, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 2520
|
|
ar a=0x81
|
|
wx 2030 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0xa1
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: add a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 27
|
|
ar a=0x81
|
|
ar r1=0x20
|
|
wx 2030 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0xa1
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: add a, Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 2f
|
|
ar a=0x81
|
|
ar r7=0x20
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0xa1
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: addc a, imm (carry)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 3480
|
|
ar a=0x80
|
|
ar c=1
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x81
|
|
a = 0x01
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: addc a, imm (aux carry)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 3408
|
|
ar a=0x08
|
|
ar c=1
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x40
|
|
a = 0x11
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: addc a, imm (overflow)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 3440
|
|
ar a=0x40
|
|
ar c=1
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x04
|
|
a = 0x81
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: addc a, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 3520
|
|
ar a=0x81
|
|
ar c=1
|
|
wx 2030 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0xa2
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: addc a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 37
|
|
ar a=0x81
|
|
ar r1=0x20
|
|
ar c=1
|
|
wx 2030 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0xa2
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: addc a, Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 3f
|
|
ar a=0x81
|
|
ar r7=0x20
|
|
ar c=1
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0xa2
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: subb a, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c37462949674279412
|
|
aes
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0005
|
|
psw = 0xc0
|
|
a = 0xcc
|
|
pc = 0x0009
|
|
psw = 0x00
|
|
a = 0x14
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: subb a, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c37462952074279521
|
|
wx 9612 @ _idata+0x20
|
|
aes
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0005
|
|
psw = 0xc0
|
|
a = 0xcc
|
|
pc = 0x0009
|
|
psw = 0x00
|
|
a = 0x14
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: subb a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 7920c374629709742797
|
|
wx 9612 @ _idata+0x20
|
|
aes
|
|
aes
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
aes
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0006
|
|
psw = 0xc0
|
|
a = 0xcc
|
|
pc = 0x000a
|
|
psw = 0x00
|
|
a = 0x14
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: subb a, Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c374627f969f74277f129f
|
|
aes
|
|
aes
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
aes
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0006
|
|
psw = 0xc0
|
|
a = 0xcc
|
|
pc = 0x000b
|
|
psw = 0x00
|
|
a = 0x14
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: da a (BCD no carry: 23+23)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 74232423d4
|
|
aes
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0005
|
|
psw = 0x01
|
|
a = 0x46
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: da a (BCD with carry #1: 99+99)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 74992499d4
|
|
aes
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0005
|
|
psw = 0xc1
|
|
a = 0x98
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: da a (BCD with carry #2: 99+66)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 74992466d4
|
|
aes
|
|
aes
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0005
|
|
psw = 0x80
|
|
a = 0x65
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: div ab
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 848484
|
|
ar a=106
|
|
ar b=3
|
|
aes
|
|
ar pc; ar psw; ar a; ar b
|
|
aes
|
|
ar pc; ar psw; ar a; ar b
|
|
aes
|
|
ar pc; ar ov;
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x23
|
|
b = 0x01
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0x23
|
|
b = 0x00
|
|
pc = 0x0003
|
|
ov = 0x1
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mul ab
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx a4a4
|
|
ar a=32
|
|
ar b=7
|
|
aes
|
|
ar pc; ar psw; ar a; ar b
|
|
ar b=3
|
|
aes
|
|
ar pc; ar psw; ar a; ar b
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0xe0
|
|
b = 0x00
|
|
pc = 0x0002
|
|
psw = 0x04
|
|
a = 0xa0
|
|
b = 0x02
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: orl direct, a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 4220
|
|
wx 3040 @ _idata+0x20
|
|
ar a=0x81
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
b140
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: orl direct, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 432081
|
|
wx 3040 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
b140
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: orl a, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 4483
|
|
ar a=0x30
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0xb3
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: orl a, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 4520
|
|
wx 3040 @ _idata+0x20
|
|
ar a=0x83
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0xb3
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: orl a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 47
|
|
wx 3040 @ _idata+0x20
|
|
ar r1=0x20
|
|
ar a=0x83
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0xb3
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: orl a, Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 4f
|
|
ar r7=0x30
|
|
ar a=0x83
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0xb3
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: orl c, bit
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 7203
|
|
wx 08 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw;
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: orl c, /bit
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx a003
|
|
wx 80 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw;
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: anl direct, a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 5220
|
|
wx 3040 @ _idata+0x20
|
|
ar a=0x10
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
1040
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: anl direct, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 532010
|
|
wx 3040 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
1040
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: anl a, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 5410
|
|
ar a=0x30
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0x10
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: anl a, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 5520
|
|
wx 3040 @ _idata+0x20
|
|
ar a=0x10
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0x10
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: anl a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 57
|
|
wx 3040 @ _idata+0x20
|
|
ar r1=0x20
|
|
ar a=0x10
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x10
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: anl a, Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 5f
|
|
ar r7=0x30
|
|
ar a=0x10
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x10
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: anl c, bit
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx d38203
|
|
wx 08 @ _idata+0x20
|
|
aes
|
|
aes
|
|
ar pc; ar psw;
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: anl c, /bit
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx d3b003
|
|
wx 08 @ _idata+0x20
|
|
aes
|
|
aes
|
|
ar pc; ar psw;
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xrl direct, a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 6220
|
|
wx 3040 @ _idata+0x20
|
|
ar a=0x31
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
0140
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xrl direct, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 632031
|
|
wx 3040 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
0140
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xrl a, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 6430
|
|
ar a=0x31
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0x01
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xrl a, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 6520
|
|
wx 3040 @ _idata+0x20
|
|
ar a=0x31
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0x01
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xrl a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 67
|
|
wx 3040 @ _idata+0x20
|
|
ar r1=0x20
|
|
ar a=0x31
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x01
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xrl a, Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 6f
|
|
ar r7=0x30
|
|
ar a=0x31
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x01
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: rr a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 03
|
|
ar a=0x89
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0xc4
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: rrc a (carry set)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 13
|
|
ar a=0x18
|
|
ar c=1
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x8c
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: rrc a (carry clear)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 13
|
|
ar a=0x99
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x81
|
|
a = 0x4c
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: rl a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 23
|
|
ar a=0x89
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x13
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: rlc a (carry set)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 33
|
|
ar a=0x18
|
|
ar c=1
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x31
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: rlc a (carry clear)
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 33
|
|
ar a=0x99
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x81
|
|
a = 0x32
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov a, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 7420
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0x20
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov direct, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 752021
|
|
wx 3040 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
2140
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov @Ri imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 7720
|
|
wx 3040 @ _idata+0x20
|
|
ar r1=0x21
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
3020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov Rn, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 7f20
|
|
aes
|
|
ar pc; ar psw; ar r7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
r7 = 0x20
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov direct, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 852021
|
|
wx 3040 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
3030
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov direct, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 8720
|
|
wx 3040 @ _idata+0x20
|
|
ar r1=0x21
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
4040
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov direct, Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 8f20
|
|
wx 3040 @ _idata+0x20
|
|
ar r7=0x21
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
2140
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov dptr, imm
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 902010
|
|
aes
|
|
ar pc; ar psw; ar dptr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0003
|
|
psw = 0x00
|
|
dptr = 0x2010
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov bit, c
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx d39203c39204
|
|
wx f0 @ _idata+0x20
|
|
ar c=1
|
|
aes 4
|
|
ar pc; ar psw
|
|
pB 1 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0006
|
|
psw = 0x00
|
|
11101000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov c, bit
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx a203
|
|
wx 08 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov @Ri direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx a720
|
|
wx 3040 @ _idata+0x20
|
|
ar r1=0x21
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
3030
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov Rn, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx af20
|
|
wx 3040 @ _idata+0x20
|
|
ar r7=0x21
|
|
aes
|
|
ar pc; ar psw; ar r7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
r7 = 0x30
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov a, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx e521
|
|
wx 3040 @ _idata+0x20
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0x40
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx e7
|
|
wx 3040 @ _idata+0x20
|
|
ar r1=0x21
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x40
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov a, Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx ef
|
|
ar r7=0x20
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x20
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov direct, a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx f520
|
|
wx 3040 @ _idata+0x20
|
|
ar a=0x21
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x00
|
|
2140
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov @Ri, a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx f7
|
|
wx 3040 @ _idata+0x20
|
|
ar a=0x20
|
|
ar r1=0x21
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
3020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: mov Rn, a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx ff
|
|
ar a=0x20
|
|
aes
|
|
ar pc; ar psw; ar r7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
r7 = 0x20
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: movx a, @dptr
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx e0
|
|
wx 10 @ _xdata+0x100
|
|
ar dptr=0x100
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x10
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: movx a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx e3
|
|
wx 3040 @ _xdata+0x020
|
|
ar r1=0x21
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x40
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: movx @dptr, a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx f0
|
|
wx 10 @ _xdata+0x100
|
|
ar dptr=0x100
|
|
ar a=0x20
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 1 @ _xdata+0x100
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
20
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: movx @Ri, a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx f3
|
|
wx 10 @ _xdata+0x010
|
|
ar r1=0x10
|
|
ar a=0x20
|
|
aes
|
|
ar pc; ar psw;
|
|
p8 1 @ _xdata+0x010
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x00
|
|
20
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: movc a, @a+pc
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 83
|
|
wx 10 @ 0xf0
|
|
ar a=0xf0
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x10
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: movc a, @a+dptr
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx 93
|
|
wx 10 @ 0x100
|
|
ar a=1
|
|
ar dptr=0xff
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x10
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: swap a
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c4
|
|
ar a=0x31
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x13
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xch a, direct
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c521
|
|
wx 3040 @ _idata+0x20
|
|
ar a=0x20
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0002
|
|
psw = 0x01
|
|
a = 0x40
|
|
3020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xch a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx c7
|
|
wx 3040 @ _idata+0x20
|
|
ar r1=0x21
|
|
ar a=0x20
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
p8 2 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x40
|
|
3020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xch a, Rn
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx cf
|
|
ar r7=0x40
|
|
ar a=0x20
|
|
aes
|
|
ar pc; ar psw; ar a; ar r7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x40
|
|
r7 = 0x20
|
|
EOF
|
|
RUN
|
|
|
|
NAME=op: xchd a, @Ri
|
|
FILE=malloc://0x10000
|
|
CMDS=<<EOF
|
|
e asm.arch=8051
|
|
e asm.bits=8
|
|
e cfg.bigendian=false
|
|
aei
|
|
wx d7
|
|
wx 34 @ _idata+0x20
|
|
ar r1=0x20
|
|
ar a=0x56
|
|
aes
|
|
ar pc; ar psw; ar a
|
|
p8 1 @ _idata+0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0001
|
|
psw = 0x01
|
|
a = 0x54
|
|
36
|
|
EOF
|
|
RUN
|