📄 flags.asm
字号:
;-----------------------------
; Test for flags
;-----------------------------
org 0x0000
; add
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0x56
ldi r2 0x03
add r1
rdps
cmp r2
jmpa ne error
ldi r0 0x00
wrps
ldi r0 0x55
ldi r1 0x55
ldi r2 0x0c
add r1
rdps
cmp r2
jmpa ne error
; adc
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0x56
ldi r2 0x03
adc r1
rdps
cmp r2
jmpa ne error
ldi r0 0x00
wrps
ldi r0 0x55
ldi r1 0x55
ldi r2 0x0c
adc r1
rdps
cmp r2
jmpa ne error
; sub
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0x56
ldi r2 0x02
sub r1
rdps
cmp r2
jmpa ne error
ldi r0 0x00
wrps
ldi r0 0x55
ldi r1 0x55
ldi r2 0x03
sub r1
rdps
cmp r2
jmpa ne error
;subr
ldi r0 0x00
wrps
ldi r0 0x56
ldi r1 0xaa
ldi r2 0x02
subr r1
rdps
cmp r2
jmpa ne error
ldi r0 0x00
wrps
ldi r0 0x55
ldi r1 0x55
ldi r2 0x03
subr r1
rdps
cmp r2
jmpa ne error
;sbc
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0x56
ldi r2 0x02
sbc r1
rdps
cmp r2
jmpa ne error
ldi r0 0x00
wrps
ldi r0 0x55
ldi r1 0x55
ldi r2 0x03
sbc r1
rdps
cmp r2
jmpa ne error
;inc
ldi r0 0x00
wrps
ldi r1 0x56
ldi r2 0x00
inc r1
rdps
cmp r2
jmpa ne error
ldi r0 0x00
wrps
ldi r1 0x7f
ldi r2 0x0c
inc r1
rdps
cmp r2
jmpa ne error
ldi r0 0x04
wrps
ldi r1 0xff
ldi r2 0x03
inc r1
rdps
cmp r2
jmpa ne error
;dec
ldi r0 0x00
wrps
ldi r1 0x56
ldi r2 0x02
dec r1
rdps
cmp r2
jmpa ne error
ldi r0 0x00
wrps
ldi r1 0x00
ldi r2 0x0c
dec r1
rdps
cmp r2
jmpa ne error
ldi r0 0x04
wrps
ldi r1 0xff
ldi r2 0x06
dec r1
rdps
cmp r2
jmpa ne error
ldi r0 0x04
wrps
ldi r1 0x01
ldi r2 0x03
dec r1
rdps
cmp r2
jmpa ne error
; xor
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0x55
ldi r2 0x04
xor r1
rdps
cmp r2
jmpa ne error
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0xaa
ldi r2 0x01
xor r1
rdps
cmp r2
jmpa ne error
ldi r0 0x1f
wrps
ldi r0 0xaa
ldi r1 0x55
ldi r2 0x1e
xor r1
rdps
cmp r2
jmpa ne error
;not
ldi r0 0x00
wrps
ldi r1 0x00
ldi r2 0x04
not r1
rdps
cmp r2
jmpa ne error
ldi r0 0x1a
wrps
ldi r2 0xff
ldi r1 0x1b
not r2
rdps
cmp r1
jmpa ne error
; shr
ldi r0 0x00
wrps
ldi r2 0xaa
ldi r1 0x00
shr r2
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r3 0x36
ldi r1 0x18
shr r3
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r4 0x55
ldi r1 0x1a
shr r4
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r4 0x01
ldi r1 0x1b
shr r4
rdps
cmp r1
jmpa ne error
; shl
ldi r0 0x18
wrps
ldi r5 0x36
ldi r1 0x18
shl r5
rdps
cmp r1
jmpa ne error
ldi r0 0x00
wrps
ldi r5 0x55
ldi r1 0x04
shl r5
rdps
cmp r1
jmpa ne error
ldi r0 0x00
wrps
ldi r5 0x80
ldi r1 0x03
shl r5
rdps
cmp r1
jmpa ne error
; asr
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0x04
asr
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r0 0x36
ldi r1 0x18
asr
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r0 0x55
ldi r1 0x1a
asr
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r0 0x01
ldi r1 0x1b
asr
rdps
cmp r1
jmpa ne error
; ror
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0x00
ror
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r0 0x36
ldi r1 0x18
ror
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r0 0x55
ldi r1 0x1e
ror
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r0 0x01
ldi r1 0x1e
ror
rdps
cmp r1
jmpa ne error
; rorc
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0x00
rorc
rdps
cmp r1
jmpa ne error
ldi r0 0x1a
wrps
ldi r0 0x36
ldi r1 0x1c
rorc
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r0 0x55
ldi r1 0x1a
rorc
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
ldi r0 0x01
ldi r1 0x1b
rorc
rdps
cmp r1
jmpa ne error
; inca
ldi r0 0x00
wrps
pmov a1 0x0000
ldi r1 0x00
inca a1
rdps
cmp r1
jmpa ne error
ldi r0 0x00
wrps
pmov a1 0xffff
ldi r1 0x03
inca a1
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
pmov a1 0x7fff
ldi r1 0x1c
inca a1
rdps
cmp r1
jmpa ne error
; deca
ldi r0 0x00
wrps
pmov a1 0x0000
ldi r1 0x04
deca a1
rdps
cmp r1
jmpa ne error
ldi r0 0x00
wrps
pmov a1 0xffff
ldi r1 0x06
deca a1
rdps
cmp r1
jmpa ne error
ldi r0 0x18
wrps
pmov a1 0x8000
ldi r1 0x1a
deca a1
rdps
cmp r1
jmpa ne error
; make sure the following instructions doesn't affect the flags
ldi r0 0x1f
ldi r2 0x1f
ldi r1 0x3a
wrps
ldi r0 0x00
pmov a2 0x3000
str a2
sto a2 0x03
sta r0 0x3005
ldr a2
ldo a2 0x03
lda r0 0x3005
umul r1
ldi r1 0x32
udiv r1
psh r0
pop r0
jmpr al next_ins1
next_ins1:
jmpa al next_ins2
next_ins2:
mov r0 r2
mov r2 r0
rdps
cmp r2
jmpa ne error
ldi r0 0x00
ldi r2 0x00
ldi r1 0x3a
wrps
ldi r0 0x00
pmov a2 0x3000
str a2
sto a2 0x03
sta r0 0x3005
ldr a2
ldo a2 0x03
lda r0 0x3005
umul r1
ldi r1 0x32
udiv r1
psh r0
pop r0
jmpr al next_ins3
next_ins3:
jmpa al next_ins4
next_ins4:
mov r0 r2
mov r2 r0
rdps
cmp r2
jmpa ne error
jmpr al finish
error:
ldi r0 0xa2
sta r0 0x1234
jmpr al skip
finish:
ldi r0 0x55
sta r0 0xffff
skip:
nop
nop
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -