📄 arith.asm
字号:
;----------------------------------------------------
; Test for add, adc, sun, sbc, subr, inc, dec, inca, deca
;----------------------------------------------------
org 0x0000
; add
ldi r0 0xaa
ldi r1 0x55
ldi r2 0xff
add r1
cmp r2
jmpa ne error
ldi r1 0x01
ldi r2 0x00
add r1
cmp r2
jmpa ne error
ldi r1 0x01
ldi r0 0x26
ldi r2 0x27
loop1:
add r1
cmp r2
jmpa ne error
inc r2
jmpr ne loop1
ldi r1 0x02
ldi r0 0x78
ldi r2 0x7a
loop2:
add r1
cmp r2
jmpa ne error
inc r2
inc r2
jmpr ne loop2
ldi r1 0x34
ldi r0 0x68
ldi r2 0x9c
ldi r3 0x00
; check all the registers
ldi r0 0x27
ldi r1 0x13
ldi r2 0x3a
ldi r3 0x74
ldi r4 0xe8
ldi r5 0xd0
ldi r6 0xa0
ldi r7 0x40
add r1
cmp r2
jmpa ne error
add r2
cmp r3
jmpa ne error
add r3
cmp r4
jmpa ne error
add r4
cmp r5
jmpa ne error
add r5
cmp r6
jmpa ne error
add r6
cmp r7
jmpa ne error
ldi r1 0x80
add r7
cmp r1
jmpa ne error
cmp r0
jmpa ne error
ldi r0 0xff
ldi r1 0x01
ldi r2 0x00
add r1
cmp r2
jmpa ne error
; adc
ldi r0 0xff
ldi r1 0x01
ldi r2 0x00
adc r1
jmpa cc error
ldi r0 0xff
ldi r1 0x01
ldi r2 0x01
adc r1
cmp r2
jmpa ne error
ldi r0 0x00
wrps
ldi r0 0xfe
ldi r1 0x01
adc r1
jmpa cs error
; sub
ldi r0 0xff
ldi r1 0x01
ldi r2 0xfe
sub r1
cmp r2
jmpa ne error
ldi r0 0xaa
ldi r1 0x55
ldi r2 0x55
sub r1
cmp r2
jmpa ne error
ldi r0 0x55
ldi r1 0xaa
ldi r2 0xab
sub r1
cmp r2
jmpa ne error
ldi r1 0x02
ldi r0 0x26
ldi r2 0x24
loop3:
sub r1
cmp r2
jmpa ne error
dec r2
dec r2
jmpr ne loop3
; subr
ldi r0 0x01
ldi r1 0xff
ldi r2 0xfe
subr r1
cmp r2
jmpa ne error
ldi r0 0x55
ldi r1 0xaa
ldi r2 0x55
subr r1
cmp r2
jmpa ne error
ldi r0 0xaa
ldi r1 0x55
ldi r2 0xab
subr r1
cmp r2
jmpa ne error
; sbc
ldi r0 0x00
wrps
ldi r0 0xaa
ldi r1 0x55
ldi r2 0x55
sbc r1
cmp r2
jmpa ne error
ldi r0 0x02
wrps
ldi r0 0xaa
ldi r1 0x55
ldi r2 0x54
sbc r1
cmp r2
jmpa ne error
; inc
ldi r1 0x55
ldi r2 0x59
inc r1
inc r1
inc r1
inc r1
mov r0 r1
cmp r2
jmpa ne error
ldi r0 0x27
ldi r1 0x26
ldi r2 0x26
ldi r3 0x26
ldi r4 0x26
ldi r5 0x26
ldi r6 0x26
ldi r7 0x26
inc r1
inc r2
inc r3
inc r4
inc r5
inc r6
inc r7
cmp r1
jmpa ne error
cmp r2
jmpa ne error
cmp r3
jmpa ne error
cmp r4
jmpa ne error
cmp r5
jmpa ne error
cmp r6
jmpa ne error
cmp r7
jmpa ne error
; dec
ldi r1 0x59
ldi r2 0x55
dec r1
dec r1
dec r1
dec r1
mov r0 r1
cmp r2
jmpa ne error
ldi r0 0x25
ldi r1 0x26
ldi r2 0x26
ldi r3 0x26
ldi r4 0x26
ldi r5 0x26
ldi r6 0x26
ldi r7 0x26
dec r1
dec r2
dec r3
dec r4
dec r5
dec r6
dec r7
cmp r1
jmpa ne error
cmp r2
jmpa ne error
cmp r3
jmpa ne error
cmp r4
jmpa ne error
cmp r5
jmpa ne error
cmp r6
jmpa ne error
cmp r7
jmpa ne error
; inca/deca
pmov a1 0x1234
pmov a2 0x1234
pmov a3 0x1234
inca a1
inca a1
deca a1
deca a1
deca a1
inca a2
inca a2
deca a2
deca a2
deca a2
inca a3
inca a3
deca a3
deca a3
deca a3
ldi r0 0x33
cmp r2
jmpa ne error
cmp r4
jmpa ne error
cmp r6
jmpa ne error
ldi r0 0x12
cmp r3
jmpa ne error
cmp r5
jmpa ne error
cmp r7
jmpa ne error
pmov a0 0x1234
inca a0
inca a0
deca a0
deca a0
deca a0
cmp r2
jmpa ne error
mov r0 r1
cmp r3
jmpa ne error
jmpa 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 + -