📄 hello.rst
字号:
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) 0040 260 __start__stack: 0040 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 02 00 03 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) 005C 02 00 5F 313 ljmp __sdcc_program_startup 314 ;-------------------------------------------------------- 315 ; Home 316 ;-------------------------------------------------------- 317 .area HOME (CODE) 318 .area CSEG (CODE) 005F 319 __sdcc_program_startup: 005F 12 00 92 320 lcall _main 321 ; return from main will lock up 0062 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 ; ----------------------------------------- 0064 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 0064 75 98 50 346 mov _SCON,#0x50 347 ; hello.c:8: HIGH_NIBBLE_SET(TMOD, 2); 348 ; genAnd 0067 74 0F 349 mov a,#0x0F 0069 55 89 350 anl a,_TMOD 351 ; genOr 006B 44 20 352 orl a,#0x20 006D F5 89 353 mov _TMOD,a 354 ; hello.c:9: TH1 = 253; 355 ; genAssign 006F 75 8D FD 356 mov _TH1,#0xFD 357 ; hello.c:10: PCON |= 0x80; 358 ; genOr 0072 43 87 80 359 orl _PCON,#0x80 360 ; hello.c:11: ES = 0; 361 ; genAssign 0075 C2 AC 362 clr _ES 363 ; hello.c:12: TR1 = 1; 364 ; genAssign 0077 D2 8E 365 setb _TR1 366 ; Peephole 300 removed redundant label 00101$ 0079 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 ; ----------------------------------------- 007A 377 _putchar: 378 ; genReceive 007A AA 82 379 mov r2,dpl 380 ; hello.c:17: TI = 0; 381 ; genAssign 007C C2 99 382 clr _TI 383 ; hello.c:18: SBUF = c; 384 ; genAssign 007E 8A 99 385 mov _SBUF,r2 386 ; hello.c:19: while(!TI) 0080 387 00101$: 388 ; genIfx 389 ; genIfxJump 390 ; Peephole 108.d removed ljmp by inverse jump logic 0080 30 99 FD 391 jnb _TI,00101$ 392 ; Peephole 300 removed redundant label 00107$ 393 ; Peephole 300 removed redundant label 00104$ 0083 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 ; ----------------------------------------- 0084 404 _delay: 405 ; hello.c:26: for(i=0;i<30000;i++) 406 ; genAssign 0084 7A 30 407 mov r2,#0x30 0086 7B 75 408 mov r3,#0x75 0088 409 00103$: 410 ; genMinus 411 ; genMinusDec 0088 1A 412 dec r2 0089 BA FF 01 413 cjne r2,#0xff,00109$ 008C 1B 414 dec r3 008D 415 00109$: 416 ; genIfx 008D EA 417 mov a,r2 008E 4B 418 orl a,r3 419 ; genIfxJump 420 ; Peephole 108.b removed ljmp by inverse jump logic 008F 70 F7 421 jnz 00103$ 422 ; Peephole 300 removed redundant label 00110$ 423 ; Peephole 300 removed redundant label 00104$ 0091 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 ; ----------------------------------------- 0092 433 _main: 434 ; hello.c:32: IE = 0; 435 ; genAssign 0092 75 A8 00 436 mov _IE,#0x00 437 ; hello.c:33: P0 = P1 = 0xff; 438 ; genAssign 0095 75 90 FF 439 mov _P1,#0xFF 440 ; genAssign 0098 75 80 FF 441 mov _P0,#0xFF 442 ; hello.c:34: uart_init(); 443 ; genCall 009B 12 00 64 444 lcall _uart_init 445 ; hello.c:35: while(1) { 009E 446 00102$: 447 ; hello.c:36: printf("hello world p2 = %d p3 = %d\r\n",P2,P3); 448 ; genCast 009E AA B0 449 mov r2,_P3 00A0 7B 00 450 mov r3,#0x00 451 ; genCast 00A2 AC A0 452 mov r4,_P2 00A4 7D 00 453 mov r5,#0x00 454 ; genIpush 00A6 C0 02 455 push ar2 00A8 C0 03 456 push ar3 457 ; genIpush 00AA C0 04 458 push ar4 00AC C0 05 459 push ar5 460 ; genIpush 00AE 74 3A 461 mov a,#__str_0 00B0 C0 E0 462 push acc 00B2 74 07 463 mov a,#(__str_0 >> 8) 00B4 C0 E0 464 push acc 00B6 74 80 465 mov a,#0x80 00B8 C0 E0 466 push acc 467 ; genCall 00BA 12 00 F5 468 lcall _printf 00BD E5 81 469 mov a,sp 00BF 24 F9 470 add a,#0xf9 00C1 F5 81 471 mov sp,a 472 ; hello.c:37: P1 = P2; 473 ; genAssign 00C3 85 A0 90 474 mov _P1,_P2 475 ; hello.c:38: P1_0 ^= 1; 476 ; genXor 00C6 B2 90 477 cpl _P1_0 478 ; hello.c:39: P0_0 ^= 1; 479 ; genXor 00C8 B2 80 480 cpl _P0_0 481 ; hello.c:40: delay(); 482 ; genCall 00CA 12 00 84 483 lcall _delay 484 ; Peephole 112.b changed ljmp to sjmp 00CD 80 CF 485 sjmp 00102$ 486 ; Peephole 259.a removed redundant label 00104$ and ret 487 ; 488 .area CSEG (CODE) 489 .area CONST (CODE) 073A 490 __str_0: 073A 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 0755 0D 492 .db 0x0D 0756 0A 493 .db 0x0A 0757 00 494 .db 0x00 495 .area XINIT (CODE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -