一二进制数转换为ASC码【DOC精选】.docVIP

  • 14
  • 0
  • 约4.76千字
  • 约 6页
  • 2017-02-16 发布于江苏
  • 举报
一 二进制数转换为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中的二进制无符号数, 低地址中放低字节数据。假设被减数大于减数。 注意:(1)sub指令减出结果为正时,c标志置1。 (2)sub指令减出结果为0时,c标志也置1。 即,sub指令执行后,c标志清0表示结果为负。 main: mov a,@0x67 ;赋值 mov 0x20,a mov a,@0xff mov 0x21,a mov a,@0xe8 mov 0x22,a mov a,@0x44 mov 0x23,a ; 高字节相减 sub a,0x21 mov 0x25,a ;结果存0x25 mov a,0x22 ;低字节相减 sub a,0x20 mov 0x24,a jbs 0x03,0 dec 0x25 ;有借位则0x25减1 self: jmp self eop 四 二进制乘法运算 EM78单片机没有乘法指令,所以乘法运算需要转化为加法运算。0X20单元数据乘以0X21单元数据,结果放在0X22,0X23中。 main: mov a,@0x0 ;0x22,0x23单元清0 mov 0x22,a mov 0x23,a mov a,@0x3f ;赋值 mov 0x20,a mov a,@0x22 mov 0x21,a mul1: mov a,0x20 ;0x20与0x22内容相加 add 0x22,a jbc 0x03,0 inc 0x23 ;有进位0x23加1 djz 0x21 ;0x21中次数减到0则结束 jmp mul1 ;没减到0则继续 self: jmp self eop 五 二进制除法运算 多字节二进制除法 被除数为3个字节,在0x20、0x21、0x22单元中,0x22.7为最高位,0x20.0为最低位。 除数为2个字节,在0x30、0x31中。 算法:EM78单片机没有除法指令,而且本例中除法为多字节除法,可采用如下算法。 将被除数扩充一个字节0X23,0X23清0。被除数左移1位,0X23、0X22中数据减去0X31、0X30中数据,够减则减且0X20.0置1,减出结果存入0X23、

文档评论(0)

1亿VIP精品文档

相关文档