📄 gui.s
字号:
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+49
ldd R3,z+50
ldd R4,z+51
ldd R5,z+52
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlt L73
.dbline 514
; GUI_Point(draw_x5, draw_y5, color); // 180度
std y+0,R10
movw R30,R28
ldd R18,z+17
movw R30,R28
ldd R16,z+49
xcall _GUI_Point
L73:
.dbline 515
; if(1==r)
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
subi R30,149 ; addi 107
sbci R31,255
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L75
.dbline 516
; return; // 若半径为1,则已圆画完
xjmp L64
L75:
.dbline 519
;
; /* 使用Bresenham法进行画圆 */
; di = 3 - 2*r; // 初始化决策变量
movw R30,R28
subi R30,149 ; addi 107
sbci R31,255
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,2
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
ldi R20,3
ldi R21,0
ldi R22,0
ldi R23,0
sub R20,R16
sbc R21,R17
sbc R22,R18
sbc R23,R19
movw R30,R28
subi R30,183 ; addi 73
sbci R31,255
std z+0,R20
std z+1,R21
std z+2,R22
std z+3,R23
.dbline 521
;
; xx = 0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+1,R20
std z+2,R21
std z+3,R22
std z+4,R23
.dbline 522
; yy = r;
movw R30,R28
subi R30,149 ; addi 107
sbci R31,255
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
movw R30,R28
subi R30,187 ; addi 69
sbci R31,255
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
xjmp L78
L77:
.dbline 524
; while(xx<yy)
; {
.dbline 525
; if(di<0)
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
subi R30,183 ; addi 73
sbci R31,255
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brge L80
.dbline 526
; {
.dbline 527
; di += 4*xx + 6;
movw R30,R28
ldd R2,z+1
ldd R3,z+2
ldd R4,z+3
ldd R5,z+4
ldi R20,4
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,6
ldi R21,0
ldi R22,0
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
subi R30,183 ; addi 73
sbci R31,255
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R30,R28
subi R30,183 ; addi 73
sbci R31,255
std z+0,R6
std z+1,R7
std z+2,R8
std z+3,R9
.dbline 528
; }
xjmp L81
L80:
.dbline 530
; else
; {
.dbline 531
; di += 4*(xx - yy) + 10;
movw R30,R28
subi R30,187 ; addi 69
sbci R31,255
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
movw R30,R28
ldd R6,z+1
ldd R7,z+2
ldd R8,z+3
ldd R9,z+4
sub R6,R2
sbc R7,R3
sbc R8,R4
sbc R9,R5
ldi R20,4
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R9
st -y,R8
st -y,R7
st -y,R6
movw R16,R20
movw R18,R22
xcall empy32s
movw R2,R16
movw R4,R18
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
subi R30,183 ; addi 73
sbci R31,255
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R30,R28
subi R30,183 ; addi 73
sbci R31,255
std z+0,R6
std z+1,R7
std z+2,R8
std z+3,R9
.dbline 533
;
; yy--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
subi R30,187 ; addi 69
sbci R31,255
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
subi R30,187 ; addi 69
sbci R31,255
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 534
; draw_y0--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+37
ldd R3,z+38
ldd R4,z+39
ldd R5,z+40
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+37,R2
std z+38,R3
std z+39,R4
std z+40,R5
.dbline 535
; draw_y1--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+53
ldd R3,z+54
ldd R4,z+55
ldd R5,z+56
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+53,R2
std z+54,R3
std z+55,R4
std z+56,R5
.dbline 536
; draw_y2++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+41
ldd R3,z+42
ldd R4,z+43
ldd R5,z+44
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+41,R2
std z+42,R3
std z+43,R4
std z+44,R5
.dbline 537
; draw_y3++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+57
ldd R3,z+58
ldd R4,z+59
ldd R5,z+60
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+57,R2
std z+58,R3
std z+59,R4
std z+60,R5
.dbline 538
; draw_x4--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+45
ldd R3,z+46
ldd R4,z+47
ldd R5,z+48
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+45,R2
std z+46,R3
std z+47,R4
std z+48,R5
.dbline 539
; draw_x5++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+49
ldd R3,z+50
ldd R4,z+51
ldd R5,z+52
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+49,R2
std z+50,R3
std z+51,R4
std z+52,R5
.dbline 540
; draw_x6--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
adiw R30,61
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
adiw R30,61
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 541
; draw_x7++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
subi R30,191 ; addi 65
sbci R31,255
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
subi R30,191 ; addi 65
sbci R31,255
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 542
; }
L81:
.dbline 544
;
; xx++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+1
ldd R3,z+2
ldd R4,z+3
ldd R5,z+4
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+1,R2
std z+2,R3
std z+3,R4
std z+4,R5
.dbline 545
; draw_x0++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+5
ldd R3,z+6
ldd R4,z+7
ldd R5,z+8
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+5,R2
std z+6,R3
std z+7,R4
std z+8,R5
.dbline 546
; draw_x1--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+21
ldd R3,z+22
ldd R4,z+23
ldd R5,z+24
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+21,R2
std z+22,R3
std z+23,R4
std z+24,R5
.dbline 547
; draw_x2++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+9
ldd R3,z+10
ldd R4,z+11
ldd R5,z+12
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+9,R2
std z+10,R3
std z+11,R4
std z+12,R5
.dbline 548
; draw_x3--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+25
ldd R3,z+26
ldd R4,z+27
ldd R5,z+28
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+25,R2
std z+26,R3
std z+27,R4
std z+28,R5
.dbline 549
; draw_y4++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+13
ldd R3,z+14
ldd R4,z+15
ldd R5,z+16
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+13,R2
std z+14,R3
std z+15,R4
std z+16,R5
.dbline 550
; draw_y5++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+17
ldd R3,z+18
ldd R4,z+19
ldd R5,z+20
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+17,R2
std z+18,R3
std z+19,R4
std z+20,R5
.dbline 551
; draw_y6--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+29
ldd R3,z+30
ldd R4,z+31
ldd R5,z+32
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+29,R2
std z+30,R3
std z+31,R4
std z+32,R5
.dbline 552
; draw_y7--;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+33
ldd R3,z+34
ldd R4,z+35
ldd R5,z+36
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+33,R2
std z+34,R3
std z+35,R4
std z+36,R5
.dbline 555
;
; /* 要判断当前点是否在有效范围内 */
; if( (draw_x0<=GUI_LCM_XMAX)&&(draw_y0>=0) )
ldi R20,128
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+5
ldd R3,z+6
ldd R4,z+7
ldd R5,z+8
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brlt L82
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+37
ldd R3,z+38
ldd R4,z+39
ldd R5,z+40
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlt L82
.dbline 556
; {
.dbline 557
; GUI_Point(draw_x0, draw_y0, color);
std y+0,R10
movw R30,R28
ldd R18,z+37
movw R30,R28
ldd R16,z+5
xcall _GUI_Point
.dbline 558
; }
L82:
.dbline 559
; if( (draw_x1>=0)&&(draw_y1>=0) )
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+21
ldd R3,z+22
ldd R4,z+23
ldd R5,z+24
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlt L84
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+53
ldd R3,z+54
ldd R4,z+55
ldd R5,z+56
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlt L84
.dbline 560
; {
.dbline 561
; GUI_Point(draw_x1, draw_y1, color);
std y+0,R10
movw R30,R28
ldd R18,z+53
movw R30,R28
ldd R16,z+21
xcall _GUI_Point
.dbline 562
; }
L84:
.dbline 563
; if( (draw_x2<=GUI_LCM_XMAX)&&(draw_y2<=GUI_LCM_YMAX) )
ldi R20,128
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+9
ldd R3,z+10
ldd R4,z+11
ldd R5,z+12
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brlt L86
ldi R20,64
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+41
ldd R3,z+42
ldd R4,z+43
ldd R5,z+44
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brlt L86
.dbline 564
; {
.dbline 565
; GUI_Point(draw_x2, draw_y2, color);
std y+0,R10
movw R30,R28
ldd R18,z+41
movw R30,R28
ldd R16,z+9
xcall _GUI_Point
.dbline 566
; }
L86:
.dbline 567
; if( (draw_x3>=0)&&(draw_y3<=GUI_LCM_YMAX) )
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+25
ldd R3,z+26
ldd R4,z+27
ldd R5,z+28
cp R2,R20
cpc R3,R21
cpc R4,R22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -