51单片机指令问题,所下图所示,坐等!!!

其中第2条指令C表示什么寄存器,JNC WAIT,XCH A 41H ,WAIT SJMP WAIT分别表示什么意思

MOV A, 40H ; 将 RAM 地址 40H 里的数据 送入 累加器 A 中
CLR C ; 将 进位标志位 CY 清零
SUBB A, 41H ; 将 A 减 41H 里的数据,(如果 C =1 则再减1),结果送入 累加器 A
; 如果 不够 减 则借位 并且使 C = 1
JNC WAIT ; 如果 C = 0 则 跳转 至 地址 WAIT 处 ,C = 1 则 往下一条继续 执行
MOV A, 41H ; 将 RAM 地址 41H 里的数据 送入 累加器 A 中
XCH A, 41H ; 将 RAM 地址 40H 里的数据 与 累加器 A 中的数据 交换。
-------
MOV A, 40H ; 将 40H 的数据 送入 A
WAIT: SJMP WAIT ; 这里为 地址 WAIT, 指令为 无条件 跳转 指令,就是继续执行本条指令
; WAIT 为程序地址 标号,相当于 门牌号。可以随意编排。
; 有 跳转 指令,就必须有 跳转 到一个 位置,就是地址。
END ; 为程序 到此结束。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-30
这个程序前四条是比较大小的
第一条指令:把40H地址里的内容传递给A
第二条指令:把Cy清零,那个C不是一个寄存器,它是A寄存器里的一个位,把C位清零,在下面一条有用
第三条指令:用A减去41H地址里的内容,注意,此处是带借位减法,如果A>=41H里的内容,那么,
A寄存器里面的Cy位(第二条里的C)就不会变化,如果A<41H,那么C就会变成1
第四条指令:如果C不等于0,也就是说,40H里面的内容数值比41H小,那就跳转到WAIT标识的地方,
也就是跳到程序的倒数第二行, 去执行 SJMP WAIT:这句话.如果C等于0,也就是说,
40H里面的内容大于41H或者等于41H,那么,就执行第五条指令
第五条指令:把41H的内容传递给A寄存器
第六条指令:把A寄存器里的内容与41H的内容进行交换本回答被网友采纳
第2个回答  2013-01-30
CLR C表示将进位标志位CY清0
JNC WAIT表示如果CY=0,则PC加2再加上WAIT的地址作为目标跳转地址;
XCH A 41H 表示将A中的值与地址为41H的寄存器内的值互换;
WAIT:SJMP WAIT WAIT是地址标识符追问

jnc和wait分开解释是什么意思?

追答

分开没有意义。非要分开的话,jnc表示根据CY的值看情况跳转。而wait只是一个地址标识符,可以随便取个名字,不是指令名称。

追问

还是理解不了,前面4条指令能解释下吗?

追答

你还不如网上搜索一下标准8051指令系统,看看具体讲解。比较多,这里说不清楚。

本回答被提问者采纳
第3个回答  2013-01-31
C为进位位标志位,如果是减法借位标志位;
XCH 字节交换指令 累加器A的内容和41H单元内容交换;
WAIT: SJMP WAIT 循环等待
第4个回答  2013-02-02
新人,不建议你从汇编学起,会把你学成傻瓜的,先从C做起
相似回答