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

📄 gui_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_dispstring.o --depend=.\Obj\gui_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_DispString.c]
                          THUMB

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

                  GUI_DispString PROC
;;;33     */
;;;34     void GUI_DispString(const char GUI_UNI_PTR *s) {
000000  e92d47fc          PUSH     {r2-r10,lr}
000004  0005              MOVS     r5,r0
;;;35       int xAdjust, yAdjust, xOrg;
;;;36       int FontSizeY;
;;;37       if (!s)
000006  d06c              BEQ      |L1.226|
;;;38         return;
;;;39       GUI_LOCK();
;;;40       FontSizeY = GUI_GetFontDistY();
000008  f7fffffe          BL       GUI_GetFontDistY
;;;41       xOrg = GUI_Context.DispPosX;
00000c  4e36              LDR      r6,|L1.232|
00000e  4607              MOV      r7,r0                 ;40
000010  f9b69022          LDRSH    r9,[r6,#0x22]  ; GUI_Context
;;;42      /* Adjust vertical position */
;;;43       yAdjust = GUI_GetYAdjust();
000014  f7fffffe          BL       GUI_GetYAdjust
;;;44       GUI_Context.DispPosY -= yAdjust;
000018  8cb1              LDRH     r1,[r6,#0x24]  ; GUI_Context
00001a  4680              MOV      r8,r0                 ;43
00001c  1a08              SUBS     r0,r1,r0
00001e  84b0              STRH     r0,[r6,#0x24]
;;;45       for (; *s; s++) {
000020  e054              B        |L1.204|
;;;46         GUI_RECT r;
;;;47         int LineNumChars = GUI__GetLineNumChars(s, 0x7fff);
000022  bf00              NOP      
                  |L1.36|
000024  f64771ff          MOV      r1,#0x7fff
000028  4628              MOV      r0,r5
00002a  f7fffffe          BL       GUI__GetLineNumChars
00002e  4682              MOV      r10,r0
;;;48         int xLineSize    = GUI__GetLineDistX(s, LineNumChars);
000030  4601              MOV      r1,r0
000032  4628              MOV      r0,r5
000034  f7fffffe          BL       GUI__GetLineDistX
000038  4604              MOV      r4,r0
;;;49       /* Check if x-position needs to be changed due to h-alignment */
;;;50         switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) { 
00003a  8db0              LDRH     r0,[r6,#0x2c]  ; GUI_Context
00003c  f0000003          AND      r0,r0,#3
000040  2801              CMP      r0,#1
000042  d005              BEQ      |L1.80|
000044  2802              CMP      r0,#2
000046  d105              BNE      |L1.84|
;;;51           case GUI_TA_CENTER: xAdjust = xLineSize / 2; break;
000048  eb0470d4          ADD      r0,r4,r4,LSR #31
00004c  1040              ASRS     r0,r0,#1
00004e  e002              B        |L1.86|
                  |L1.80|
;;;52           case GUI_TA_RIGHT:  xAdjust = xLineSize; break;
000050  4620              MOV      r0,r4
000052  e000              B        |L1.86|
                  |L1.84|
;;;53           default:            xAdjust = 0;
000054  2000              MOVS     r0,#0
                  |L1.86|
;;;54         }
;;;55         r.x0 = GUI_Context.DispPosX -= xAdjust;
000056  8c71              LDRH     r1,[r6,#0x22]  ; GUI_Context
;;;56         r.x1 = r.x0 + xLineSize - 1;    
;;;57         r.y0 = GUI_Context.DispPosY;
;;;58         r.y1 = r.y0 + FontSizeY - 1;    
;;;59         GUI__DispLine(s, LineNumChars, &r);
000058  466a              MOV      r2,sp
00005a  1a08              SUBS     r0,r1,r0              ;55
00005c  8470              STRH     r0,[r6,#0x22]         ;55
00005e  f8ad0000          STRH     r0,[sp,#0]            ;55
000062  1e61              SUBS     r1,r4,#1              ;56
000064  4408              ADD      r0,r0,r1              ;56
000066  f8ad0004          STRH     r0,[sp,#4]            ;56
00006a  8cb0              LDRH     r0,[r6,#0x24]         ;57  ; GUI_Context
00006c  f8ad0002          STRH     r0,[sp,#2]            ;57
000070  1e79              SUBS     r1,r7,#1              ;58
000072  4408              ADD      r0,r0,r1              ;58
000074  f8ad0006          STRH     r0,[sp,#6]            ;58
000078  4651              MOV      r1,r10
00007a  4628              MOV      r0,r5
00007c  f7fffffe          BL       GUI__DispLine
;;;60         GUI_Context.DispPosY = r.y0;
000080  f8bd0002          LDRH     r0,[sp,#2]
000084  84b0              STRH     r0,[r6,#0x24]
;;;61         s += GUI_UC__NumChars2NumBytes(s, LineNumChars);
000086  4651              MOV      r1,r10
000088  4628              MOV      r0,r5
00008a  f7fffffe          BL       GUI_UC__NumChars2NumBytes
00008e  4405              ADD      r5,r5,r0
;;;62         if ((*s == '\n') || (*s == '\r')) {
000090  7828              LDRB     r0,[r5,#0]
000092  280a              CMP      r0,#0xa
000094  d001              BEQ      |L1.154|
000096  280d              CMP      r0,#0xd
000098  d111              BNE      |L1.190|
                  |L1.154|
;;;63           switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) { 
00009a  8db0              LDRH     r0,[r6,#0x2c]  ; GUI_Context
00009c  f0000003          AND      r0,r0,#3
0000a0  2801              CMP      r0,#1
0000a2  d001              BEQ      |L1.168|
0000a4  2802              CMP      r0,#2
0000a6  d108              BNE      |L1.186|
                  |L1.168|
;;;64           case GUI_TA_CENTER:
;;;65           case GUI_TA_RIGHT:
;;;66             GUI_Context.DispPosX = xOrg;
0000a8  4648              MOV      r0,r9
                  |L1.170|
0000aa  8470              STRH     r0,[r6,#0x22]
;;;67             break;
;;;68           default:
;;;69             GUI_Context.DispPosX = GUI_Context.LBorder;
;;;70             break;
;;;71           }
;;;72           if (*s == '\n')
0000ac  7828              LDRB     r0,[r5,#0]
0000ae  280a              CMP      r0,#0xa
0000b0  d109              BNE      |L1.198|
;;;73             GUI_Context.DispPosY += FontSizeY;
0000b2  8cb0              LDRH     r0,[r6,#0x24]  ; GUI_Context
0000b4  4438              ADD      r0,r0,r7
0000b6  84b0              STRH     r0,[r6,#0x24]
0000b8  e005              B        |L1.198|
                  |L1.186|
0000ba  8c30              LDRH     r0,[r6,#0x20]         ;69  ; GUI_Context
0000bc  e7f5              B        |L1.170|
                  |L1.190|
;;;74         } else {
;;;75           GUI_Context.DispPosX = r.x0 + xLineSize;
0000be  f8bd0000          LDRH     r0,[sp,#0]
0000c2  4420              ADD      r0,r0,r4
0000c4  8470              STRH     r0,[r6,#0x22]
                  |L1.198|
;;;76         }
;;;77         if (*s == 0)    /* end of string (last line) reached ? */
0000c6  7828              LDRB     r0,[r5,#0]
0000c8  b118              CBZ      r0,|L1.210|
0000ca  1c6d              ADDS     r5,r5,#1              ;45
                  |L1.204|
0000cc  7828              LDRB     r0,[r5,#0]            ;45
0000ce  2800              CMP      r0,#0                 ;45
0000d0  d1a8              BNE      |L1.36|
                  |L1.210|
;;;78           break;
;;;79       }
;;;80       GUI_Context.DispPosY += yAdjust;
0000d2  8cb1              LDRH     r1,[r6,#0x24]  ; GUI_Context
0000d4  eb010008          ADD      r0,r1,r8
0000d8  84b0              STRH     r0,[r6,#0x24]
;;;81       GUI_Context.TextAlign &= ~GUI_TA_HORIZONTAL;
0000da  8db0              LDRH     r0,[r6,#0x2c]  ; GUI_Context
0000dc  f0200003          BIC      r0,r0,#3
0000e0  85b0              STRH     r0,[r6,#0x2c]
                  |L1.226|
;;;82       GUI_UNLOCK();
;;;83     }
0000e2  e8bd87fc          POP      {r2-r10,pc}
;;;84     
                          ENDP

0000e6  0000              DCW      0x0000
                  |L1.232|
                          DCD      GUI_Context

⌨️ 快捷键说明

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