📄 m128.lst
字号:
1231 E083 LDI R24,3
1232 2EE8 MOV R14,R24
1233 C00F RJMP 0x1243
(0110) {*p++=~char24x24[z++];}
1234 0116 MOVW R2,R12
1235 01C1 MOVW R24,R2
1236 9601 ADIW R24,1
1237 016C MOVW R12,R24
1238 E98A LDI R24,0x9A
1239 E09B LDI R25,0xB
123A 01F1 MOVW R30,R2
123B 0FE8 ADD R30,R24
123C 1FF9 ADC R31,R25
123D 91E4 LPM R30,0(Z)
123E 95E0 COM R30
123F 01DB MOVW R26,R22
1240 93ED ST R30,X+
1241 01BD MOVW R22,R26
1242 94EA DEC R14
1243 2422 CLR R2
1244 142E CP R2,R14
1245 F370 BCS 0x1234
(0111) }
(0112) y++;
1246 840C LDD R0,12+Y
1247 9403 INC R0
1248 860C STD R0,12+Y
(0113) p=&ADDR_0+y*bytes_1line+x;
1249 E480 LDI R24,0x40
124A 9D80 MUL R24,R0
124B 01C0 MOVW R24,R0
124C 856A LDD R22,10+Y
124D 2777 CLR R23
124E 0F68 ADD R22,R24
124F 1F79 ADC R23,R25
1250 954A DEC R20
1251 2422 CLR R2
1252 1624 CP R2,R20
1253 F408 BCC 0x1255
1254 CFB4 RJMP 0x1209
(0114) }
(0115) A17_A16_low
1255 91800062 LDS R24,0x62
1257 7F8C ANDI R24,0xFC
1258 93800062 STS 0x62,R24
(0116) }
125A 940E523A CALL pop_gset5
125C 9624 ADIW R28,4
125D 9508 RET
_picture:
m --> Y+1
i --> R22
q --> R14
p --> R20
z --> R10
j --> R6
b --> Y+12
a --> R12
y --> R4
x --> R16
125E 940E522D CALL push_gset5
1260 2E42 MOV R4,R18
1261 84CA LDD R12,10+Y
(0117)
(0118) void picture(unsigned char x,unsigned char y,unsigned char a,unsigned char b)
(0119) { unsigned char *p,*q,i,j,m;
(0120) unsigned int z=0;
1262 24AA CLR R10
1263 24BB CLR R11
(0121)
(0122) p=&ADDR_0+y*bytes_1line+x; //起始定位
1264 E480 LDI R24,0x40
1265 9D84 MUL R24,R4
1266 01C0 MOVW R24,R0
1267 2F40 MOV R20,R16
1268 2755 CLR R21
1269 0F48 ADD R20,R24
126A 1F59 ADC R21,R25
(0123) A17_high //选择外部显示Ram
126B 91800062 LDS R24,0x62
126D 6082 ORI R24,2
126E 93800062 STS 0x62,R24
(0124)
(0125) for (i=b;i>0;i--)
1270 856C LDD R22,12+Y
1271 C044 RJMP 0x12B6
(0126) {if (y<lines_4kSram)
1272 2D84 MOV R24,R4
1273 3484 CPI R24,0x44
1274 F520 BCC 0x1299
(0127) {SRAM_32k
1275 9180006C LDS R24,0x6C
1277 6081 ORI R24,1
1278 9380006C STS 0x6C,R24
127A 98AF CBI P15,7
(0128) q=p+32*1024;
127B 01CA MOVW R24,R20
127C 5080 SUBI R24,0
127D 4890 SBCI R25,0x80
127E 017C MOVW R14,R24
(0129) for (j=a;j>0;j--)
127F 2C6C MOV R6,R12
1280 C00F RJMP 0x1290
(0130) {*q++=~pictureTab[z++];}
1281 0115 MOVW R2,R10
1282 01C1 MOVW R24,R2
1283 9601 ADIW R24,1
1284 015C MOVW R10,R24
1285 EF8A LDI R24,0xFA
1286 E09E LDI R25,0xE
1287 01F1 MOVW R30,R2
1288 0FE8 ADD R30,R24
1289 1FF9 ADC R31,R25
128A 91E4 LPM R30,0(Z)
128B 95E0 COM R30
128C 01D7 MOVW R26,R14
128D 93ED ST R30,X+
128E 017D MOVW R14,R26
128F 946A DEC R6
1290 2422 CLR R2
1291 1426 CP R2,R6
1292 F370 BCS 0x1281
(0131) SRAM_64k
1293 9180006C LDS R24,0x6C
1295 7F8E ANDI R24,0xFE
1296 9380006C STS 0x6C,R24
(0132) }
1298 C014 RJMP 0x12AD
(0133) else {for (j=a;j>0;j--)
1299 2C6C MOV R6,R12
129A C00F RJMP 0x12AA
(0134) {*p++=~pictureTab[z++];}
129B 0115 MOVW R2,R10
129C 01C1 MOVW R24,R2
129D 9601 ADIW R24,1
129E 015C MOVW R10,R24
129F EF8A LDI R24,0xFA
12A0 E09E LDI R25,0xE
12A1 01F1 MOVW R30,R2
12A2 0FE8 ADD R30,R24
12A3 1FF9 ADC R31,R25
12A4 91E4 LPM R30,0(Z)
12A5 95E0 COM R30
12A6 01DA MOVW R26,R20
12A7 93ED ST R30,X+
12A8 01AD MOVW R20,R26
12A9 946A DEC R6
12AA 2422 CLR R2
12AB 1426 CP R2,R6
12AC F370 BCS 0x129B
(0135) }
(0136) y++;
12AD 9443 INC R4
(0137) p=&ADDR_0+y*bytes_1line+x;
12AE E480 LDI R24,0x40
12AF 9D84 MUL R24,R4
12B0 01C0 MOVW R24,R0
12B1 2F40 MOV R20,R16
12B2 2755 CLR R21
12B3 0F48 ADD R20,R24
12B4 1F59 ADC R21,R25
12B5 956A DEC R22
12B6 2422 CLR R2
12B7 1626 CP R2,R22
12B8 F408 BCC 0x12BA
12B9 CFB8 RJMP 0x1272
(0138) }
(0139) A17_A16_low
12BA 91800062 LDS R24,0x62
12BC 7F8C ANDI R24,0xFC
12BD 93800062 STS 0x62,R24
(0140) }
12BF 940E523A CALL pop_gset5
12C1 9508 RET
_Line:
q --> R12
data --> R20
p --> R22
i --> R10
z --> Y+12
y --> R14
x --> R18
n --> R16
12C2 940E522D CALL push_gset5
12C4 84EA LDD R14,10+Y
(0141)
(0142) void Line(unsigned char n,unsigned char x,unsigned char y,unsigned char z)
(0143) { unsigned char i,data,*p,*q;
(0144)
(0145) p=&ADDR_0+y*bytes_1line+x; //起始定位
12C5 E480 LDI R24,0x40
12C6 9D8E MUL R24,R14
12C7 01C0 MOVW R24,R0
12C8 2F62 MOV R22,R18
12C9 2777 CLR R23
12CA 0F68 ADD R22,R24
12CB 1F79 ADC R23,R25
(0146) q=p+32*1024;
12CC 01CB MOVW R24,R22
12CD 5080 SUBI R24,0
12CE 4890 SBCI R25,0x80
12CF 016C MOVW R12,R24
(0147) A17_high //选择外部显示Ram
12D0 91800062 LDS R24,0x62
12D2 6082 ORI R24,2
12D3 93800062 STS 0x62,R24
(0148)
(0149) if (n==1)
12D5 3001 CPI R16,1
12D6 F539 BNE 0x12FE
(0150) //竖线
(0151) {data=0xfe;
12D7 EF4E LDI R20,0xFE
(0152) for (i=z;i>0;i--)
12D8 84AC LDD R10,12+Y
12D9 C020 RJMP 0x12FA
(0153) {if (y<lines_4kSram)
12DA 2D8E MOV R24,R14
12DB 3484 CPI R24,0x44
12DC F490 BCC 0x12EF
(0154) {SRAM_32k
12DD 9180006C LDS R24,0x6C
12DF 6081 ORI R24,1
12E0 9380006C STS 0x6C,R24
12E2 98AF CBI P15,7
(0155) q=p+32*1024;
12E3 01CB MOVW R24,R22
12E4 5080 SUBI R24,0
12E5 4890 SBCI R25,0x80
12E6 016C MOVW R12,R24
(0156) *q=data;
12E7 01FC MOVW R30,R24
12E8 8340 STD R20,0+Z
(0157) SRAM_64k
12E9 9180006C LDS R24,0x6C
12EB 7F8E ANDI R24,0xFE
12EC 9380006C STS 0x6C,R24
(0158) }
12EE C002 RJMP 0x12F1
(0159) else *p=data;
12EF 01FB MOVW R30,R22
12F0 8340 STD R20,0+Z
(0160) y++;
12F1 94E3 INC R14
(0161) p=&ADDR_0+y*bytes_1line+x;
12F2 E480 LDI R24,0x40
12F3 9D8E MUL R24,R14
12F4 01C0 MOVW R24,R0
12F5 2F62 MOV R22,R18
12F6 2777 CLR R23
12F7 0F68 ADD R22,R24
12F8 1F79 ADC R23,R25
12F9 94AA DEC R10
12FA 2422 CLR R2
12FB 142A CP R2,R10
12FC F2E8 BCS 0x12DA
(0162) }
(0163) }
12FD C022 RJMP 0x1320
(0164) else //横线
(0165) {data=0x00;
12FE 2744 CLR R20
(0166) if (y<lines_4kSram)
12FF 2D8E MOV R24,R14
1300 3484 CPI R24,0x44
1301 F4A8 BCC 0x1317
(0167) {SRAM_32k
1302 9180006C LDS R24,0x6C
1304 6081 ORI R24,1
1305 9380006C STS 0x6C,R24
1307 98AF CBI P15,7
(0168) for (i=z;i>0;i--) *q++=data;
1308 84AC LDD R10,12+Y
1309 C004 RJMP 0x130E
130A 01F6 MOVW R30,R12
130B 9341 ST R20,Z+
130C 016F MOVW R12,R30
130D 94AA DEC R10
130E 2422 CLR R2
130F 142A CP R2,R10
1310 F3C8 BCS 0x130A
(0169) SRAM_64k}
1311 9180006C LDS R24,0x6C
1313 7F8E ANDI R24,0xFE
1314 9380006C STS 0x6C,R24
1316 C009 RJMP 0x1320
(0170) else for (i=z;i>0;i--) *p++=data;
1317 84AC LDD R10,12+Y
1318 C004 RJMP 0x131D
1319 01FB MOVW R30,R22
131A 9341 ST R20,Z+
131B 01BF MOVW R22,R30
131C 94AA DEC R10
131D 2422 CLR R2
131E 142A CP R2,R10
131F F3C8 BCS 0x1319
(0171) }
(0172) A17_A16_low
1320 91800062 LDS R24,0x62
1322 7F8C ANDI R24,0xFC
1323 93800062 STS 0x62,R24
(0173) }
1325 940E523A CALL pop_gset5
1327 9508 RET
(0174)
(0175) void movx(unsigned char *address,unsigned char data)
(0176) {if (address>=(&EXTERN_0))
_movx:
data --> R18
address --> R16
1328 3000 CPI R16,0
1329 E1E1 LDI R30,0x11
132A 071E CPC R17,R30
132B F018 BCS 0x132F
(0177) *address=data;
132C 01F8 MOVW R30,R16
132D 8320 STD R18,0+Z
132E C00F RJMP 0x133E
(0178) else { SRAM_32k
132F 9180006C LDS R24,0x6C
1331 6081 ORI R24,1
1332 9380006C STS 0x6C,R24
1334 98AF CBI P15,7
(0179) address=address+32*1024;
1335 5000 SUBI R16,0
1336 4810 SBCI R17,0x80
(0180) *address=data;
1337 01F8 MOVW R30,R16
1338 8320 STD R18,0+Z
(0181) SRAM_64k}
1339 9180006C LDS R24,0x6C
133B 7F8E ANDI R24,0xFE
133C 9380006C STS 0x6C,R24
(0182) }
133E 9508 RET
_kuang:
i --> R22
p --> R10
j --> R14
b --> R12
a --> Y+14
y --> Y+12
x --> Y+10
133F 940E51D7 CALL push_arg4
1341 940E522D CALL push_gset5
1343 88C8 LDD R12,16+Y
(0183) void kuang(unsigned char x,unsigned char y,unsigned char a,unsigned char b)
(0184) {unsigned char i,j,*p;
(0185)
(0186) p=&ADDR_0+y*bytes_1line+x; //起始定位
1344 E480 LDI R24,0x40
1345 840C LDD R0,12+Y
1346 9D80 MUL R24,R0
1347 01C0 MOVW R24,R0
1348 84AA LDD R10,10+Y
1349 24BB CLR R11
134A 0EA8 ADD R10,R24
134B 1EB9 ADC R11,R25
(0187) A17_high //选择外部显示Ram
134C 91800062 LDS R24,0x62
134E 6082 ORI R24,2
134F 93800062 STS 0x62,R24
(0188)
(0189) for(i=0;i<b;i++)
1351 2766 CLR R22
1352 C0CB RJMP 0x141E
(0190) {if (i==(b-1))
1353 2D8C MOV R24,R12
1354 5081 SUBI R24,1
1355 1768 CP R22,R24
1356 F529 BNE 0x137C
(0191) {//边框的最后一行
(0192) for (j=0;j<a;j++)
1357 24EE CLR R14
1358 C015 RJMP 0x136E
(0193) {if (j==a-1)
1359 858E LDD R24,14+Y
135A 5081 SUBI R24,1
135B 16E8 CP R14,R24
135C F421 BNE 0x1361
(0194) {movx(p,1);}
135D E021 LDI R18,1
135E 0185 MOVW R16,R10
135F DFC8 RCALL _movx
1360 C009 RJMP 0x136A
(0195) else if (j==0)
1361 20EE TST R14
1362 F421 BNE 0x1367
(0196) {movx(p,0xc0);}
1363 EC20 LDI R18,0xC0
1364 0185 MOVW R16,R10
1365 DFC2 RCALL _movx
1366 C003 RJMP 0x136A
(0197) else {movx(p,0);}
1367 2722 CLR R18
1368 0185 MOVW R16,R10
1369 DFBE RCALL _movx
(0198) p++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -