Last active
August 29, 2015 14:21
-
-
Save edmccard/94c7b36a31353dd2fefa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; SIMTEST.ASM | |
; | |
; If execution reaches pc = 0x54, all is well | |
; If execution reaches 0x50, SREG was incorrect | |
; If execution reaches 0x52, result (in r16) was incorrect | |
; NOTE: pc is byte address (like gcc-avr uses) | |
; On failure, r19 holds the number of the first failed test | |
; set SP to 0x00ff | |
ldi r16, 0xff | |
out 0x3d, r16 | |
ldi r16, 0x00 | |
out 0x3e, r16 | |
rjmp testcases | |
test: in r18, 0x3f | |
cp r18, r20 | |
brne badstatus | |
cp r16, r21 | |
brne badresult | |
ldi r18, 0x00 | |
out 0x3f, r18 | |
ret | |
testcp: in r18, 0x3f | |
cp r18, r20 | |
brne badstatus | |
ldi r18, 0x00 | |
out 0x3f, r18 | |
ret | |
testmul: in r18, 0x3f | |
cp r18, r20 | |
brne badstatus | |
cp r0, r21 | |
brne badresult | |
cp r1, r22 | |
brne badresult | |
clr r0 | |
clr r1 | |
ldi r18, 0x00 | |
out 0x3f, r18 | |
ret | |
testword: in r18, 0x3f | |
cp r18, r20 | |
brne badstatus | |
cp r24, r21 | |
cp r25, r22 | |
brne badresult | |
ldi r18, 0x00 | |
out 0x3f, r18 | |
ret | |
badstatus: rjmp badstatus | |
badresult: rjmp badresult | |
success: rjmp success | |
testcases: | |
; add without carry status 0 | |
ldi r19, 1 ; test number | |
ldi r16, 0x01 ; d | |
ldi r17, 0x01 ; r | |
add r16, r17 | |
ldi r20, 0x00 ; expected SREG | |
ldi r21, 0x02 ; expected result in r16 | |
rcall test | |
; add without carry status 1 | |
ldi r19, 2 | |
ldi r16, 0x10 | |
ldi r17, 0xf1 | |
add r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x01 | |
rcall test | |
; add without carry status 2 | |
ldi r19, 3 | |
ldi r16, 0x00 | |
ldi r17, 0x00 | |
add r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; add without carry status 3 | |
ldi r19, 4 | |
ldi r16, 0x10 | |
ldi r17, 0xf0 | |
add r16, r17 | |
ldi r20, 0x03 | |
ldi r21, 0x00 | |
rcall test | |
; add without carry status c | |
ldi r19, 5 | |
ldi r16, 0x40 | |
ldi r17, 0x40 | |
add r16, r17 | |
ldi r20, 0x0c | |
ldi r21, 0x80 | |
rcall test | |
; add without carry status 14 | |
ldi r19, 6 | |
ldi r16, 0x00 | |
ldi r17, 0x80 | |
add r16, r17 | |
ldi r20, 0x14 | |
ldi r21, 0x80 | |
rcall test | |
; add without carry status 15 | |
ldi r19, 7 | |
ldi r16, 0xc0 | |
ldi r17, 0xc0 | |
add r16, r17 | |
ldi r20, 0x15 | |
ldi r21, 0x80 | |
rcall test | |
; add without carry status 19 | |
ldi r19, 8 | |
ldi r16, 0x81 | |
ldi r17, 0x81 | |
add r16, r17 | |
ldi r20, 0x19 | |
ldi r21, 0x02 | |
rcall test | |
; add without carry status 1b | |
ldi r19, 9 | |
ldi r16, 0x80 | |
ldi r17, 0x80 | |
add r16, r17 | |
ldi r20, 0x1b | |
ldi r21, 0x00 | |
rcall test | |
; add without carry status 20 | |
ldi r19, 10 | |
ldi r16, 0x08 | |
ldi r17, 0x08 | |
add r16, r17 | |
ldi r20, 0x20 | |
ldi r21, 0x10 | |
rcall test | |
; add without carry status 21 | |
ldi r19, 11 | |
ldi r16, 0x02 | |
ldi r17, 0xff | |
add r16, r17 | |
ldi r20, 0x21 | |
ldi r21, 0x01 | |
rcall test | |
; add without carry status 23 | |
ldi r19, 12 | |
ldi r16, 0x01 | |
ldi r17, 0xff | |
add r16, r17 | |
ldi r20, 0x23 | |
ldi r21, 0x00 | |
rcall test | |
; add without carry status 2c | |
ldi r19, 13 | |
ldi r16, 0x48 | |
ldi r17, 0x48 | |
add r16, r17 | |
ldi r20, 0x2c | |
ldi r21, 0x90 | |
rcall test | |
; add without carry status 34 | |
ldi r19, 14 | |
ldi r16, 0x01 | |
ldi r17, 0x8f | |
add r16, r17 | |
ldi r20, 0x34 | |
ldi r21, 0x90 | |
rcall test | |
; add without carry status 35 | |
ldi r19, 15 | |
ldi r16, 0xc8 | |
ldi r17, 0xc8 | |
add r16, r17 | |
ldi r20, 0x35 | |
ldi r21, 0x90 | |
rcall test | |
; add without carry status 39 | |
ldi r19, 16 | |
ldi r16, 0x88 | |
ldi r17, 0x88 | |
add r16, r17 | |
ldi r20, 0x39 | |
ldi r21, 0x10 | |
rcall test | |
; add with carry status 0 | |
ldi r19, 17 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0x00 | |
adc r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
rcall test | |
; add with carry status 1 | |
ldi r19, 18 | |
sec | |
ldi r16, 0x10 | |
ldi r17, 0xf0 | |
adc r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x01 | |
rcall test | |
; add with carry status c | |
ldi r19, 19 | |
sec | |
ldi r16, 0x40 | |
ldi r17, 0x40 | |
adc r16, r17 | |
ldi r20, 0x0c | |
ldi r21, 0x81 | |
rcall test | |
; add with carry status 14 | |
ldi r19, 20 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0x80 | |
adc r16, r17 | |
ldi r20, 0x14 | |
ldi r21, 0x81 | |
rcall test | |
; add with carry status 15 | |
ldi r19, 21 | |
sec | |
ldi r16, 0xc0 | |
ldi r17, 0xc0 | |
adc r16, r17 | |
ldi r20, 0x15 | |
ldi r21, 0x81 | |
rcall test | |
; add with carry status 19 | |
ldi r19, 22 | |
sec | |
ldi r16, 0x80 | |
ldi r17, 0x80 | |
adc r16, r17 | |
ldi r20, 0x19 | |
ldi r21, 0x01 | |
rcall test | |
; add with carry status 20 | |
ldi r19, 23 | |
sec | |
ldi r16, 0x08 | |
ldi r17, 0x08 | |
adc r16, r17 | |
ldi r20, 0x20 | |
ldi r21, 0x11 | |
rcall test | |
; add with carry status 21 | |
ldi r19, 24 | |
sec | |
ldi r16, 0x01 | |
ldi r17, 0xff | |
adc r16, r17 | |
ldi r20, 0x21 | |
ldi r21, 0x01 | |
rcall test | |
; add with carry status 23 | |
ldi r19, 25 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0xff | |
adc r16, r17 | |
ldi r20, 0x23 | |
ldi r21, 0x00 | |
rcall test | |
; add with carry status 2c | |
ldi r19, 26 | |
sec | |
ldi r16, 0x48 | |
ldi r17, 0x48 | |
adc r16, r17 | |
ldi r20, 0x2c | |
ldi r21, 0x91 | |
rcall test | |
; add with carry status 34 | |
ldi r19, 27 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0x8f | |
adc r16, r17 | |
ldi r20, 0x34 | |
ldi r21, 0x90 | |
rcall test | |
; add with carry status 35 | |
ldi r19, 28 | |
sec | |
ldi r16, 0xc8 | |
ldi r17, 0xc8 | |
adc r16, r17 | |
ldi r20, 0x35 | |
ldi r21, 0x91 | |
rcall test | |
; add with carry status 39 | |
ldi r19, 29 | |
sec | |
ldi r16, 0x88 | |
ldi r17, 0x88 | |
adc r16, r17 | |
ldi r20, 0x39 | |
ldi r21, 0x11 | |
rcall test | |
clc | |
; sub without carry status 0 | |
ldi r19, 30 | |
ldi r16, 0x01 | |
ldi r17, 0x00 | |
sub r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
rcall test | |
; cp without carry status 0 | |
ldi r19, 31 | |
ldi r16, 0x01 | |
ldi r17, 0x00 | |
cp r16, r17 | |
ldi r20, 0x00 | |
rcall testcp | |
; sub without carry status 1 | |
ldi r19, 32 | |
ldi r16, 0x00 | |
ldi r17, 0x90 | |
sub r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x70 | |
rcall test | |
; cp without carry status 1 | |
ldi r19, 33 | |
ldi r16, 0x00 | |
ldi r17, 0x90 | |
cp r16, r17 | |
ldi r20, 0x01 | |
rcall testcp | |
; sub without carry status 2 | |
ldi r19, 34 | |
ldi r16, 0x00 | |
ldi r17, 0x00 | |
sub r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; cp without carry status 2 | |
ldi r19, 35 | |
ldi r16, 0x00 | |
ldi r17, 0x00 | |
cp r16, r17 | |
ldi r20, 0x02 | |
rcall testcp | |
; sub without carry status d | |
ldi r19, 36 | |
ldi r16, 0x00 | |
ldi r17, 0x80 | |
sub r16, r17 | |
ldi r20, 0x0d | |
ldi r21, 0x80 | |
rcall test | |
; cp without carry status d | |
ldi r19, 37 | |
ldi r16, 0x00 | |
ldi r17, 0x80 | |
cp r16, r17 | |
ldi r20, 0x0d | |
rcall testcp | |
; sub without carry status 14 | |
ldi r19, 38 | |
ldi r16, 0x80 | |
ldi r17, 0x00 | |
sub r16, r17 | |
ldi r20, 0x14 | |
ldi r21, 0x80 | |
rcall test | |
; cp without carry status 14 | |
ldi r19, 39 | |
ldi r16, 0x80 | |
ldi r17, 0x00 | |
cp r16, r17 | |
ldi r20, 0x14 | |
rcall testcp | |
; sub without carry status 15 | |
ldi r19, 40 | |
ldi r16, 0x00 | |
ldi r17, 0x10 | |
sub r16, r17 | |
ldi r20, 0x15 | |
ldi r21, 0xf0 | |
rcall test | |
; cp without carry status 15 | |
ldi r19, 41 | |
ldi r16, 0x00 | |
ldi r17, 0x10 | |
cp r16, r17 | |
ldi r20, 0x15 | |
rcall testcp | |
; sub without carry status 18 | |
ldi r19, 42 | |
ldi r16, 0x80 | |
ldi r17, 0x10 | |
sub r16, r17 | |
ldi r20, 0x18 | |
ldi r21, 0x70 | |
rcall test | |
; cp without carry status 18 | |
ldi r19, 43 | |
ldi r16, 0x80 | |
ldi r17, 0x10 | |
cp r16, r17 | |
ldi r20, 0x18 | |
rcall testcp | |
; sub without carry status 20 | |
ldi r19, 44 | |
ldi r16, 0x10 | |
ldi r17, 0x01 | |
sub r16, r17 | |
ldi r20, 0x20 | |
ldi r21, 0x0f | |
rcall test | |
; cp without carry status 20 | |
ldi r19, 45 | |
ldi r16, 0x10 | |
ldi r17, 0x01 | |
cp r16, r17 | |
ldi r20, 0x20 | |
rcall testcp | |
; sub without carry status 21 | |
ldi r19, 46 | |
ldi r16, 0x00 | |
ldi r17, 0x81 | |
sub r16, r17 | |
ldi r20, 0x21 | |
ldi r21, 0x7f | |
rcall test | |
; cp without carry status 21 | |
ldi r19, 47 | |
ldi r16, 0x00 | |
ldi r17, 0x81 | |
cp r16, r17 | |
ldi r20, 0x21 | |
rcall testcp | |
; sub without carry status 2d | |
ldi r19, 48 | |
ldi r16, 0x10 | |
ldi r17, 0x81 | |
sub r16, r17 | |
ldi r20, 0x2d | |
ldi r21, 0x8f | |
rcall test | |
; cp without carry status 2d | |
ldi r19, 49 | |
ldi r16, 0x10 | |
ldi r17, 0x81 | |
cp r16, r17 | |
ldi r20, 0x2d | |
rcall testcp | |
; sub without carry status 34 | |
ldi r19, 50 | |
ldi r16, 0x90 | |
ldi r17, 0x01 | |
sub r16, r17 | |
ldi r20, 0x34 | |
ldi r21, 0x8f | |
rcall test | |
; cp without carry status 34 | |
ldi r19, 51 | |
ldi r16, 0x90 | |
ldi r17, 0x01 | |
cp r16, r17 | |
ldi r20, 0x34 | |
rcall testcp | |
; sub without carry status 35 | |
ldi r19, 52 | |
ldi r16, 0x00 | |
ldi r17, 0x01 | |
sub r16, r17 | |
ldi r20, 0x35 | |
ldi r21, 0xff | |
rcall test | |
; cp without carry status 35 | |
ldi r19, 53 | |
ldi r16, 0x00 | |
ldi r17, 0x01 | |
cp r16, r17 | |
ldi r20, 0x35 | |
rcall testcp | |
; sub without carry status 38 | |
ldi r19, 54 | |
ldi r16, 0x80 | |
ldi r17, 0x01 | |
sub r16, r17 | |
ldi r20, 0x38 | |
ldi r21, 0x7f | |
rcall test | |
; cp without carry status 38 | |
ldi r19, 55 | |
ldi r16, 0x80 | |
ldi r17, 0x01 | |
cp r16, r17 | |
ldi r20, 0x38 | |
rcall testcp | |
; sbc with carry status 0 | |
ldi r19, 56 | |
sec | |
ldi r16, 0x02 | |
ldi r17, 0x00 | |
sbc r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
rcall test | |
; cpc with carry status 0 | |
ldi r19, 57 | |
sec | |
ldi r16, 0x02 | |
ldi r17, 0x00 | |
cpc r16, r17 | |
ldi r20, 0x00 | |
rcall testcp | |
; sbc with carry status 1 | |
ldi r19, 58 | |
sec | |
ldi r16, 0x01 | |
ldi r17, 0x90 | |
sbc r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x70 | |
rcall test | |
; cpc with carry status 1 | |
ldi r19, 59 | |
sec | |
ldi r16, 0x01 | |
ldi r17, 0x90 | |
cpc r16, r17 | |
ldi r20, 0x01 | |
rcall testcp | |
; sbc with carry status d | |
ldi r19, 61 | |
sec | |
ldi r16, 0x01 | |
ldi r17, 0x80 | |
sbc r16, r17 | |
ldi r20, 0x0d | |
ldi r21, 0x80 | |
rcall test | |
; cpc with carry status d | |
ldi r19, 62 | |
sec | |
ldi r16, 0x01 | |
ldi r17, 0x80 | |
cpc r16, r17 | |
ldi r20, 0x0d | |
rcall testcp | |
; sbc with carry status 14 | |
ldi r19, 63 | |
sec | |
ldi r16, 0x81 | |
ldi r17, 0x00 | |
sbc r16, r17 | |
ldi r20, 0x14 | |
ldi r21, 0x80 | |
rcall test | |
; cpc with carry status 14 | |
ldi r19, 64 | |
sec | |
ldi r16, 0x81 | |
ldi r17, 0x00 | |
cpc r16, r17 | |
ldi r20, 0x14 | |
rcall testcp | |
; sbc with carry status 15 | |
ldi r19, 65 | |
sec | |
ldi r16, 0x01 | |
ldi r17, 0x10 | |
sbc r16, r17 | |
ldi r20, 0x15 | |
ldi r21, 0xf0 | |
rcall test | |
; cpc with carry status 15 | |
ldi r19, 66 | |
sec | |
ldi r16, 0x01 | |
ldi r17, 0x10 | |
cpc r16, r17 | |
ldi r20, 0x15 | |
rcall testcp | |
; sbc with carry status 18 | |
ldi r19, 67 | |
sec | |
ldi r16, 0x81 | |
ldi r17, 0x10 | |
sbc r16, r17 | |
ldi r20, 0x18 | |
ldi r21, 0x70 | |
rcall test | |
; cpc with carry status 18 | |
ldi r19, 68 | |
sec | |
ldi r16, 0x81 | |
ldi r17, 0x10 | |
cpc r16, r17 | |
ldi r20, 0x18 | |
rcall testcp | |
; sbc with carry status 20 | |
ldi r19, 69 | |
sec | |
ldi r16, 0x10 | |
ldi r17, 0x00 | |
sbc r16, r17 | |
ldi r20, 0x20 | |
ldi r21, 0x0f | |
rcall test | |
; cpc with carry status 20 | |
ldi r19, 70 | |
sec | |
ldi r16, 0x10 | |
ldi r17, 0x00 | |
cpc r16, r17 | |
ldi r20, 0x20 | |
rcall testcp | |
; sbc with carry status 21 | |
ldi r19, 71 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0x80 | |
sbc r16, r17 | |
ldi r20, 0x21 | |
ldi r21, 0x7f | |
rcall test | |
; cpc with carry status 21 | |
ldi r19, 72 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0x80 | |
cpc r16, r17 | |
ldi r20, 0x21 | |
rcall testcp | |
; sbc with carry status 20 | |
ldi r19, 73 | |
sec | |
ldi r16, 0x10 | |
ldi r17, 0x0f | |
sbc r16, r17 | |
ldi r20, 0x20 | |
ldi r21, 0x00 | |
rcall test | |
; cpc with carry status 20 | |
ldi r19, 74 | |
sec | |
ldi r16, 0x10 | |
ldi r17, 0x0f | |
cpc r16, r17 | |
ldi r20, 0x20 | |
rcall testcp | |
; sbc with carry status 21 | |
ldi r19, 75 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0xff | |
sbc r16, r17 | |
ldi r20, 0x21 | |
ldi r21, 0x00 | |
rcall test | |
; cpc with carry status 21 | |
ldi r19, 76 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0xff | |
cpc r16, r17 | |
ldi r20, 0x21 | |
rcall testcp | |
; sbc with carry status 2d | |
ldi r19, 77 | |
sec | |
ldi r16, 0x10 | |
ldi r17, 0x80 | |
sbc r16, r17 | |
ldi r20, 0x2d | |
ldi r21, 0x8f | |
rcall test | |
; cpc with carry status 2d | |
ldi r19, 78 | |
sec | |
ldi r16, 0x10 | |
ldi r17, 0x80 | |
cpc r16, r17 | |
ldi r20, 0x2d | |
rcall testcp | |
; sbc with carry status 34 | |
ldi r19, 79 | |
sec | |
ldi r16, 0x90 | |
ldi r17, 0x00 | |
sbc r16, r17 | |
ldi r20, 0x34 | |
ldi r21, 0x8f | |
rcall test | |
; cpc with carry status 34 | |
ldi r19, 80 | |
sec | |
ldi r16, 0x90 | |
ldi r17, 0x00 | |
cpc r16, r17 | |
ldi r20, 0x34 | |
rcall testcp | |
; sbc with carry status 35 | |
ldi r19, 80 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0x00 | |
sbc r16, r17 | |
ldi r20, 0x35 | |
ldi r21, 0xff | |
rcall test | |
; cpc with carry status 35 | |
ldi r19, 81 | |
sec | |
ldi r16, 0x00 | |
ldi r17, 0x00 | |
cpc r16, r17 | |
ldi r20, 0x35 | |
rcall testcp | |
; sbc with carry status 38 | |
ldi r19, 82 | |
sec | |
ldi r16, 0x80 | |
ldi r17, 0x00 | |
sbc r16, r17 | |
ldi r20, 0x38 | |
ldi r21, 0x7f | |
rcall test | |
; cpc with carry status 38 | |
ldi r19, 83 | |
sec | |
ldi r16, 0x80 | |
ldi r17, 0x00 | |
cpc r16, r17 | |
ldi r20, 0x38 | |
rcall testcp | |
; sbc with carry status 38 | |
ldi r19, 84 | |
sec | |
ldi r16, 0x80 | |
ldi r17, 0x7f | |
sbc r16, r17 | |
ldi r20, 0x38 | |
ldi r21, 0x00 | |
rcall test | |
; cpc with carry status 38 | |
ldi r19, 85 | |
sec | |
ldi r16, 0x80 | |
ldi r17, 0x7f | |
cpc r16, r17 | |
ldi r20, 0x38 | |
rcall testcp | |
clc | |
; mul status 0 | |
ldi r19, 86 | |
ldi r16, 0xff | |
ldi r17, 0x01 | |
mul r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0xff | |
ldi r22, 0x00 | |
rcall testmul | |
; mul status 0 | |
ldi r19, 87 | |
ldi r16, 0x7f | |
ldi r17, 0x7f | |
mul r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
ldi r22, 0x3f | |
rcall testmul | |
; mul status 1 | |
ldi r19, 88 | |
ldi r16, 0xff | |
ldi r17, 0xff | |
mul r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x01 | |
ldi r22, 0xfe | |
rcall testmul | |
; mul status 2 | |
ldi r19, 89 | |
ldi r16, 0xff | |
ldi r17, 0x00 | |
mul r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
ldi r22, 0x00 | |
rcall testmul | |
; muls status 0 | |
ldi r19, 90 | |
ldi r16, 0xff | |
ldi r17, 0xff | |
muls r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
ldi r22, 0x00 | |
rcall testmul | |
; muls status 0 | |
ldi r19, 91 | |
ldi r16, 0x7f | |
ldi r17, 0x7f | |
muls r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
ldi r22, 0x3f | |
rcall testmul | |
; muls status 1 | |
ldi r19, 92 | |
ldi r16, 0xff | |
ldi r17, 0x01 | |
muls r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0xff | |
ldi r22, 0xff | |
rcall testmul | |
; muls status 2 | |
ldi r19, 93 | |
ldi r16, 0xff | |
ldi r17, 0x00 | |
muls r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
ldi r22, 0x00 | |
rcall testmul | |
; mulsu status 0 | |
ldi r19, 94 | |
ldi r16, 0x01 | |
ldi r17, 0xff | |
mulsu r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0xff | |
ldi r22, 0x00 | |
rcall testmul | |
; mulsu status 0 | |
ldi r19, 95 | |
ldi r16, 0x7f | |
ldi r17, 0x7f | |
mulsu r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
ldi r22, 0x3f | |
rcall testmul | |
; mulsu status 1 | |
ldi r19, 96 | |
ldi r16, 0xff | |
ldi r17, 0xff | |
mulsu r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x01 | |
ldi r22, 0xff | |
rcall testmul | |
; mulsu status 2 | |
ldi r19, 97 | |
ldi r16, 0xff | |
ldi r17, 0x00 | |
mulsu r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
ldi r22, 0x00 | |
rcall testmul | |
; fmul status 0 | |
ldi r19, 98 | |
ldi r16, 0xff | |
ldi r17, 0x01 | |
fmul r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0xfe | |
ldi r22, 0x01 | |
rcall testmul | |
; fmul status 0 | |
ldi r19, 99 | |
ldi r16, 0x80 | |
ldi r17, 0x80 | |
fmul r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x00 | |
ldi r22, 0x80 | |
rcall testmul | |
; fmul status 1 | |
ldi r19, 100 | |
ldi r16, 0xd0 | |
ldi r17, 0xd0 | |
fmul r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x00 | |
ldi r22, 0x52 | |
rcall testmul | |
; fmul status 1 | |
ldi r19, 101 | |
ldi r16, 0xe0 | |
ldi r17, 0xe0 | |
fmul r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x00 | |
ldi r22, 0x88 | |
rcall testmul | |
; fmul status 2 | |
ldi r19, 102 | |
ldi r16, 0xff | |
ldi r17, 0x00 | |
fmul r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
ldi r22, 0x00 | |
rcall testmul | |
; fmuls status 0 | |
ldi r19, 103 | |
ldi r16, 0x7f | |
ldi r17, 0x7f | |
fmuls r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x02 | |
ldi r22, 0x7e | |
rcall testmul | |
; fmuls status 0 | |
ldi r19, 104 | |
ldi r16, 0x80 | |
ldi r17, 0x80 | |
fmuls r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x00 | |
ldi r22, 0x80 | |
rcall testmul | |
; fmuls status 1 | |
ldi r19, 105 | |
ldi r16, 0xff | |
ldi r17, 0x01 | |
fmuls r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0xfe | |
ldi r22, 0xff | |
rcall testmul | |
; fmuls status 2 | |
ldi r19, 106 | |
ldi r16, 0xff | |
ldi r17, 0x00 | |
fmuls r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
ldi r22, 0x00 | |
rcall testmul | |
; fmulsu status 0 | |
ldi r19, 107 | |
ldi r16, 0x01 | |
ldi r17, 0xff | |
fmulsu r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0xfe | |
ldi r22, 0x01 | |
rcall testmul | |
; fmulsu status 0 | |
ldi r19, 108 | |
ldi r16, 0x7f | |
ldi r17, 0xc8 | |
fmulsu r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x70 | |
ldi r22, 0xc6 | |
rcall testmul | |
; fmulsu status 1 | |
ldi r19, 109 | |
ldi r16, 0xff | |
ldi r17, 0xff | |
fmulsu r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x02 | |
ldi r22, 0xfe | |
rcall testmul | |
; fmulsu status 1 | |
ldi r19, 110 | |
ldi r16, 0x9c | |
ldi r17, 0xaa | |
fmulsu r16, r17 | |
ldi r20, 0x01 | |
ldi r21, 0x30 | |
ldi r22, 0x7b | |
rcall testmul | |
; fmulsu status 2 | |
ldi r19, 111 | |
ldi r16, 0xff | |
ldi r17, 0x00 | |
fmulsu r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
ldi r22, 0x00 | |
rcall testmul | |
; asr status 0 | |
ldi r19, 112 | |
ldi r16, 0x02 | |
asr r16 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
rcall test | |
; asr status 2 | |
ldi r19, 113 | |
ldi r16, 0x00 | |
asr r16 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; asr status c | |
ldi r19, 114 | |
ldi r16, 0x80 | |
asr r16 | |
ldi r20, 0x0c | |
ldi r21, 0xc0 | |
rcall test | |
; asr status 15 | |
ldi r19, 115 | |
ldi r16, 0x81 | |
asr r16 | |
ldi r20, 0x15 | |
ldi r21, 0xc0 | |
rcall test | |
; asr status 19 | |
ldi r19, 116 | |
ldi r16, 0x03 | |
asr r16 | |
ldi r20, 0x19 | |
ldi r21, 0x01 | |
rcall test | |
; asr status 1b | |
ldi r19, 117 | |
ldi r16, 0x01 | |
asr r16 | |
ldi r20, 0x1b | |
ldi r21, 0x00 | |
rcall test | |
; lsr status 0 | |
ldi r19, 118 | |
ldi r16, 0x02 | |
lsr r16 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
rcall test | |
; lsr status 2 | |
ldi r19, 119 | |
ldi r16, 0x00 | |
asr r16 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; lsr status 19 | |
ldi r19, 120 | |
ldi r16, 0x03 | |
asr r16 | |
ldi r20, 0x19 | |
ldi r21, 0x01 | |
rcall test | |
; lsr status 1b | |
ldi r19, 121 | |
ldi r16, 0x01 | |
asr r16 | |
ldi r20, 0x1b | |
ldi r21, 0x00 | |
rcall test | |
; ror without carry status 0 | |
ldi r19, 122 | |
ldi r16, 0x02 | |
ror r16 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
rcall test | |
; ror without carry status 2 | |
ldi r19, 123 | |
ldi r16, 0x00 | |
ror r16 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; ror without carry status 19 | |
ldi r19, 124 | |
ldi r16, 0x03 | |
ror r16 | |
ldi r20, 0x19 | |
ldi r21, 0x01 | |
rcall test | |
; ror without carry status 1b | |
ldi r19, 125 | |
ldi r16, 0x01 | |
ror r16 | |
ldi r20, 0x1b | |
ldi r21, 0x00 | |
rcall test | |
; ror with carry status c | |
ldi r19, 126 | |
sec | |
ldi r16, 0x0 | |
ror r16 | |
ldi r20, 0x0c | |
ldi r21, 0x80 | |
rcall test | |
; ror with carry status 15 | |
ldi r19, 127 | |
sec | |
ldi r16, 0x01 | |
ror r16 | |
ldi r20, 0x15 | |
ldi r21, 0x80 | |
rcall test | |
; com status 1 | |
ldi r19, 128 | |
ldi r16, 0x80 | |
com r16 | |
ldi r20, 0x01 | |
ldi r21, 0x7f | |
rcall test | |
; com status 3 | |
ldi r19, 129 | |
ldi r16, 0xff | |
com r16 | |
ldi r20, 0x03 | |
ldi r21, 0x00 | |
rcall test | |
; com status 15 | |
ldi r19, 130 | |
ldi r16, 0x00 | |
com r16 | |
ldi r20, 0x15 | |
ldi r21, 0xff | |
rcall test | |
; neg status 1 | |
ldi r19, 131 | |
ldi r16, 0x90 | |
neg r16 | |
ldi r20, 0x01 | |
ldi r21, 0x70 | |
rcall test | |
; neg status 2 | |
ldi r19, 132 | |
ldi r16, 0x00 | |
neg r16 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; neg status d | |
ldi r19, 133 | |
ldi r16, 0x80 | |
neg r16 | |
ldi r20, 0x0d | |
ldi r21, 0x80 | |
rcall test | |
; neg status 15 | |
ldi r19, 134 | |
ldi r16, 0x10 | |
neg r16 | |
ldi r20, 0x15 | |
ldi r21, 0xf0 | |
rcall test | |
; neg status 21 | |
ldi r19, 135 | |
ldi r16, 0x81 | |
neg r16 | |
ldi r20, 0x21 | |
ldi r21, 0x7f | |
rcall test | |
; neg status 35 | |
ldi r19, 136 | |
ldi r16, 0x01 | |
neg r16 | |
ldi r20, 0x35 | |
ldi r21, 0xff | |
rcall test | |
; dec status 0 | |
ldi r19, 137 | |
ldi r16, 0x02 | |
dec r16 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
rcall test | |
; dec status 2 | |
ldi r19, 138 | |
ldi r16, 0x01 | |
dec r16 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; dec status 14 | |
ldi r19, 139 | |
ldi r16, 0x00 | |
dec r16 | |
ldi r20, 0x14 | |
ldi r21, 0xff | |
rcall test | |
; dec status 18 | |
ldi r19, 140 | |
ldi r16, 0x80 | |
dec r16 | |
ldi r20, 0x18 | |
ldi r21, 0x7f | |
rcall test | |
; inc status 0 | |
ldi r19, 141 | |
ldi r16, 0x00 | |
inc r16 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
rcall test | |
; inc status 2 | |
ldi r19, 142 | |
ldi r16, 0xff | |
inc r16 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; inc status c | |
ldi r19, 143 | |
ldi r16, 0x7f | |
inc r16 | |
ldi r20, 0x0c | |
ldi r21, 0x80 | |
rcall test | |
; inc status 14 | |
ldi r19, 144 | |
ldi r16, 0x80 | |
inc r16 | |
ldi r20, 0x14 | |
ldi r21, 0x81 | |
rcall test | |
;adiw status 0 | |
ldi r19, 145 | |
ldi r25, 0x00 | |
ldi r24, 0x00 | |
adiw r25:r24, 0x01 | |
ldi r20, 0x00 | |
ldi r22, 0x00 | |
ldi r21, 0x01 | |
rcall testword | |
;adiw status 1 | |
ldi r19, 146 | |
ldi r25, 0xff | |
ldi r24, 0xc3 | |
adiw r25:r24, 0x3e | |
ldi r20, 0x01 | |
ldi r22, 0x00 | |
ldi r21, 0x01 | |
rcall testword | |
; adiw status 2 | |
ldi r19, 147 | |
ldi r25, 0x00 | |
ldi r24, 0x00 | |
adiw r25:r24, 0x00 | |
ldi r20, 0x02 | |
ldi r22, 0x00 | |
ldi r21, 0x00 | |
rcall testword | |
; adiw status 3 | |
ldi r19, 148 | |
ldi r25, 0xff | |
ldi r24, 0xc2 | |
adiw r25:r24, 0x3e | |
ldi r20, 0x03 | |
ldi r22, 0x00 | |
ldi r21, 0x00 | |
rcall testword | |
; adiw status c | |
ldi r19, 149 | |
ldi r25, 0x7f | |
ldi r24, 0xc2 | |
adiw r25:r24, 0x3e | |
ldi r20, 0x0c | |
ldi r22, 0x80 | |
ldi r21, 0x00 | |
rcall testword | |
; adiw status 14 | |
ldi r19, 150 | |
ldi r25, 0x80 | |
ldi r24, 0x00 | |
adiw r25:r24, 0x00 | |
ldi r20, 0x14 | |
ldi r22, 0x80 | |
ldi r21, 0x00 | |
rcall testword | |
; sbiw status 0 | |
ldi r19, 151 | |
ldi r25, 0x00 | |
ldi r24, 0x01 | |
sbiw r25:r24, 0x00 | |
ldi r20, 0x00 | |
ldi r22, 0x00 | |
ldi r21, 0x01 | |
rcall testword | |
; sbiw status 2 | |
ldi r19, 152 | |
ldi r25, 0x00 | |
ldi r24, 0x00 | |
sbiw r25:r24, 0x00 | |
ldi r20, 0x02 | |
ldi r22, 0x00 | |
ldi r21, 0x010 | |
rcall testword | |
; sbiw status 14 | |
ldi r19, 153 | |
ldi r25, 0x80 | |
ldi r24, 0x00 | |
sbiw r25:r24, 0x00 | |
ldi r20, 0x14 | |
ldi r22, 0x80 | |
ldi r21, 0x00 | |
rcall testword | |
; sbiw status 15 | |
ldi r19, 154 | |
ldi r25, 0x00 | |
ldi r24, 0x00 | |
sbiw r25:r24, 0x01 | |
ldi r20, 0x15 | |
ldi r22, 0xff | |
ldi r21, 0xff | |
rcall testword | |
; sbiw status 18 | |
ldi r19, 155 | |
ldi r25, 0x80 | |
ldi r24, 0x00 | |
sbiw r25:r24, 0x01 | |
ldi r20, 0x18 | |
ldi r22, 0x7f | |
ldi r21, 0xff | |
rcall testword | |
; and status 0 | |
ldi r19, 156 | |
ldi r16, 0x01 | |
ldi r17, 0x01 | |
and r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x01 | |
rcall test | |
; and status 2 | |
ldi r19, 157 | |
ldi r16, 0xaa | |
ldi r17, 0x55 | |
and r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; and status 14 | |
ldi r19, 158 | |
ldi r16, 0x80 | |
ldi r17, 0x80 | |
and r16, r17 | |
ldi r20, 0x14 | |
ldi r21, 0x80 | |
rcall test | |
; or status 0 | |
ldi r19, 159 | |
ldi r16, 0x01 | |
ldi r17, 0x03 | |
or r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x03 | |
rcall test | |
; or status 2 | |
ldi r19, 160 | |
ldi r16, 0x00 | |
ldi r17, 0x00 | |
or r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; or status 14 | |
ldi r19, 161 | |
ldi r16, 0x80 | |
ldi r17, 0x01 | |
or r16, r17 | |
ldi r20, 0x14 | |
ldi r21, 0x81 | |
rcall test | |
; eor status 0 | |
ldi r19, 162 | |
ldi r16, 0x01 | |
ldi r17, 0x03 | |
eor r16, r17 | |
ldi r20, 0x00 | |
ldi r21, 0x02 | |
rcall test | |
; eor status 2 | |
ldi r19, 163 | |
ldi r16, 0xaa | |
ldi r17, 0xaa | |
eor r16, r17 | |
ldi r20, 0x02 | |
ldi r21, 0x00 | |
rcall test | |
; eor status 14 | |
ldi r19, 164 | |
ldi r16, 0xaa | |
ldi r17, 0x55 | |
eor r16, r17 | |
ldi r20, 0x14 | |
ldi r21, 0xff | |
rcall test | |
rjmp success |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment