找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 899|回复: 3
收起左侧

关于汇编asc码转16进制问题

[复制链接]
ID:73992 发表于 2023-3-2 22:47 | 显示全部楼层 |阅读模式
DSC00177_看图王.jpg
这是asc码转成对应的16进制数程序,书上的CJNE A,0AH,ASCTH1 这句我不明白为什么。因为0到16的asc码减去0x30,没有等于0AH的,既然没有等于0ah的,这条指令在这里相当于sjmp。如果是sjmp直接可以省略了。那么这里的判断原理是什么呢。书上的程序如果是0到九计算错误。只是想知道他的思路是什么。


DSC00179_看图王.jpg

以下是我自己写的,试过能用。

无标题.jpg
回复

使用道具 举报

ID:884147 发表于 2023-3-3 09:44 | 显示全部楼层
CJNE A,0AH,ASCTH1 表面看没有任何作用,实际是会影响标志位C的,在这里起到比较作用,当A<0AH时C=1,否则C=0 下面的JC语句是根据这个C判断转移的。
回复

使用道具 举报

ID:73992 发表于 2023-3-19 12:46 来自手机 | 显示全部楼层
mtdzok 发表于 2023-3-3 09:44
CJNE A,0AH,ASCTH1 表面看没有任何作用,实际是会影响标志位C的,在这里起到比较作用,当A

我发现 程序中如果不加clr cy 那么有的时候 acc的值会自动减1。就是说mov a,#0x32     subb a,#0x30    cjne a,#0x0a,asch  当程序执行到cjne这条语句后,acc的值有时候会自动减1 有时候不减,。加上clr cy 就没发现这个问题
回复

使用道具 举报

ID:884147 发表于 2023-3-19 15:19 | 显示全部楼层
lyonkon 发表于 2023-3-19 12:46
我发现 程序中如果不加clr cy 那么有的时候 acc的值会自动减1。就是说mov a,#0x32     subb a,#0x30    ...

减法指令开始之前一定要加CLR C,SUBB 是带标志位C一起减的,很多指令是影响C的。第二个程序就缺乏CLR C结果会出问题。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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