一 二进制数转换为ASCⅡ码
将一个字节的二进制数转换为两位16进制数的ASCⅡ码
main: mov a,@0x9f 二进制数为0x9f
mov 0x30,a 二进制数存入0x30
mov a,@0x02
mov 0x10,a 0x10中存放转换次数
mov a,@0x31
mov 0x04,a 0x04中为转换后数据存放地址
mov a,0x30
B1: and a,@0x0f 取a低4位
mov 0x00,a
sub a,@0x09 低4位大于9跳往B2
jbs 0x03,0
jmp B2
mov a,0x00 低4位不大于9则加0x30
add a,@0x30
mov 0x00,a 将ASCⅡ码存入0X04所指单元
jmp B3
B2: mov a,0x00 大于9则加0X37
add a,@0x37
mov 0x00,a
B3: swapa 0x30 将0X30高4位换入A低4位
inc 0x04 存储地址加1
djz 0x10 循环次数减1,为0则返回
jmp B1 不为0继续转换
self: jmp self
eop
二 多字节二进制加法
0X20,0X21中的二进制无符号数与0X22,0X23中的二进制无符号数相加,结果放在0X24,0X25,0X26中,低地址中放低字节数据。
Main: mov a,@0x78 赋值
mov 0x20,a
mov a,@0xc6
mov 0x21,a
mov a,@0x86
mov 0x22,a
mov a,@0x9e
mov 0x23,a
mov a,@0x0 0x26单元清0
mov 0x26,a
mov a,0x21
add a,0x23
mov 0x25,a 高字节相加,结果送0x25
jbc 0x03,0
inc 0x26 有进位则0x26加1
mov a,0x20
add a,0x22
mov 0x24,a 低字节相加,结果送0x24
jbs 0x03,0
jmp self 无进位跳self
inc 0x25 有进位0x25加1
jbc 0x03,0
inc 0x26 有进位0x26加1
self: jmp self
eop
三 多字节二进制减法
0x20,0x21中的二进制无符号数减0x22,0x23中的二进制无符号数, 低地址中放低字节数据。假设被减数大于减数。
上一篇:EMC单片机写的I2C程序