📄 lib_ascii.lst
字号:
\ 00000026 0120 MOVS R0,#+1
\ 00000028 00E0 B.N ??ASCII_IsSpace_2
\ ??ASCII_IsSpace_1:
\ 0000002A 0020 MOVS R0,#+0
409
410 return (space);
\ ??ASCII_IsSpace_2:
\ 0000002C C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 0000002E 7047 BX LR ;; return
411 }
412
413
414 /*$PAGE*/
415 /*
416 *********************************************************************************************************
417 * ASCII_IsPrint()
418 *
419 * Description : Determine whether a character is a printing character.
420 *
421 * Argument(s) : c Character to examine.
422 *
423 * Return(s) : DEF_YES, if character is a printing character.
424 *
425 * DEF_NO, if character is NOT a printing character.
426 *
427 * Caller(s) : Application.
428 *
429 * Note(s) : (1) (a) ISO/IEC 9899:TC2, Section 7.4.1.8.(2) states that "isprint() ... tests for any
430 * printing character including space (' ')".
431 *
432 * (b) ISO/IEC 9899:TC2, Section 7.4.(3), Note 169, states that in "the seven-bit US
433 * ASCII character set, the printing characters are those whose values lie from
434 * 0x20 (space) through 0x7E (tilde)".
435 *********************************************************************************************************
436 */
437
\ In section .text, align 2, keep-with-next
438 CPU_BOOLEAN ASCII_IsPrint (CPU_CHAR c)
439 {
\ ASCII_IsPrint:
\ 00000000 0100 MOVS R1,R0
440 CPU_BOOLEAN print;
441
442
443 print = ASCII_IS_PRINT(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 2029 CMP R1,#+32
\ 00000006 04D3 BCC.N ??ASCII_IsPrint_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 7F29 CMP R1,#+127
\ 0000000C 01D2 BCS.N ??ASCII_IsPrint_0
\ 0000000E 0120 MOVS R0,#+1
\ 00000010 00E0 B.N ??ASCII_IsPrint_1
\ ??ASCII_IsPrint_0:
\ 00000012 0020 MOVS R0,#+0
444
445 return (print);
\ ??ASCII_IsPrint_1:
\ 00000014 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000016 7047 BX LR ;; return
446 }
447
448
449 /*
450 *********************************************************************************************************
451 * ASCII_IsGraph()
452 *
453 * Description : Determine whether a character is any printing character except a space character.
454 *
455 * Argument(s) : c Character to examine.
456 *
457 * Return(s) : DEF_YES, if character is a graphic character.
458 *
459 * DEF_NO, if character is NOT a graphic character.
460 *
461 * Caller(s) : Application.
462 *
463 * Note(s) : (1) (a) ISO/IEC 9899:TC2, Section 7.4.1.6.(2) states that "isgraph() ... tests for any
464 * printing character except space (' ')".
465 *
466 * (b) ISO/IEC 9899:TC2, Section 7.4.(3), Note 169, states that in "the seven-bit US
467 * ASCII character set, the printing characters are those whose values lie from
468 * 0x20 (space) through 0x7E (tilde)".
469 *********************************************************************************************************
470 */
471
\ In section .text, align 2, keep-with-next
472 CPU_BOOLEAN ASCII_IsGraph (CPU_CHAR c)
473 {
\ ASCII_IsGraph:
\ 00000000 0100 MOVS R1,R0
474 CPU_BOOLEAN graph;
475
476
477 graph = ASCII_IS_GRAPH(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 2129 CMP R1,#+33
\ 00000006 04D3 BCC.N ??ASCII_IsGraph_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 7F29 CMP R1,#+127
\ 0000000C 01D2 BCS.N ??ASCII_IsGraph_0
\ 0000000E 0120 MOVS R0,#+1
\ 00000010 00E0 B.N ??ASCII_IsGraph_1
\ ??ASCII_IsGraph_0:
\ 00000012 0020 MOVS R0,#+0
478
479 return (graph);
\ ??ASCII_IsGraph_1:
\ 00000014 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000016 7047 BX LR ;; return
480 }
481
482
483 /*$PAGE*/
484 /*
485 *********************************************************************************************************
486 * ASCII_IsPunct()
487 *
488 * Description : Determine whether a character is a punctuation character.
489 *
490 * Argument(s) : c Character to examine.
491 *
492 * Return(s) : DEF_YES, if character is a punctuation character.
493 *
494 * DEF_NO, if character is NOT a punctuation character.
495 *
496 * Caller(s) : Application.
497 *
498 * Note(s) : (1) ISO/IEC 9899:TC2, Section 7.4.1.9.(2) states that "ispunct() returns true for every
499 * printing character for which neither isspace() nor isalnum() is true".
500 *********************************************************************************************************
501 */
502
\ In section .text, align 2, keep-with-next
503 CPU_BOOLEAN ASCII_IsPunct (CPU_CHAR c)
504 {
\ ASCII_IsPunct:
\ 00000000 0100 MOVS R1,R0
505 CPU_BOOLEAN punct;
506
507
508 punct = ASCII_IS_PUNCT(c);
\ 00000002 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000004 2029 CMP R1,#+32
\ 00000006 04D3 BCC.N ??ASCII_IsPunct_0
\ 00000008 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000000A 7F29 CMP R1,#+127
\ 0000000C 01D2 BCS.N ??ASCII_IsPunct_0
\ 0000000E 0120 MOVS R0,#+1
\ 00000010 00E0 B.N ??ASCII_IsPunct_1
\ ??ASCII_IsPunct_0:
\ 00000012 0020 MOVS R0,#+0
\ ??ASCII_IsPunct_1:
\ 00000014 0128 CMP R0,#+1
\ 00000016 43D1 BNE.N ??ASCII_IsPunct_2
\ 00000018 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000001A 2029 CMP R1,#+32
\ 0000001C 0ED0 BEQ.N ??ASCII_IsPunct_3
\ 0000001E C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000020 0D29 CMP R1,#+13
\ 00000022 0BD0 BEQ.N ??ASCII_IsPunct_3
\ 00000024 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000026 0A29 CMP R1,#+10
\ 00000028 08D0 BEQ.N ??ASCII_IsPunct_3
\ 0000002A C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000002C 0C29 CMP R1,#+12
\ 0000002E 05D0 BEQ.N ??ASCII_IsPunct_3
\ 00000030 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000032 0929 CMP R1,#+9
\ 00000034 02D0 BEQ.N ??ASCII_IsPunct_3
\ 00000036 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000038 0B29 CMP R1,#+11
\ 0000003A 01D1 BNE.N ??ASCII_IsPunct_4
\ ??ASCII_IsPunct_3:
\ 0000003C 0120 MOVS R0,#+1
\ 0000003E 00E0 B.N ??ASCII_IsPunct_5
\ ??ASCII_IsPunct_4:
\ 00000040 0020 MOVS R0,#+0
\ ??ASCII_IsPunct_5:
\ 00000042 0028 CMP R0,#+0
\ 00000044 2CD1 BNE.N ??ASCII_IsPunct_2
\ 00000046 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000048 4129 CMP R1,#+65
\ 0000004A 04D3 BCC.N ??ASCII_IsPunct_6
\ 0000004C C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000004E 5B29 CMP R1,#+91
\ 00000050 01D2 BCS.N ??ASCII_IsPunct_6
\ 00000052 0120 MOVS R0,#+1
\ 00000054 00E0 B.N ??ASCII_IsPunct_7
\ ??ASCII_IsPunct_6:
\ 00000056 0020 MOVS R0,#+0
\ ??ASCII_IsPunct_7:
\ 00000058 0128 CMP R0,#+1
\ 0000005A 0AD0 BEQ.N ??ASCII_IsPunct_8
\ 0000005C C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000005E 6129 CMP R1,#+97
\ 00000060 04D3 BCC.N ??ASCII_IsPunct_9
\ 00000062 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000064 7B29 CMP R1,#+123
\ 00000066 01D2 BCS.N ??ASCII_IsPunct_9
\ 00000068 0120 MOVS R0,#+1
\ 0000006A 00E0 B.N ??ASCII_IsPunct_10
\ ??ASCII_IsPunct_9:
\ 0000006C 0020 MOVS R0,#+0
\ ??ASCII_IsPunct_10:
\ 0000006E 0128 CMP R0,#+1
\ 00000070 01D1 BNE.N ??ASCII_IsPunct_11
\ ??ASCII_IsPunct_8:
\ 00000072 0120 MOVS R0,#+1
\ 00000074 00E0 B.N ??ASCII_IsPunct_12
\ ??ASCII_IsPunct_11:
\ 00000076 0020 MOVS R0,#+0
\ ??ASCII_IsPunct_12:
\ 00000078 0128 CMP R0,#+1
\ 0000007A 0AD0 BEQ.N ??ASCII_IsPunct_13
\ 0000007C C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 0000007E 3029 CMP R1,#+48
\ 00000080 04D3 BCC.N ??ASCII_IsPunct_14
\ 00000082 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000084 3A29 CMP R1,#+58
\ 00000086 01D2 BCS.N ??ASCII_IsPunct_14
\ 00000088 0120 MOVS R0,#+1
\ 0000008A 00E0 B.N ??ASCII_IsPunct_15
\ ??ASCII_IsPunct_14:
\ 0000008C 0020 MOVS R0,#+0
\ ??ASCII_IsPunct_15:
\ 0000008E 0128 CMP R0,#+1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -