📄 lib_ascii.lst
字号:
\ ??ASCII_IsAlpha_4:
\ 0000002A 0128 CMP R0,#+1
\ 0000002C 01D1 BNE.N ??ASCII_IsAlpha_5
\ ??ASCII_IsAlpha_2:
\ 0000002E 0120 MOVS R0,#+1
\ 00000030 00E0 B.N ??ASCII_IsAlpha_6
\ ??ASCII_IsAlpha_5:
\ 00000032 0020 MOVS R0,#+0
160
161 return (alpha);
\ ??ASCII_IsAlpha_6:
\ 00000034 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000036 7047 BX LR ;; return
162 }
163
164
165 /*
166 *********************************************************************************************************
167 * ASCII_IsAlphaNum()
168 *
169 * Description : Determine whether a character is an alphanumeric character.
170 *
171 * Argument(s) : c Character to examine.
172 *
173 * Return(s) : DEF_YES, if character is an alphanumeric character.
174 *
175 * DEF_NO, if character is NOT an alphanumeric character.
176 *
177 * Caller(s) : Application.
178 *
179 * Note(s) : (1) ISO/IEC 9899:TC2, Section 7.4.1.1.(2) states that "isalnum() ... tests for any character
180 * for which isalpha() or isdigit() is true".
181 *********************************************************************************************************
182 */
183
\ In section .text, align 2, keep-with-next
184 CPU_BOOLEAN ASCII_IsAlphaNum (CPU_CHAR c)
185 {
\ ASCII_IsAlphaNum:
\ 00000000 0100 MOVS R1,R0
186 CPU_BOOLEAN alpha_num;
187
188
189 alpha_num = ASCII_IS_ALPHA_NUM(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 4129 CMP R1,#+65
\ 00000006 04D3 BCC.N ??ASCII_IsAlphaNum_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 5B29 CMP R1,#+91
\ 0000000C 01D2 BCS.N ??ASCII_IsAlphaNum_0
\ 0000000E 0120 MOVS R0,#+1
\ 00000010 00E0 B.N ??ASCII_IsAlphaNum_1
\ ??ASCII_IsAlphaNum_0:
\ 00000012 0020 MOVS R0,#+0
\ ??ASCII_IsAlphaNum_1:
\ 00000014 0128 CMP R0,#+1
\ 00000016 0AD0 BEQ.N ??ASCII_IsAlphaNum_2
\ 00000018 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000001A 6129 CMP R1,#+97
\ 0000001C 04D3 BCC.N ??ASCII_IsAlphaNum_3
\ 0000001E C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000020 7B29 CMP R1,#+123
\ 00000022 01D2 BCS.N ??ASCII_IsAlphaNum_3
\ 00000024 0120 MOVS R0,#+1
\ 00000026 00E0 B.N ??ASCII_IsAlphaNum_4
\ ??ASCII_IsAlphaNum_3:
\ 00000028 0020 MOVS R0,#+0
\ ??ASCII_IsAlphaNum_4:
\ 0000002A 0128 CMP R0,#+1
\ 0000002C 01D1 BNE.N ??ASCII_IsAlphaNum_5
\ ??ASCII_IsAlphaNum_2:
\ 0000002E 0120 MOVS R0,#+1
\ 00000030 00E0 B.N ??ASCII_IsAlphaNum_6
\ ??ASCII_IsAlphaNum_5:
\ 00000032 0020 MOVS R0,#+0
\ ??ASCII_IsAlphaNum_6:
\ 00000034 0128 CMP R0,#+1
\ 00000036 0AD0 BEQ.N ??ASCII_IsAlphaNum_7
\ 00000038 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000003A 3029 CMP R1,#+48
\ 0000003C 04D3 BCC.N ??ASCII_IsAlphaNum_8
\ 0000003E C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000040 3A29 CMP R1,#+58
\ 00000042 01D2 BCS.N ??ASCII_IsAlphaNum_8
\ 00000044 0120 MOVS R0,#+1
\ 00000046 00E0 B.N ??ASCII_IsAlphaNum_9
\ ??ASCII_IsAlphaNum_8:
\ 00000048 0020 MOVS R0,#+0
\ ??ASCII_IsAlphaNum_9:
\ 0000004A 0128 CMP R0,#+1
\ 0000004C 01D1 BNE.N ??ASCII_IsAlphaNum_10
\ ??ASCII_IsAlphaNum_7:
\ 0000004E 0120 MOVS R0,#+1
\ 00000050 00E0 B.N ??ASCII_IsAlphaNum_11
\ ??ASCII_IsAlphaNum_10:
\ 00000052 0020 MOVS R0,#+0
190
191 return (alpha_num);
\ ??ASCII_IsAlphaNum_11:
\ 00000054 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000056 7047 BX LR ;; return
192 }
193
194
195 /*$PAGE*/
196 /*
197 *********************************************************************************************************
198 * ASCII_IsLower()
199 *
200 * Description : Determine whether a character is a lowercase alphabetic character.
201 *
202 * Argument(s) : c Character to examine.
203 *
204 * Return(s) : DEF_YES, if character is a lowercase alphabetic character.
205 *
206 * DEF_NO, if character is NOT a lowercase alphabetic character.
207 *
208 * Caller(s) : Application.
209 *
210 * Note(s) : (1) ISO/IEC 9899:TC2, Section 7.4.1.7.(2) states that "islower() returns true only for
211 * the lowercase letters".
212 *********************************************************************************************************
213 */
214
\ In section .text, align 2, keep-with-next
215 CPU_BOOLEAN ASCII_IsLower (CPU_CHAR c)
216 {
\ ASCII_IsLower:
\ 00000000 0100 MOVS R1,R0
217 CPU_BOOLEAN lower;
218
219
220 lower = ASCII_IS_LOWER(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 6129 CMP R1,#+97
\ 00000006 04D3 BCC.N ??ASCII_IsLower_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 7B29 CMP R1,#+123
\ 0000000C 01D2 BCS.N ??ASCII_IsLower_0
\ 0000000E 0120 MOVS R0,#+1
\ 00000010 00E0 B.N ??ASCII_IsLower_1
\ ??ASCII_IsLower_0:
\ 00000012 0020 MOVS R0,#+0
221
222 return (lower);
\ ??ASCII_IsLower_1:
\ 00000014 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000016 7047 BX LR ;; return
223 }
224
225
226 /*
227 *********************************************************************************************************
228 * ASCII_IsUpper()
229 *
230 * Description : Determine whether a character is an uppercase alphabetic character.
231 *
232 * Argument(s) : c Character to examine.
233 *
234 * Return(s) : DEF_YES, if character is an uppercase alphabetic character.
235 *
236 * DEF_NO, if character is NOT an uppercase alphabetic character.
237 *
238 * Caller(s) : Application.
239 *
240 * Note(s) : (1) ISO/IEC 9899:TC2, Section 7.4.1.11.(2) states that "isupper() returns true only for
241 * the uppercase letters".
242 *********************************************************************************************************
243 */
244
\ In section .text, align 2, keep-with-next
245 CPU_BOOLEAN ASCII_IsUpper (CPU_CHAR c)
246 {
\ ASCII_IsUpper:
\ 00000000 0100 MOVS R1,R0
247 CPU_BOOLEAN upper;
248
249
250 upper = ASCII_IS_UPPER(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 4129 CMP R1,#+65
\ 00000006 04D3 BCC.N ??ASCII_IsUpper_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 5B29 CMP R1,#+91
\ 0000000C 01D2 BCS.N ??ASCII_IsUpper_0
\ 0000000E 0120 MOVS R0,#+1
\ 00000010 00E0 B.N ??ASCII_IsUpper_1
\ ??ASCII_IsUpper_0:
\ 00000012 0020 MOVS R0,#+0
251
252 return (upper);
\ ??ASCII_IsUpper_1:
\ 00000014 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000016 7047 BX LR ;; return
253 }
254
255
256 /*$PAGE*/
257 /*
258 *********************************************************************************************************
259 * ASCII_IsDig()
260 *
261 * Description : Determine whether a character is a decimal-digit character.
262 *
263 * Argument(s) : c Character to examine.
264 *
265 * Return(s) : DEF_YES, if character is a decimal-digit character.
266 *
267 * DEF_NO, if character is NOT a decimal-digit character.
268 *
269 * Caller(s) : Application.
270 *
271 * Note(s) : (1) ISO/IEC 9899:TC2, Section 7.4.1.5.(2) states that "isdigit() ... tests for any
272 * decimal-digit character".
273 *********************************************************************************************************
274 */
275
\ In section .text, align 2, keep-with-next
276 CPU_BOOLEAN ASCII_IsDig (CPU_CHAR c)
277 {
\ ASCII_IsDig:
\ 00000000 0100 MOVS R1,R0
278 CPU_BOOLEAN dig;
279
280
281 dig = ASCII_IS_DIG(c);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -