⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.lst

📁 看看ARM菜鸟在ARM7上写的操作系统——ARM圈圈操作系统 最近在ADuC7027上写了一个ARM_00_OS
💻 LST
📖 第 1 页 / 共 2 页
字号:

*** CODE SEGMENT '?PR?prints?T?UART':
   62: void prints(uint8 * s,uint32 newline)
 00000000  B510      PUSH        {R4,LR}
 00000002  ---- Variable 'newline' assigned to Register 'R1' ----
 00000002  ---- Variable 's' assigned to Register 'R0' ----
   63: {
 00000002            ; SCOPE-START
   65:  i=0;
 00000002  2200      MOV         R2,#0x0
 00000004  ---- Variable 'i' assigned to Register 'R2' ----
   66:  while(s[i]!=0)    //判断字符串是否结束
 00000004  E00F      B           L_5  ; T=0x00000026
   68:    while(!(COMSTA0 & 0x40));  //等待发送完毕
 00000006          L_12:
 00000006          L_9:
 00000006  4800      LDR         R3,=0xFFFF0714
 00000008  681B      LDR         R3,[R3,#0x0]
 0000000A  2440      MOV         R4,#0x40
 0000000C  4223      TST         R3,R4
 0000000E  D0FA      BEQ         L_9  ; T=0x00000006
   69:    COMTX=s[i];
 00000010  1C13      MOV         R3,R2 ; i
 00000012  061C      LSL         R4,R3,#0x18 ; i
 00000014  0E24      LSR         R4,R4,#0x18
 00000016  1C03      MOV         R3,R0 ; s
 00000018  5D1B      LDRB        R3,[R3,R4]
 0000001A  1C1C      MOV         R4,R3
 0000001C  4800      LDR         R3,=0xFFFF0700
 0000001E  601C      STR         R4,[R3,#0x0]
   70:    i++;            //移到下字节
 00000020  3201      ADD         R2,#0x1
 00000022  0612      LSL         R2,R2,#0x18
 00000024  0E12      LSR         R2,R2,#0x18
   71:   }
 00000026          L_5:
 00000026  1C13      MOV         R3,R2 ; i
 00000028  061C      LSL         R4,R3,#0x18 ; i
 0000002A  0E24      LSR         R4,R4,#0x18
 0000002C  1C03      MOV         R3,R0 ; s
 0000002E  5D1B      LDRB        R3,[R3,R4]
 00000030  2B00      CMP         R3,#0x0
 00000032  D1E8      BNE         L_12  ; T=0x00000006
   72:  if(newline)       //如果需要换行
 00000034  1C08      MOV         R0,R1 ; newline
 00000036  2800      CMP         R0,#0x0 ; newline
ARM COMPILER V2.50a,  UART                                                                 16/05/06  14:55:45  PAGE 6   

 00000038  D005      BEQ         L_13  ; T=0x00000046
   74:    send_a_byte(13);
 0000003A  200D      MOV         R0,#0xD
 0000003C  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 0000003E  FFE0      BL          send_a_byte?T  ; T=0x0001  (2)
   75:    send_a_byte(10);   //发送回车换行
 00000040  200A      MOV         R0,#0xA
 00000042  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 00000044  FFDD      BL          send_a_byte?T  ; T=0x0001  (2)
   76:   }
 00000046          L_13:
 00000046            ; SCOPE-END
   77: }
 00000046  BC10      POP         {R4}
 00000048  BC08      POP         {R3}
 0000004A  4718      BX          R3
 0000004C          ENDP ; 'prints?T'


*** CODE SEGMENT '?PR?cls?T?UART':
   81: void cls(void)
 00000000  B500      PUSH        {LR}
   83:  send_a_byte(0x0C);   //超级终端清屏指令
 00000002  200C      MOV         R0,#0xC
 00000004  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 00000006  FFFC      BL          send_a_byte?T  ; T=0x0001  (2)
   84:  send_a_byte(0x0C);
 00000008  200C      MOV         R0,#0xC
 0000000A  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          send_a_byte?T  ; T=0x0001  (2)
   85: }
 0000000E  BC08      POP         {R3}
 00000010  4718      BX          R3
 00000012          ENDP ; 'cls?T'


*** CODE SEGMENT '?PR?print_uint16?T?UART':
   93: void print_uint16(uint16 number)
 00000000  B500      PUSH        {LR}
 00000002  1C03      MOV         R3,R0 ; number
 00000004  ---- Variable 'number' assigned to Register 'R3' ----
   95:  send_a_byte('0');              //发送0x
 00000004  2030      MOV         R0,#0x30
 00000006  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 00000008  FFFB      BL          send_a_byte?T  ; T=0x0001  (2)
   96:  send_a_byte('x');
 0000000A  2078      MOV         R0,#0x78
 0000000C  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          send_a_byte?T  ; T=0x0001  (2)
   97:  send_a_byte(HEX_TABLE[(number>>12) & 0x0F]);  //依次发送各部分
 00000010  1C18      MOV         R0,R3 ; number
 00000012  0401      LSL         R1,R0,#0x10 ; number
 00000014  0C09      LSR         R1,R1,#0x10
 00000016  0B09      LSR         R1,R1,#0xC
 00000018  200F      MOV         R0,#0xF
 0000001A  4001      AND         R1,R0
 0000001C  4800      LDR         R0,=HEX_TABLE ; HEX_TABLE
 0000001E  5C40      LDRB        R0,[R0,R1]
 00000020  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 00000022  FFEE      BL          send_a_byte?T  ; T=0x0001  (2)
   98:  send_a_byte(HEX_TABLE[(number>>8)  & 0x0F]);
 00000024  1C18      MOV         R0,R3 ; number
 00000026  0401      LSL         R1,R0,#0x10 ; number
 00000028  0C09      LSR         R1,R1,#0x10
 0000002A  0A09      LSR         R1,R1,#0x8
 0000002C  200F      MOV         R0,#0xF
 0000002E  4001      AND         R1,R0
 00000030  4800      LDR         R0,=HEX_TABLE ; HEX_TABLE
 00000032  5C40      LDRB        R0,[R0,R1]
 00000034  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
ARM COMPILER V2.50a,  UART                                                                 16/05/06  14:55:45  PAGE 7   

 00000036  FFE4      BL          send_a_byte?T  ; T=0x0001  (2)
   99:  send_a_byte(HEX_TABLE[(number>>4)  & 0x0F]);
 00000038  1C18      MOV         R0,R3 ; number
 0000003A  0401      LSL         R1,R0,#0x10 ; number
 0000003C  0C09      LSR         R1,R1,#0x10
 0000003E  0909      LSR         R1,R1,#0x4
 00000040  200F      MOV         R0,#0xF
 00000042  4001      AND         R1,R0
 00000044  4800      LDR         R0,=HEX_TABLE ; HEX_TABLE
 00000046  5C40      LDRB        R0,[R0,R1]
 00000048  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 0000004A  FFDA      BL          send_a_byte?T  ; T=0x0001  (2)
  100:  send_a_byte(HEX_TABLE[(number)     & 0x0F]);
 0000004C  1C18      MOV         R0,R3 ; number
 0000004E  0401      LSL         R1,R0,#0x10 ; number
 00000050  0C09      LSR         R1,R1,#0x10
 00000052  200F      MOV         R0,#0xF
 00000054  4001      AND         R1,R0
 00000056  4800      LDR         R0,=HEX_TABLE ; HEX_TABLE
 00000058  5C40      LDRB        R0,[R0,R1]
 0000005A  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 0000005C  FFD1      BL          send_a_byte?T  ; T=0x0001  (2)
  101:  send_a_byte(' ');
 0000005E  2020      MOV         R0,#0x20
 00000060  F7FF      BL          send_a_byte?T  ; T=0x0001  (1)
 00000062  FFCE      BL          send_a_byte?T  ; T=0x0001  (2)
  102: }
 00000064  BC08      POP         {R3}
 00000066  4718      BX          R3
 00000068          ENDP ; 'print_uint16?T'


*** CODE SEGMENT '?PR?print_uint32?T?UART':
  106: void print_uint32(uint32 number)
 00000000  B510      PUSH        {R4,LR}
 00000002  1C03      MOV         R3,R0 ; number
 00000004  ---- Variable 'number' assigned to Register 'R3' ----
 00000004  B083      SUB         R13,#0xC
  107: {
 00000006            ; SCOPE-START
  111:  for(i=0;i<10;i++)   //转换成字符串
 00000006  2200      MOV         R2,#0x0
 00000008  ---- Variable 'i' assigned to Register 'R2' ----
 00000008          L_17:
  113:    buf[9-i]=(number%10)+'0';
 00000008  1C18      MOV         R0,R3 ; number
 0000000A  210A      MOV         R1,#0xA
 0000000C  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 0000000E  FFF8      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 00000010  1C01      MOV         R1,R0
 00000012  3030      ADD         R0,#0x30
 00000014  0600      LSL         R0,R0,#0x18
 00000016  0E00      LSR         R0,R0,#0x18
 00000018  1C11      MOV         R1,R2 ; i
 0000001A  2409      MOV         R4,#0x9
 0000001C  1A64      SUB         R4,R1 ; i
 0000001E  A900      ADD         R1,R13,#0x0
 00000020  5508      STRB        R0,[R1,R4]
  114:    number/=10;
 00000022  1C18      MOV         R0,R3 ; number
 00000024  210A      MOV         R1,#0xA
 00000026  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 00000028  FFEB      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 0000002A  1C08      MOV         R0,R1
 0000002C  1C03      MOV         R3,R0 ; number
  115:   }
 0000002E  3201      ADD         R2,#0x1
 00000030  1C10      MOV         R0,R2 ; i
ARM COMPILER V2.50a,  UART                                                                 16/05/06  14:55:45  PAGE 8   

 00000032  280A      CMP         R0,#0xA ; i
 00000034  D3E8      BCC         L_17  ; T=0x00000008
  116:  for(i=0;i<9;i++)    //将前面的0转换成空格
 00000036  2200      MOV         R2,#0x0
 00000038          L_22:
  118:    if(buf[i]=='0')
 00000038  1C10      MOV         R0,R2 ; i
 0000003A  A900      ADD         R1,R13,#0x0
 0000003C  5C08      LDRB        R0,[R1,R0]
 0000003E  2830      CMP         R0,#0x30
 00000040  D106      BNE         L_20  ; T=0x00000050
  120:      buf[i]=' ';
 00000042  2020      MOV         R0,#0x20
 00000044  1C13      MOV         R3,R2 ; i
 00000046  54C8      STRB        R0,[R1,R3]
  126:   }
 00000048  3201      ADD         R2,#0x1
 0000004A  1C10      MOV         R0,R2 ; i
 0000004C  2809      CMP         R0,#0x9 ; i
 0000004E  D3F3      BCC         L_22  ; T=0x00000038
 00000050          L_20:
  127:  buf[10]=' ';
 00000050  2120      MOV         R1,#0x20
 00000052  200A      MOV         R0,#0xA
 00000054  4468      ADD         R0,R13
 00000056  7001      STRB        R1,[R0,#0x0] ; buf+10
  128:  buf[11]=0;       //字符串结束符
 00000058  2100      MOV         R1,#0x0
 0000005A  200B      MOV         R0,#0xB
 0000005C  4468      ADD         R0,R13
 0000005E  7001      STRB        R1,[R0,#0x0] ; buf+11
  129:  prints(buf,0);
 00000060  A800      ADD         R0,R13,#0x0
 00000062  2100      MOV         R1,#0x0
 00000064  F7FF      BL          prints?T  ; T=0x0001  (1)
 00000066  FFCC      BL          prints?T  ; T=0x0001  (2)
 00000068            ; SCOPE-END
  130: }
 00000068  B003      ADD         R13,#0xC
 0000006A  BC10      POP         {R4}
 0000006C  BC08      POP         {R3}
 0000006E  4718      BX          R3
 00000070          ENDP ; 'print_uint32?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
  const size           =        16
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -