📄 lib_ascii.lst
字号:
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 3029 CMP R1,#+48
\ 00000006 04D3 BCC.N ??ASCII_IsDig_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 3A29 CMP R1,#+58
\ 0000000C 01D2 BCS.N ??ASCII_IsDig_0
\ 0000000E 0120 MOVS R0,#+1
\ 00000010 00E0 B.N ??ASCII_IsDig_1
\ ??ASCII_IsDig_0:
\ 00000012 0020 MOVS R0,#+0
282
283 return (dig);
\ ??ASCII_IsDig_1:
\ 00000014 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000016 7047 BX LR ;; return
284 }
285
286
287 /*
288 *********************************************************************************************************
289 * ASCII_IsDigOct()
290 *
291 * Description : Determine whether a character is an octal-digit character.
292 *
293 * Argument(s) : c Character to examine.
294 *
295 * Return(s) : DEF_YES, if character is an octal-digit character.
296 *
297 * DEF_NO, if character is NOT an octal-digit character.
298 *
299 * Caller(s) : Application.
300 *
301 * Note(s) : none.
302 *********************************************************************************************************
303 */
304
\ In section .text, align 2, keep-with-next
305 CPU_BOOLEAN ASCII_IsDigOct (CPU_CHAR c)
306 {
\ ASCII_IsDigOct:
\ 00000000 0100 MOVS R1,R0
307 CPU_BOOLEAN dig_oct;
308
309
310 dig_oct = ASCII_IS_DIG_OCT(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 3029 CMP R1,#+48
\ 00000006 04D3 BCC.N ??ASCII_IsDigOct_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 3829 CMP R1,#+56
\ 0000000C 01D2 BCS.N ??ASCII_IsDigOct_0
\ 0000000E 0120 MOVS R0,#+1
\ 00000010 00E0 B.N ??ASCII_IsDigOct_1
\ ??ASCII_IsDigOct_0:
\ 00000012 0020 MOVS R0,#+0
311
312 return (dig_oct);
\ ??ASCII_IsDigOct_1:
\ 00000014 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000016 7047 BX LR ;; return
313 }
314
315
316 /*
317 *********************************************************************************************************
318 * ASCII_IsDigHex()
319 *
320 * Description : Determine whether a character is a hexadecimal-digit character.
321 *
322 * Argument(s) : c Character to examine.
323 *
324 * Return(s) : DEF_YES, if character is a hexadecimal-digit character.
325 *
326 * DEF_NO, if character is NOT a hexadecimal-digit character.
327 *
328 * Caller(s) : Application.
329 *
330 * Note(s) : (1) ISO/IEC 9899:TC2, Section 7.4.1.12.(2) states that "isxdigit() ... tests for any
331 * hexadecimal-digit character".
332 *********************************************************************************************************
333 */
334
\ In section .text, align 2, keep-with-next
335 CPU_BOOLEAN ASCII_IsDigHex (CPU_CHAR c)
336 {
\ ASCII_IsDigHex:
\ 00000000 0100 MOVS R1,R0
337 CPU_BOOLEAN dig_hex;
338
339
340 dig_hex = ASCII_IS_DIG_HEX(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 3029 CMP R1,#+48
\ 00000006 02D3 BCC.N ??ASCII_IsDigHex_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 3A29 CMP R1,#+58
\ 0000000C 0BD3 BCC.N ??ASCII_IsDigHex_1
\ ??ASCII_IsDigHex_0:
\ 0000000E C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000010 4129 CMP R1,#+65
\ 00000012 02D3 BCC.N ??ASCII_IsDigHex_2
\ 00000014 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000016 4729 CMP R1,#+71
\ 00000018 05D3 BCC.N ??ASCII_IsDigHex_1
\ ??ASCII_IsDigHex_2:
\ 0000001A C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000001C 6129 CMP R1,#+97
\ 0000001E 04D3 BCC.N ??ASCII_IsDigHex_3
\ 00000020 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000022 6729 CMP R1,#+103
\ 00000024 01D2 BCS.N ??ASCII_IsDigHex_3
\ ??ASCII_IsDigHex_1:
\ 00000026 0120 MOVS R0,#+1
\ 00000028 00E0 B.N ??ASCII_IsDigHex_4
\ ??ASCII_IsDigHex_3:
\ 0000002A 0020 MOVS R0,#+0
341
342 return (dig_hex);
\ ??ASCII_IsDigHex_4:
\ 0000002C C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 0000002E 7047 BX LR ;; return
343 }
344
345
346 /*$PAGE*/
347 /*
348 *********************************************************************************************************
349 * ASCII_IsBlank()
350 *
351 * Description : Determine whether a character is a standard blank character.
352 *
353 * Argument(s) : c Character to examine.
354 *
355 * Return(s) : DEF_YES, if character is a standard blank character.
356 *
357 * DEF_NO, if character is NOT a standard blank character.
358 *
359 * Caller(s) : Application.
360 *
361 * Note(s) : (1) (a) ISO/IEC 9899:TC2, Section 7.4.1.3.(2) states that "isblank() returns true only for
362 * the standard blank characters".
363 *
364 * (b) ISO/IEC 9899:TC2, Section 7.4.1.3.(2) defines "the standard blank characters" as
365 * the "space (' '), and horizontal tab ('\t')".
366 *********************************************************************************************************
367 */
368
\ In section .text, align 2, keep-with-next
369 CPU_BOOLEAN ASCII_IsBlank (CPU_CHAR c)
370 {
\ ASCII_IsBlank:
\ 00000000 0100 MOVS R1,R0
371 CPU_BOOLEAN blank;
372
373
374 blank = ASCII_IS_BLANK(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 2029 CMP R1,#+32
\ 00000006 02D0 BEQ.N ??ASCII_IsBlank_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 0929 CMP R1,#+9
\ 0000000C 01D1 BNE.N ??ASCII_IsBlank_1
\ ??ASCII_IsBlank_0:
\ 0000000E 0120 MOVS R0,#+1
\ 00000010 00E0 B.N ??ASCII_IsBlank_2
\ ??ASCII_IsBlank_1:
\ 00000012 0020 MOVS R0,#+0
375
376 return (blank);
\ ??ASCII_IsBlank_2:
\ 00000014 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000016 7047 BX LR ;; return
377 }
378
379
380 /*
381 *********************************************************************************************************
382 * ASCII_IsSpace()
383 *
384 * Description : Determine whether a character is a white-space character.
385 *
386 * Argument(s) : c Character to examine.
387 *
388 * Return(s) : DEF_YES, if character is a white-space character.
389 *
390 * DEF_NO, if character is NOT a white-space character.
391 *
392 * Caller(s) : Application.
393 *
394 * Note(s) : (1) (a) ISO/IEC 9899:TC2, Section 7.4.1.10.(2) states that "isspace() returns true only
395 * for the standard white-space characters".
396 *
397 * (b) ISO/IEC 9899:TC2, Section 7.4.1.10.(2) defines "the standard white-space characters"
398 * as the "space (' '), form feed ('\f'), new-line ('\n'), carriage return ('\r'),
399 * horizontal tab ('\t'), and vertical tab ('\v')".
400 *********************************************************************************************************
401 */
402
\ In section .text, align 2, keep-with-next
403 CPU_BOOLEAN ASCII_IsSpace (CPU_CHAR c)
404 {
\ ASCII_IsSpace:
\ 00000000 0100 MOVS R1,R0
405 CPU_BOOLEAN space;
406
407
408 space = ASCII_IS_SPACE(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 2029 CMP R1,#+32
\ 00000006 0ED0 BEQ.N ??ASCII_IsSpace_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 0D29 CMP R1,#+13
\ 0000000C 0BD0 BEQ.N ??ASCII_IsSpace_0
\ 0000000E C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000010 0A29 CMP R1,#+10
\ 00000012 08D0 BEQ.N ??ASCII_IsSpace_0
\ 00000014 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000016 0C29 CMP R1,#+12
\ 00000018 05D0 BEQ.N ??ASCII_IsSpace_0
\ 0000001A C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000001C 0929 CMP R1,#+9
\ 0000001E 02D0 BEQ.N ??ASCII_IsSpace_0
\ 00000020 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000022 0B29 CMP R1,#+11
\ 00000024 01D1 BNE.N ??ASCII_IsSpace_1
\ ??ASCII_IsSpace_0:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -