📄 hello.lst
字号:
251 ;-------------------------------------------------------- 252 ; overlayable items in internal ram 253 ;-------------------------------------------------------- 254 .area OSEG (OVR,DATA) 255 .area OSEG (OVR,DATA) 256 ;-------------------------------------------------------- 257 ; Stack segment in internal ram 258 ;-------------------------------------------------------- 259 .area SSEG (DATA) 0000 260 __start__stack: 0000 261 .ds 1 262 263 ;-------------------------------------------------------- 264 ; indirectly addressable internal ram data 265 ;-------------------------------------------------------- 266 .area ISEG (DATA) 267 ;-------------------------------------------------------- 268 ; bit data 269 ;-------------------------------------------------------- 270 .area BSEG (BIT) 271 ;-------------------------------------------------------- 272 ; paged external ram data 273 ;-------------------------------------------------------- 274 .area PSEG (PAG,XDATA) 275 ;-------------------------------------------------------- 276 ; external ram data 277 ;-------------------------------------------------------- 278 .area XSEG (XDATA) 279 ;-------------------------------------------------------- 280 ; external initialized ram data 281 ;-------------------------------------------------------- 282 .area XISEG (XDATA) 283 .area HOME (CODE) 284 .area GSINIT0 (CODE) 285 .area GSINIT1 (CODE) 286 .area GSINIT2 (CODE) 287 .area GSINIT3 (CODE) 288 .area GSINIT4 (CODE) 289 .area GSINIT5 (CODE) 290 .area GSINIT (CODE) 291 .area GSFINAL (CODE) 292 .area CSEG (CODE) 293 ;-------------------------------------------------------- 294 ; interrupt vector 295 ;-------------------------------------------------------- 296 .area HOME (CODE) 0000 297 __interrupt_vect: 0000 02s00r00 298 ljmp __sdcc_gsinit_startup 299 ;-------------------------------------------------------- 300 ; global & static initialisations 301 ;-------------------------------------------------------- 302 .area HOME (CODE) 303 .area GSINIT (CODE) 304 .area GSFINAL (CODE) 305 .area GSINIT (CODE) 306 .globl __sdcc_gsinit_startup 307 .globl __sdcc_program_startup 308 .globl __start__stack 309 .globl __mcs51_genXINIT 310 .globl __mcs51_genXRAMCLEAR 311 .globl __mcs51_genRAMCLEAR 312 .area GSFINAL (CODE) 0000 02s00r00 313 ljmp __sdcc_program_startup 314 ;-------------------------------------------------------- 315 ; Home 316 ;-------------------------------------------------------- 317 .area HOME (CODE) 318 .area CSEG (CODE) 0000 319 __sdcc_program_startup: 0000 12s00r33 320 lcall _main 321 ; return from main will lock up 0003 80 FE 322 sjmp . 323 ;-------------------------------------------------------- 324 ; code 325 ;-------------------------------------------------------- 326 .area CSEG (CODE) 327 ;------------------------------------------------------------ 328 ;Allocation info for local variables in function 'uart_init' 329 ;------------------------------------------------------------ 330 ;------------------------------------------------------------ 331 ; hello.c:5: void uart_init(void) 332 ; ----------------------------------------- 333 ; function uart_init 334 ; ----------------------------------------- 0005 335 _uart_init: 0002 336 ar2 = 0x02 0003 337 ar3 = 0x03 0004 338 ar4 = 0x04 0005 339 ar5 = 0x05 0006 340 ar6 = 0x06 0007 341 ar7 = 0x07 0000 342 ar0 = 0x00 0001 343 ar1 = 0x01 344 ; hello.c:7: SCON = 0x50; 345 ; genAssign 0005 75 98 50 346 mov _SCON,#0x50 347 ; hello.c:8: HIGH_NIBBLE_SET(TMOD, 2); 348 ; genAnd 0008 74 0F 349 mov a,#0x0F 000A 55 89 350 anl a,_TMOD 351 ; genOr 000C 44 20 352 orl a,#0x20 000E F5 89 353 mov _TMOD,a 354 ; hello.c:9: TH1 = 253; 355 ; genAssign 0010 75 8D FD 356 mov _TH1,#0xFD 357 ; hello.c:10: PCON |= 0x80; 358 ; genOr 0013 43 87 80 359 orl _PCON,#0x80 360 ; hello.c:11: ES = 0; 361 ; genAssign 0016 C2 AC 362 clr _ES 363 ; hello.c:12: TR1 = 1; 364 ; genAssign 0018 D2 8E 365 setb _TR1 366 ; Peephole 300 removed redundant label 00101$ 001A 22 367 ret 368 ;------------------------------------------------------------ 369 ;Allocation info for local variables in function 'putchar' 370 ;------------------------------------------------------------ 371 ;c Allocated to registers r2 372 ;------------------------------------------------------------ 373 ; hello.c:15: void putchar(char c) 374 ; ----------------------------------------- 375 ; function putchar 376 ; ----------------------------------------- 001B 377 _putchar: 378 ; genReceive 001B AA 82 379 mov r2,dpl 380 ; hello.c:17: TI = 0; 381 ; genAssign 001D C2 99 382 clr _TI 383 ; hello.c:18: SBUF = c; 384 ; genAssign 001F 8A 99 385 mov _SBUF,r2 386 ; hello.c:19: while(!TI) 0021 387 00101$: 388 ; genIfx 389 ; genIfxJump 390 ; Peephole 108.d removed ljmp by inverse jump logic 0021 30 99 FD 391 jnb _TI,00101$ 392 ; Peephole 300 removed redundant label 00107$ 393 ; Peephole 300 removed redundant label 00104$ 0024 22 394 ret 395 ;------------------------------------------------------------ 396 ;Allocation info for local variables in function 'delay' 397 ;------------------------------------------------------------ 398 ;i Allocated to registers r2 r3 399 ;------------------------------------------------------------ 400 ; hello.c:23: void delay(void) 401 ; ----------------------------------------- 402 ; function delay 403 ; ----------------------------------------- 0025 404 _delay: 405 ; hello.c:26: for(i=0;i<30000;i++) 406 ; genAssign 0025 7A 30 407 mov r2,#0x30 0027 7B 75 408 mov r3,#0x75 0029 409 00103$: 410 ; genMinus 411 ; genMinusDec 0029 1A 412 dec r2 002A BA FF 01 413 cjne r2,#0xff,00109$ 002D 1B 414 dec r3 002E 415 00109$: 416 ; genIfx 002E EA 417 mov a,r2 002F 4B 418 orl a,r3 419 ; genIfxJump 420 ; Peephole 108.b removed ljmp by inverse jump logic 0030 70 F7 421 jnz 00103$ 422 ; Peephole 300 removed redundant label 00110$ 423 ; Peephole 300 removed redundant label 00104$ 0032 22 424 ret 425 ;------------------------------------------------------------ 426 ;Allocation info for local variables in function 'main' 427 ;------------------------------------------------------------ 428 ;------------------------------------------------------------ 429 ; hello.c:30: void main() 430 ; ----------------------------------------- 431 ; function main 432 ; ----------------------------------------- 0033 433 _main: 434 ; hello.c:32: IE = 0; 435 ; genAssign 0033 75 A8 00 436 mov _IE,#0x00 437 ; hello.c:33: P0 = P1 = 0xff; 438 ; genAssign 0036 75 90 FF 439 mov _P1,#0xFF 440 ; genAssign 0039 75 80 FF 441 mov _P0,#0xFF 442 ; hello.c:34: uart_init(); 443 ; genCall 003C 12s00r05 444 lcall _uart_init 445 ; hello.c:35: while(1) { 003F 446 00102$: 447 ; hello.c:36: printf("hello world p2 = %d p3 = %d\r\n",P2,P3); 448 ; genCast 003F AA B0 449 mov r2,_P3 0041 7B 00 450 mov r3,#0x00 451 ; genCast 0043 AC A0 452 mov r4,_P2 0045 7D 00 453 mov r5,#0x00 454 ; genIpush 0047 C0 02 455 push ar2 0049 C0 03 456 push ar3 457 ; genIpush 004B C0 04 458 push ar4 004D C0 05 459 push ar5 460 ; genIpush 004F 74r00 461 mov a,#__str_0 0051 C0 E0 462 push acc 0053 74s00 463 mov a,#(__str_0 >> 8) 0055 C0 E0 464 push acc 0057 74 80 465 mov a,#0x80 0059 C0 E0 466 push acc 467 ; genCall 005B 12s00r00 468 lcall _printf 005E E5 81 469 mov a,sp 0060 24 F9 470 add a,#0xf9 0062 F5 81 471 mov sp,a 472 ; hello.c:37: P1 = P2; 473 ; genAssign 0064 85 A0 90 474 mov _P1,_P2 475 ; hello.c:38: P1_0 ^= 1; 476 ; genXor 0067 B2 90 477 cpl _P1_0 478 ; hello.c:39: P0_0 ^= 1; 479 ; genXor 0069 B2 80 480 cpl _P0_0 481 ; hello.c:40: delay(); 482 ; genCall 006B 12s00r25 483 lcall _delay 484 ; Peephole 112.b changed ljmp to sjmp 006E 80 CF 485 sjmp 00102$ 486 ; Peephole 259.a removed redundant label 00104$ and ret 487 ; 488 .area CSEG (CODE) 489 .area CONST (CODE) 0000 490 __str_0: 0000 68 65 6C 6C 6F 20 491 .ascii "hello world p2 = %d p3 = %d" 77 6F 72 6C 64 20 70 32 20 3D 20 25 64 20 70 33 20 3D 20 25 64 001B 0D 492 .db 0x0D 001C 0A 493 .db 0x0A 001D 00 494 .db 0x00 495 .area XINIT (CODE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -