📄 test.s
字号:
sbiw R28,1
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*一张240×128点阵的全尺寸图片*/
; //};
;
; unsigned char PTSTR[]="Hello ever body,I'm RJ";
;
; void avr_init(void);
;
cpi R20,240
brsh L36
cpi R22,128
brlo L34
L36:
; int main(void)
; {
xjmp L33
L34:
; unsigned char a,b,c,d;
ldi R24,30
mul R24,R22
movw R22,R0
mov R2,R20
clr R3
asr R3
ror R2
asr R3
ror R2
asr R3
ror R2
add R22,R2
adc R23,R3
subi R22,0 ; offset = 768
sbci R23,253
; avr_init();
ldi R24,36
std y+0,R24
movw R18,R22
mov R18,R19
clr R19
mov R16,R22
xcall _Lcd_SendCom2
;
ldd R0,y+5
tst R0
breq L37
; Lcd_PrintText(10,2,PTSTR);
ldi R16,7
sub R16,R20
andi R16,7
ori R16,248
xcall _Lcd_SendCom0
xjmp L38
L37:
;
; Lcd_Line(0,0,239,127,1);
ldi R16,7
sub R16,R20
andi R16,7
ori R16,240
xcall _Lcd_SendCom0
L38:
L33:
adiw R28,1
xcall pop_gset2
.dbline 0 ; func end
ret
; t -> R20,R21
; dy -> R22,R23
; dx -> R10,R11
; e -> R12,R13
; draw -> R14
; y2 -> y+17
; x2 -> y+15
; y1 -> y+13
; x1 -> y+11
.even
_Lcd_Line::
xcall push_arg4
xcall push_gset5
sbiw R28,1
ldd R14,y+19
; Lcd_Line(0,127,239,0,1);
; Lcd_Line(0,64,239,64,1);
; Lcd_Line(120,0,120,127,1);
; Lcd_Circle(120,64,30,1);
; Lcd_Box(2,2,237,125,1,0);
; Lcd_Box(110,54,130,74,1,1);
; Lcd_Box(115,59,125,69,0,1);
; Lcd_Point(0,0,1);
; a=75;
; b=1;
ldd R0,y+11
ldd R16,y+15
cp R0,R16
brne L40
;
; c=5;
ldd R0,y+17
ldd R16,y+13
cp R0,R16
brsh L42
ldi R24,-1
ldi R25,-1
movw R12,R24
xjmp L47
L42:
; d=64;
ldi R24,1
ldi R25,0
movw R12,R24
xjmp L47
L44:
std y+0,R14
ldd R18,y+13
ldd R16,y+11
xcall _Lcd_Point
L45:
ldd R2,y+13
clr R3
add R2,R12
adc R3,R13
std y+13,R2
L47:
; Lcd_Box(4,63,116,120,1,0);
ldd R0,y+13
ldd R16,y+17
cp R0,R16
brne L44
;
std y+0,R14
mov R18,R0
ldd R16,y+11
xcall _Lcd_Point
; while(1)
xjmp L39
L40:
; {
; Lcd_Line(a,14,a,26,b);
; if (LCD_X_MAX-8==a++) {a=75;b= 1-b;}
ldd R0,y+13
ldd R16,y+17
cp R0,R16
brne L48
;
; if (c<115)
ldd R0,y+15
ldd R16,y+11
cp R0,R16
brsh L50
ldi R24,-1
ldi R25,-1
movw R12,R24
xjmp L55
L50:
; {
ldi R24,1
ldi R25,0
movw R12,R24
xjmp L55
L52:
std y+0,R14
ldd R18,y+13
ldd R16,y+11
xcall _Lcd_Point
L53:
ldd R2,y+11
clr R3
add R2,R12
adc R3,R13
std y+11,R2
L55:
; Lcd_Line(c,d,120-c,183-d,1);
ldd R0,y+11
ldd R16,y+15
cp R0,R16
brne L52
; delay_us(250);
std y+0,R14
ldd R18,y+13
mov R16,R0
xcall _Lcd_Point
; Lcd_Line(c,d,120-c,183-d,0);
xjmp L39
L48:
; c++;
; }
; else
ldd R2,y+11
clr R3
ldd R10,y+15
clr R11
sub R10,R2
sbc R11,R3
; {
movw R24,R10
cpi R24,0
ldi R30,0
cpc R25,R30
brge L56
; Lcd_Line(c,d,120-c,183-d,1);
; delay_us(250);
mov R20,R2
clr R21
ldd R0,y+15
std y+11,R0
std y+15,R20
; Lcd_Line(c,d,120-c,183-d,0);
ldd R20,y+13
clr R21
ldd R0,y+17
std y+13,R0
std y+17,R20
; d++;
com R24
com R25
subi R24,0xFF
sbci R25,0xFF
movw R10,R24
; if (d>=120) {d=64;c=5;}
L56:
; }
; }
ldd R2,y+13
clr R3
ldd R22,y+17
clr R23
sub R22,R2
sbc R23,R3
; }
clr R2
cp R2,R22
cpc R3,R23
brge L58
;
; void avr_init(void)
ldi R20,1
ldi R21,0
; {
xjmp L59
L58:
; Lcd_Setup();
; Lcd_Init();
; return;
ldi R20,-1
ldi R21,-1
; }
com R22
com R23
subi R22,0xFF
sbci R23,0xFF
; }
L59:
; }
; }
std y+0,R14
ldd R18,y+13
ldd R16,y+11
xcall _Lcd_Point
; }
cp R10,R22
cpc R11,R23
brlt L60
; }
; }
movw R2,R10
asr R3
ror R2
movw R12,R22
sub R12,R2
sbc R13,R3
xjmp L63
L62:
; }
; }
; }
clr R2
clr R3
cp R2,R12
cpc R3,R13
brge L65
; }
; }
ldd R2,y+13
clr R3
add R2,R20
adc R3,R21
std y+13,R2
; }
sub R12,R10
sbc R13,R11
; }
L65:
ldd R0,y+11
inc R0
std y+11,R0
add R12,R22
adc R13,R23
std y+0,R14
ldd R18,y+13
mov R16,R0
xcall _Lcd_Point
L63:
ldd R0,y+11
ldd R16,y+15
cp R0,R16
brne L62
; }
; }
; }
; }
; }
xjmp L61
L60:
; }
; }
; }
movw R2,R22
asr R3
ror R2
movw R12,R10
sub R12,R2
sbc R13,R3
xjmp L68
L67:
; }
; }
; }
clr R2
clr R3
cp R2,R12
cpc R3,R13
brge L70
; }
; }
ldd R0,y+11
inc R0
std y+11,R0
; }
sub R12,R22
sbc R13,R23
; }
L70:
ldd R2,y+13
clr R3
add R2,R20
adc R3,R21
std y+13,R2
add R12,R10
adc R13,R11
std y+0,R14
mov R18,R2
ldd R16,y+11
xcall _Lcd_Point
L68:
ldd R0,y+13
ldd R16,y+17
cp R0,R16
brne L67
; }
; }
; }
; }
; }
L61:
L39:
adiw R28,1
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
; p -> R20,R21
; yc -> R22,R23
; xc -> R10,R11
; draw -> R12
; r -> y+15
; y -> R14
; x -> y+11
.even
_Lcd_Circle::
xcall push_arg4
xcall push_gset5
mov R14,R18
sbiw R28,1
ldd R12,y+17
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
clr R10
clr R11
; }
; }
; }
ldd R22,y+15
clr R23
; }
mov R2,R22
clr R3
lsl R2
rol R3
ldi R20,3
ldi R21,0
sub R20,R2
sbc R21,R3
xjmp L74
L73:
; }
; }
; }
std y+0,R12
mov R18,R14
clr R19
add R18,R22
adc R19,R23
ldd R16,y+11
clr R17
add R16,R10
adc R17,R11
xcall _Lcd_Point
; }
std y+0,R12
mov R18,R14
clr R19
sub R18,R22
sbc R19,R23
ldd R16,y+11
clr R17
add R16,R10
adc R17,R11
xcall _Lcd_Point
; }
std y+0,R12
mov R18,R14
clr R19
add R18,R22
adc R19,R23
ldd R16,y+11
clr R17
sub R16,R10
sbc R17,R11
xcall _Lcd_Point
; }
std y+0,R12
mov R18,R14
clr R19
sub R18,R22
sbc R19,R23
ldd R16,y+11
clr R17
sub R16,R10
sbc R17,R11
xcall _Lcd_Point
; }
std y+0,R12
mov R18,R14
clr R19
add R18,R10
adc R19,R11
ldd R16,y+11
clr R17
add R16,R22
adc R17,R23
xcall _Lcd_Point
; }
std y+0,R12
mov R18,R14
clr R19
sub R18,R10
sbc R19,R11
ldd R16,y+11
clr R17
add R16,R22
adc R17,R23
xcall _Lcd_Point
; }
std y+0,R12
mov R18,R14
clr R19
add R18,R10
adc R19,R11
ldd R16,y+11
clr R17
sub R16,R22
sbc R17,R23
xcall _Lcd_Point
; }
std y+0,R12
mov R18,R14
clr R19
sub R18,R10
sbc R19,R11
ldd R16,y+11
clr R17
sub R16,R22
sbc R17,R23
xcall _Lcd_Point
; }
cpi R20,0
ldi R30,0
cpc R21,R30
brge L76
; }
movw R2,R10
movw R24,R2
adiw R24,1
movw R10,R24
movw R24,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -