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

📄 gui_uc_dispstring.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\gui_uc_dispstring.o --depend=.\Obj\gui_uc_dispstring.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Core\GUI_UC_DispString.c]
                          THUMB

                          AREA ||i.GUI_UC_DispString||, CODE, READONLY, ALIGN=2

                  GUI_UC_DispString PROC
;;;110    */
;;;111    void GUI_UC_DispString(const U16 GUI_UNI_PTR *s) {
000000  e92d5ffc          PUSH     {r2-r12,lr}
000004  0007              MOVS     r7,r0
;;;112      int xAdjust, yAdjust, xOrg;
;;;113      int FontSizeY;
;;;114      if (!s)
000006  d07a              BEQ      |L1.254|
;;;115        return;
;;;116      GUI_LOCK();
;;;117      FontSizeY = GUI_Context.pAFont->YSize;
000008  4c3e              LDR      r4,|L1.260|
00000a  69a0              LDR      r0,[r4,#0x18]  ; GUI_Context
;;;118      xOrg = GUI_Context.DispPosX;
00000c  f9b4b022          LDRSH    r11,[r4,#0x22]  ; GUI_Context
000010  f8909014          LDRB     r9,[r0,#0x14]         ;117
;;;119     /* Adjust vertical position */
;;;120      yAdjust = GUI_GetYAdjust();
000014  f7fffffe          BL       GUI_GetYAdjust
;;;121      GUI_Context.DispPosY -= yAdjust;
000018  8ca1              LDRH     r1,[r4,#0x24]  ; GUI_Context
00001a  4682              MOV      r10,r0                ;120
00001c  1a08              SUBS     r0,r1,r0
00001e  84a0              STRH     r0,[r4,#0x24]
;;;122      for (; *s; s++) {
000020  e061              B        |L1.230|
                  |L1.34|
;;;123        GUI_RECT r;
;;;124        int LineLen= _GetLineLen(s,0x7fff);
000022  003d              MOVS     r5,r7
000024  f04f0600          MOV      r6,#0
000028  d103              BNE      |L1.50|
00002a  e008              B        |L1.62|
                  |L1.44|
00002c  1c76              ADDS     r6,r6,#1
00002e  1cad              ADDS     r5,r5,#2
000030  e001              B        |L1.54|
                  |L1.50|
000032  f64770ff          MOV      r0,#0x7fff
                  |L1.54|
000036  8829              LDRH     r1,[r5,#0]
000038  b109              CBZ      r1,|L1.62|
00003a  4286              CMP      r6,r0
00003c  dbf6              BLT      |L1.44|
                  |L1.62|
00003e  46b0              MOV      r8,r6
;;;125        int xLineSize = _GetLineDistX(s, LineLen);
000040  003c              MOVS     r4,r7
000042  f04f0500          MOV      r5,#0
000046  d009              BEQ      |L1.92|
000048  e004              B        |L1.84|
                  |L1.74|
00004a  1ca4              ADDS     r4,r4,#2
00004c  1e76              SUBS     r6,r6,#1
00004e  f7fffffe          BL       GUI_GetCharDistX
000052  4405              ADD      r5,r5,r0
                  |L1.84|
000054  8820              LDRH     r0,[r4,#0]
000056  b108              CBZ      r0,|L1.92|
000058  2e00              CMP      r6,#0
00005a  daf6              BGE      |L1.74|
                  |L1.92|
;;;126      /* Check if x-position needs to be changed due to h-alignment */
;;;127        switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) { 
00005c  4c29              LDR      r4,|L1.260|
00005e  8da0              LDRH     r0,[r4,#0x2c]  ; GUI_Context
000060  f0000003          AND      r0,r0,#3
000064  2801              CMP      r0,#1
000066  d005              BEQ      |L1.116|
000068  2802              CMP      r0,#2
00006a  d105              BNE      |L1.120|
;;;128        case GUI_TA_CENTER: xAdjust= xLineSize/2; break;
00006c  eb0570d5          ADD      r0,r5,r5,LSR #31
000070  1040              ASRS     r0,r0,#1
000072  e002              B        |L1.122|
                  |L1.116|
;;;129        case GUI_TA_RIGHT:  xAdjust= xLineSize; break;
000074  4628              MOV      r0,r5
000076  e000              B        |L1.122|
                  |L1.120|
;;;130        default:            xAdjust= 0;
000078  2000              MOVS     r0,#0
                  |L1.122|
;;;131        }
;;;132        r.x0 = GUI_Context.DispPosX -= xAdjust;
00007a  8c61              LDRH     r1,[r4,#0x22]  ; GUI_Context
;;;133        r.x1 = r.x0 + xLineSize-1;    
;;;134        r.y0 = GUI_Context.DispPosY;
;;;135        r.y1 = r.y0 + FontSizeY-1;    
;;;136        _DispLine(s, LineLen, &r);
00007c  466a              MOV      r2,sp
00007e  1a08              SUBS     r0,r1,r0              ;132
000080  8460              STRH     r0,[r4,#0x22]         ;132
000082  f8ad0000          STRH     r0,[sp,#0]            ;132
000086  1e69              SUBS     r1,r5,#1              ;133
000088  4408              ADD      r0,r0,r1              ;133
00008a  f8ad0004          STRH     r0,[sp,#4]            ;133
00008e  8ca0              LDRH     r0,[r4,#0x24]         ;134  ; GUI_Context
000090  f8ad0002          STRH     r0,[sp,#2]            ;134
000094  f1a90101          SUB      r1,r9,#1              ;135
000098  4408              ADD      r0,r0,r1              ;135
00009a  f8ad0006          STRH     r0,[sp,#6]            ;135
00009e  4641              MOV      r1,r8
0000a0  4638              MOV      r0,r7
0000a2  f7fffffe          BL       _DispLine
;;;137        GUI_Context.DispPosY = r.y0;
0000a6  f8bd0002          LDRH     r0,[sp,#2]
0000aa  84a0              STRH     r0,[r4,#0x24]
;;;138        s += LineLen;
0000ac  eb070748          ADD      r7,r7,r8,LSL #1
;;;139        if (*s=='\n') {
0000b0  8838              LDRH     r0,[r7,#0]
0000b2  280a              CMP      r0,#0xa
0000b4  d110              BNE      |L1.216|
;;;140          switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) { 
0000b6  8da0              LDRH     r0,[r4,#0x2c]  ; GUI_Context
0000b8  f0000003          AND      r0,r0,#3
0000bc  2801              CMP      r0,#1
0000be  d001              BEQ      |L1.196|
0000c0  2802              CMP      r0,#2
0000c2  d107              BNE      |L1.212|
                  |L1.196|
;;;141          case GUI_TA_CENTER:
;;;142          case GUI_TA_RIGHT:
;;;143            GUI_Context.DispPosX = xOrg;
0000c4  4658              MOV      r0,r11
                  |L1.198|
0000c6  8460              STRH     r0,[r4,#0x22]
;;;144            break;
;;;145          default:
;;;146            GUI_Context.DispPosX = GUI_Context.LBorder;
;;;147            break;
;;;148          }
;;;149          GUI_Context.DispPosY += GUI_GetFontDistY();
0000c8  f7fffffe          BL       GUI_GetFontDistY
0000cc  8ca1              LDRH     r1,[r4,#0x24]  ; GUI_Context
0000ce  4408              ADD      r0,r0,r1
0000d0  84a0              STRH     r0,[r4,#0x24]
0000d2  e005              B        |L1.224|
                  |L1.212|
0000d4  8c20              LDRH     r0,[r4,#0x20]         ;146  ; GUI_Context
0000d6  e7f6              B        |L1.198|
                  |L1.216|
;;;150        } else {
;;;151          GUI_Context.DispPosX = r.x0+xLineSize;
0000d8  f8bd0000          LDRH     r0,[sp,#0]
0000dc  4428              ADD      r0,r0,r5
0000de  8460              STRH     r0,[r4,#0x22]
                  |L1.224|
;;;152        }
;;;153        if (*s==0)    /* end of string (last line) reached ? */
0000e0  8838              LDRH     r0,[r7,#0]
0000e2  b118              CBZ      r0,|L1.236|
0000e4  1cbf              ADDS     r7,r7,#2              ;122
                  |L1.230|
0000e6  8838              LDRH     r0,[r7,#0]            ;122
0000e8  2800              CMP      r0,#0                 ;122
0000ea  d19a              BNE      |L1.34|
                  |L1.236|
;;;154          break;
;;;155      }
;;;156      GUI_Context.DispPosY += yAdjust;
0000ec  4805              LDR      r0,|L1.260|
0000ee  8c82              LDRH     r2,[r0,#0x24]  ; GUI_Context
0000f0  eb02010a          ADD      r1,r2,r10
0000f4  8481              STRH     r1,[r0,#0x24]
;;;157      GUI_Context.TextAlign &= ~GUI_TA_HORIZONTAL;
0000f6  8d81              LDRH     r1,[r0,#0x2c]  ; GUI_Context
0000f8  f0210103          BIC      r1,r1,#3
0000fc  8581              STRH     r1,[r0,#0x2c]
                  |L1.254|
;;;158      GUI_UNLOCK();
;;;159    }
0000fe  e8bd9ffc          POP      {r2-r12,pc}
;;;160    
                          ENDP

000102  0000              DCW      0x0000
                  |L1.260|
                          DCD      GUI_Context

                          AREA ||i._DispLine||, CODE, READONLY, ALIGN=2

                  _DispLine PROC
;;;83     */
;;;84     static void _DispLine(const U16 GUI_UNI_PTR *s, int Len, const GUI_RECT* pr) {
000000  e92d41fc          PUSH     {r2-r8,lr}
000004  4688              MOV      r8,r1
000006  4607              MOV      r7,r0
000008  4611              MOV      r1,r2
;;;85       GUI_RECT r;
;;;86       r = *pr;
00000a  2208              MOVS     r2,#8
00000c  4668              MOV      r0,sp
00000e  f7fffffe          BL       __aeabi_memcpy
;;;87       #if GUI_WINSUPPORT
;;;88       WM_ADDORG(r.x0,r.y0);
000012  4e1f              LDR      r6,|L2.144|
000014  f8bd1000          LDRH     r1,[sp,#0]
000018  6c30              LDR      r0,[r6,#0x40]  ; GUI_Context
00001a  4401              ADD      r1,r1,r0
00001c  f8ad1000          STRH     r1,[sp,#0]
000020  f8bd2002          LDRH     r2,[sp,#2]
000024  6c71              LDR      r1,[r6,#0x44]  ; GUI_Context
000026  440a              ADD      r2,r2,r1
000028  f8ad2002          STRH     r2,[sp,#2]
;;;89       WM_ADDORG(r.x1,r.y1);
00002c  f8bd2004          LDRH     r2,[sp,#4]
000030  4410              ADD      r0,r0,r2
000032  f8ad0004          STRH     r0,[sp,#4]
000036  f8bd0006          LDRH     r0,[sp,#6]
00003a  4408              ADD      r0,r0,r1
00003c  f8ad0006          STRH     r0,[sp,#6]
;;;90       WM_ITERATE_START(&r) {
000040  4668              MOV      r0,sp
000042  f7fffffe          BL       WM__InitIVRSearch
000046  e017              B        |L2.120|
                  |L2.72|
;;;91       #endif
;;;92          GUI_Context.DispPosX = r.x0;
000048  f8bd0000          LDRH     r0,[sp,#0]
00004c  8470              STRH     r0,[r6,#0x22]
;;;93          GUI_Context.DispPosY = r.y0;
00004e  f8bd0002          LDRH     r0,[sp,#2]
000052  84b0              STRH     r0,[r6,#0x24]
000054  6930              LDR      r0,[r6,#0x10]  ; GUI_Context
;;;94          _DispLine_UC(s, Len, &r);    /* Do the actual drawing via routine call. */
000056  463c              MOV      r4,r7
000058  4645              MOV      r5,r8
00005a  b148              CBZ      r0,|L2.112|
00005c  4669              MOV      r1,sp
00005e  f7fffffe          BL       GUI_RectsIntersect
000062  b138              CBZ      r0,|L2.116|
000064  e004              B        |L2.112|
000066  bf00              NOP      
                  |L2.104|
000068  f8340b02          LDRH     r0,[r4],#2
00006c  f7fffffe          BL       GL_DispChar
                  |L2.112|
000070  1e6d              SUBS     r5,r5,#1
000072  d5f9              BPL      |L2.104|
                  |L2.116|
;;;95       #if GUI_WINSUPPORT
;;;96       } WM_ITERATE_END();
000074  f7fffffe          BL       WM__GetNextIVR
                  |L2.120|
000078  2800              CMP      r0,#0
00007a  d1e5              BNE      |L2.72|
;;;97       WM_SUBORG(GUI_Context.DispPosX, GUI_Context.DispPosY);
00007c  8c70              LDRH     r0,[r6,#0x22]  ; GUI_Context
00007e  6c31              LDR      r1,[r6,#0x40]  ; GUI_Context
000080  1a40              SUBS     r0,r0,r1
000082  8470              STRH     r0,[r6,#0x22]
000084  8cb0              LDRH     r0,[r6,#0x24]  ; GUI_Context
000086  6c71              LDR      r1,[r6,#0x44]  ; GUI_Context
000088  1a40              SUBS     r0,r0,r1
00008a  84b0              STRH     r0,[r6,#0x24]
;;;98       #endif
;;;99     }
00008c  e8bd81fc          POP      {r2-r8,pc}
;;;100    
                          ENDP

                  |L2.144|
                          DCD      GUI_Context

⌨️ 快捷键说明

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