为什么单片机51汇编程序,累加器有时候要写成ACC,有时候却要写成A .否则都会报错?比如:CJNE A,#08H,LOOP1这里如果A,写成ACC就会报错……

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 00:33:18
为什么单片机51汇编程序,累加器有时候要写成ACC,有时候却要写成A .否则都会报错?比如:CJNE A,#08H,LOOP1这里如果A,写成ACC就会报错……

为什么单片机51汇编程序,累加器有时候要写成ACC,有时候却要写成A .否则都会报错?比如:CJNE A,#08H,LOOP1这里如果A,写成ACC就会报错……
为什么单片机51汇编程序,累加器有时候要写成ACC,有时候却要写成A .否则都会报错?
比如:
CJNE A,#08H,LOOP1
这里如果A,写成ACC就会报错……

为什么单片机51汇编程序,累加器有时候要写成ACC,有时候却要写成A .否则都会报错?比如:CJNE A,#08H,LOOP1这里如果A,写成ACC就会报错……
这是51的系统架构决定的.因为51累加器有2个地址,一是特殊功能寄存器地址,指令使用这个地址访问累加器,是已明确知道访问对象就是累加器,是专指的,这是用A表示.比如ADD A,03H,因为在51中,ADD 的第一对象就是累加器,而不能用别的寄存器,用A可以少打俩字母CC.
另外一个是累加器的直接内存地址,指令访问时并不明确访问对象是什么,因为访问地址是程序员编程决定的.比如PUSH/POP指令,在51的定义里是PUSH/POP direct,这个direct可以是0~255.指令事前并不知direct到底是多少,这时将direct写成ACC,编译器就找到默认的地址E0H,而将它编译出来.
如果你熟悉51单片机,应不会有这样的疑问.不过,不管是否熟悉51系统,开始时尽管讲累加器些成A.,而不写成ACC.当编译器提示出错时,将A 改成ACC即可.所以这样做的原因,是因为大多数51中访问特殊功能寄存器的速度要比访问直接地址内存快,特别累加器的特殊功能寄存器地址,访问速度时最快的.
类似的情况还存在通用寄存器组R0~R7上.它们跟累加器一样同时有寄存器地址和直接内存地址,有的编译器如果 Keil 将它们的直接内存地址写成AR0~AR7.访问寄存器地址也比访问内存地址快.

写程序,给人看,就可以随意一些。
如果想用软件来编译,你就必须按照这个软件要求的格式来写。
各种编译软件,要求的格式,不完全相同。
常用什么软件?
摸透它的脾气,即可令它为我们干活。

acc is register. a is a unseparatable part of opcode.
在mov指令中可通用,用"a"时为2字节1周期;用"acc"时为3字节2周期。
在mov指令中可通用,用"a"时为2字节1周期;用"acc"时为3字节2周期。
尽管物理地址相同,但push是对寄存器操作,而movx是对累加器操作。
尽管物理地址相同,但push...

全部展开

acc is register. a is a unseparatable part of opcode.
在mov指令中可通用,用"a"时为2字节1周期;用"acc"时为3字节2周期。
在mov指令中可通用,用"a"时为2字节1周期;用"acc"时为3字节2周期。
尽管物理地址相同,但push是对寄存器操作,而movx是对累加器操作。
尽管物理地址相同,但push是对寄存器操作,而movx是对累加器操作。

收起

也许是汇编语言的规定吧

为什么单片机51汇编程序,累加器有时候要写成ACC,有时候却要写成A .否则都会报错?比如:CJNE A,#08H,LOOP1这里如果A,写成ACC就会报错…… 急求基于51单片机和DS18B20的数字温度计设计要proteus原理图能仿真和汇编程序,466851514谢了 "sbit ACC7=ACC^7;//累加器A 51单片机原理"是什么意思? AT89C51单片机与通过RS232与PC机通信汇编程序 为什么51单片机P0口有时候要加上拉电阻才能用,有些芯片直接可以接P0口不用上拉电阻就可以用 为什么说51单片机是八位单片机 请教大虾旋转式编码开关(3管脚的)与51单片机,实现测量转动位移量,汇编程序或c怎么写? 急求单片机控制步进电机加减速/正反转的汇编程序 51单片机为什么要用12M的晶振 51单片机P0口为什么要接上拉电阻? 51单片机p1=oxff是什么意思,为什么要这样定义 MCS-51单片机中立即寻址方式中,MOV,A,#52H,意思是把立即数52H送到累加器A中.书上说它的机器码是74H 52H,74H 是怎么来的? 单片机怎么判断累加器A中高四位或者低四位大于9或者小于9,能举个例子么? 单片机定时器为什么要分频呢 什么是累加器?计算器的累加器? 单片机基础累加器A中存放着一个其值小于或等于127的8位无符号数,CY清0后执行“RLC A”指令,则A中的数变成原来的几倍——————————答案是2问:为什么啊.看不懂 为什么RF2500与51系列单片机P0口连接要加上拉电阻? 51单片机的程序问题 将累加器A中低四位的状态,通过P1口的高4位输出.ANL A,#0FH ;屏蔽A.A.4SWAP A ;高、低半字节交换ANL P1,#0FH ;清P1口高四位ORL P1,A ;使P1.P.1.4按A中初始值的A.A.0值置位里面的“屏