找回密码
 立即注册
查看: 244|回复: 1

〖51经典汇编,功能模块欣赏〗1~4字节内容左对齐,不影响任何其他资源

[复制链接]
  • TA的每日心情
    开心
    18 小时前
  • 签到天数: 144 天

    [LV.7]常住居民III

    39

    主题

    881

    回帖

    4052

    积分

    荣誉版主

    积分
    4052
    发表于 2023-12-14 03:33:24 | 显示全部楼层 |阅读模式
    本帖最后由 LAOXU 于 2023-12-14 03:48 编辑

    R4~R7寄存器,保存1~4字节右对齐内容,现将其移至左对齐。


    入口条件: R2 (保存flags域,应用于 51可重入 printf函数),

    出口:将 R4~R7寄存器内容左移后,末位填0, 不改变 ACC内容
                            
    执行如下汇编代码:

    #define LEFT                   0x04               //  '-'对指定的域宽度 左对齐输出
    sbit          bitLEFT   =        ACC.2
    #define PLUS                   0x08                   //  '+'如果输出是一个带符号类型,用+/-符号为输出
    sbit          bitPLUS   =        ACC.3
    #define SPACE                  0x10                   //  ' '输出值的前缀是空格(为0时), 否则, 前缀加 0 (为1时),
    sbit          bitSPACE  =        ACC.4
    #define SPECIAL                0x20                  //  '#'当用 o, x 和 X 域类型时,对非零输出值分别用 0, 0x, 或 0X 为前缀
    sbit          bitSPECIAL=        ACC.5                //     当用 e, E, f, g, 和 G 域类型时, '#'标记强迫输出值包含一个小数点
    #define DOT                    0x40                  //  '.'小数点   
    sbit          bitDOT    =        ACC.6  
    #define CHAR_B                0x01                  //  数据类型 char   
    sbit          bitCHAR_B =        ACC.0   
    #define LONG_L                0x02                  //  数据类型 long      
    sbit          bitLONG_L =        ACC.1     
    #define POSNEG                0x80                  //  有符号数 0: '+'号, 1: '-'号
    sbit          bitPOSNEG =        ACC.7   

    LONG_RRN:        XCH          A,R2
                            JB              bitLONG_L,SWAP_L           //  数据类型 long  
                            JNB            bitCHAR_B,SWAP_I          //  数据类型 char   
                            LCALL        LONG_RR
    SWAP_I:            LCALL        LONG_RR
                            LCALL        LONG_RR
    SWAP_L:            XCH          A,R2
                            RET

    LONG_RR:         XCH          A,R4
                            XCH          A,R5
                            XCH          A,R6
                            XCH          A,R7
                            CLR           A
                            XCH          A,R4
                            RET
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    12 小时前
  • 签到天数: 130 天

    [LV.7]常住居民III

    10

    主题

    220

    回帖

    518

    积分

    高级会员

    积分
    518
    发表于 2023-12-14 08:33:31 | 显示全部楼层
    学习了
    回复 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-15 20:29 , Processed in 0.053446 second(s), 32 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表