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

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

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 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
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:382
  • 最近打卡:2025-04-30 16:48:47

10

主题

214

回帖

1519

积分

金牌会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:19 , Processed in 0.137592 second(s), 48 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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