在执行ADDC指令执行过程后,A=3CH,在执行DA,则A=()

赞助商链接
当前位置: >>
第3章指令系统3.3 指令系统分类介绍 3.2.2 算术运算类指令(24条)―― 普通加法指令(4条)Rn ADD A ,都会影响程序状态字PSW结果在A中direct@Ri #dataADD ADD ADD ADDA,Rn ; A ←(A)+(Rn) A,direct ;A ←(A)+(direct) A, @Ri ;A ←(A)+((Ri)) A,#data;A ←(A)+data例:将内部RAM中40H和41H单元的数相加,再把和 送到42H单元。 MOV A, 40H ADD A, 41H MOV 42H, A 例:加数存放在内部RAM的41H(高位)和40H ―― 带进位加法指令(4条) (低位),被加数存放在43H(高位)和42H(低 位),将它们相加,和存放在46H~44H中。 Rn ADDC A , Rn CLR C ADDC A , direct ADDC A,direct ? MOV A, 40H ADDC A, @ Ri @Ri ? ADD A, 42H ADDC A,#data #data ? MOV 44H,A ;A ←(A)+data+(CY) ? MOV A, 41H ? ADDC A, 43H 除相加时要考虑进位外,其余操作与 ADD相同。 ? MOV 45H,A ? CLR A ? ADDC A, #00H ? MOV 46H,A ―― 减法指令(4条)Rn SUBB A ,结果在A中SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data (a)-(r1)-(c)---(a)direct@Ri #data1. 减法指令影响OV、CY、AC标志位 2. 减法指令是带借位的,若不需要带借位减,可在减 法指令前清除借位位。例:MOV A , #78H CLR C SUBB A , #26H无SUB ―― 加1指令(5条)INC A ;A←(A)+1 INC RRn←(Rn)+1 INC @R(Ri)←((Ri))+1 间址内容加 INC (A)=FFH,(R0)=25H,(26H)=3AH,(DPTR)=2000Hdirect←(direct)+1 例:设 执行程序: INC A INC DPTR ;DPTR←(DPTR)+1INC R0INC @R0 P标志,其它指 注意:只有第1条指令影响 INC DPTR 令对标志位无影响。结果为: (A)=00H,(R0)=26H,(26H)=3BH,(DPTR)=2001H ―― 减1指令(4条)DEC DEC DEC DECA Rn @Ri direct;A←(A)-1 ;Rn←(Rn)-1 ;(Ri)←((Ri))-1 ;direct←(direct)-1思考:设(A)=FFH,(R0)=27H,(26H)=3AH 执行程序: DEC A 注意: 1. 只有第 1条指令影响 P标志,其它 DEC R0 指令对标志位无影响。 DEC @R0FEH ,(R0)=____ 26H ,(26H)=_____ 39H 结果(A)=____ 。2. DPTR只有加1指令,无减1指令 ―― 乘法指令(1条)MUL AB―― 除法指令(1条)DIV AB两个8位操作数A、 B相乘,形成16位 的积,乘积的低位字节放在A中,高位字节 放在寄存器B中两个8位操作数相除, 其中A为被除数而B为 除数。运算结果仍然 在AB中,其中A为商 而B为余数。若积大于255,溢出 标志位OV为1,而 Cy总是0。Cy和OV均清0。只有 当除数B为0时,A和B 中的内容为不确定值, 此时OV置位。 ―― 十进制调整指令(1条) DA A1. 此指令用来对BCD码的加法运算结果自 动进行修正,但对BCD码的减法运算不能用此 指令进行修正。2. 在进行BCD码运算时,加法指令ADD或 ADDC后面要紧跟一条十进制调整指令。3. DA指令只影响进位标志CY。 例 : 设ACC中为压缩BCD码56H,R3中为压缩BCD 码67H,且Cy=1,求ACC与R3的压缩BCD码之和。MOVMOVA,#56HR3,#67H(A) = (R3)=ADDC A,R3 DA A+)(Cy)= 和 = (BE) ;A=? 调整 +) 1 00100结果BCD码为124 (123 + Cy ) 3.2.3 逻辑及移位类指令―― 逻辑与指令(6条)例:ANL A,R4ANL A,Rn A 1 0 0 0 1 1 1 1 ANL A,@Ri ? ) 1 0 0 1 0 1 1 0 R4 ANL A,#dtat ANL A,direct 1 0 0 0 0 1 1 0 A ANL : direct,A 程序设计 ANL direct ,#data 读入 P1口的数据 ,将其低 4位清0,高4位保留,再把结果放到内部RAM 的40H单元。 1. 两个操作数按位进行与运算。MOV P1,#0FFH ;使P1口置位输入方式,先要写1 ANL P1,#B MOV A,P1 ;读P1口数据到 A P1中高2位不变,低 6位清 0。 2. 上述 指令前4条结果送入 A0f 中,执行后影响 P 。后0 2条 ANL A,#0F0H ;A的高4位和 与,不变,低4位和0 与,清 指令结果送入直接地址单元中。 MOV 40H,A ;把Acc的值写到片内RAM40H单元 ―― 逻辑或指令(6条) ORL ORL ORL ORL ORL ORL A,Rn A,@Ri 1 A,#dtat ? ) 1 A,direct 1 direct,A direct,#data 例:ORL A,R4 0 0 0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 1 1 1 1A R4A1. 两个操作数按位进行或运算。 ORL P1:, #B 程序设计举例 将串口缓冲区 SBUF中的数据送到内部RAM40H 单元 ,再将其低 7位 (D6~D0) 全部变成1. P1中高 3位置 1,低 5 位不变。2. 指令前 4条结果送入 A中,执行后影响P。 MOV 40H,SBUF3. 后2条指令结果送入直接地址单元中。 ORL 40H,#7FH ―― 逻辑异或指令(6条)XRL A,Rn XRL A,@Ri 10 1 0 0 1 1 1 A XRL A,#dtat +) 1 0 0 0 0 1 1 1 R4 XRL A,direct 00 1 0 0 0 0 0 A XRL direct,A 异或指令可用于判断两个字节中的数据是否相等 . 程序设计 :如果(40H)=(60H), XRL direct ,#data 将PSW中的F0位置1.CLR F0 1. 两个操作数按位进行异或运算。 MOV A,40H 2. 指令前4条结果送入 A中,执行后影响P。 XRL A,60H JNZ OUT 后2条指令结果送入直接地址单元中。 SETB F0 ; (40h)=(60h) f0=1 ….. out: ….. ;(40h)&&(60h)例:XRL A,R4 ―― 逻辑异或指令(6条) XRL XRL XRL XRL XRL XRL A,Rn A,@Ri A,#dtat A,direct direct,A direct,#data例:XRL A,R410 1 0 0 1 1 1 A +) 1 0 0 0 0 1 1 1 R4 00 1 0 0 0 0 0 A 0 + 0= 0 0 + 1= 1 要求P1中高3位取反,低5位不变。 1 + 0= 1 1 + 1= 0 XRL P1,#B相同为0,相异为1 和0异或结果不变 和1异或结果求反 ―― 累加器A清0和取反指令求反指令(1条) CPL A ;累加器中的内容按位取反清零指令(1条) CLR A ;累加器中的内容清0 ―― ? 循环移位指令RL A RR A RLC A RRC AA.7A.0A.7A.0CYA.7A.0CYA.7A.0注意: 执行带进位的循环移位指令之前,必须根据程 序要求给CY置位或清零。 3.2.4 控制转移类指令 ―― 无条件转移指令(4条) 1) 长转移指令:LJMP addr16 ; addr16?PC例:LJMP 1000H? ? ?PC=1000H1000H 0FFFH假设执行该指 令前,PC的值 为0000H。? ? ?PC=0000HH 0000H注意:该指令可以转移到64 KB程序存储器中的任意位置。 2)绝对转移指令(在2KB范围)AJMP addr11;(目标语句)11位转移地址的范围000H---7FFH? ? ? ?例: 4002H4600HAJMP MM (addr11) …… MM: MOV A,#00H注意:目标语句必须和当前语句同页。在51单片机中, 64KB程序存储器分成32页,每页2KB(7FFH)。 ? 比如: 0000H~07FFH ? 0800H~0FFFH ? 1000H~17FFH ? 1800H~1FFFH? PC+2?PC, addr11 ?PC.10~PC.0 2)绝对转移指令AJMP addr11 ; PC+2?PC, addr11 ?PC.10~PC.0 操作数(第二字节) A7 A6 A5 A4 A3 A2 A1 A0操作码(第一字节) A10 A9 A8 0 0 0 0 1程序计 数器PC PC高5位(保持不变, 在本页)PC低11位 P65例:执行2070H AJMPAJMP16AH 转到哪里?16AH ; PC+2?PC, addr11 ?PC.10~PC.0(1)PC+2?PC(2):11 0010(2)16AH:001 0010 0 程序计 数器PC PC高5位 (保持不变) PC低11位 001 (3)结果转移到 216AH位置 3)相对转移指令 (短转256KB实际为正负的范围) SJMP rel ----8位二进制 FF 目的地址=(PC)+2 + rel 例: SJMP 03H例:机器码 8003SJMP …… 2006H PC H LOOP:MOV 2004H 03 H A,#0FFH 2003H PC 03 …… 2002H 80 实际使用中常写成 注意:短跳转的目标语句地址必须在当前语句向前 128 SJMP addr16,汇编时会自动 0002H (80H)字节,向后 127(7FH)字节,否则在进行程序编 0001H 转换成rel。 0000H 译时肯定出错。4060H? ? ?03H就是当前PC值 LOOPPC值相对差 与目的 例1:835AH SJMP 35H向地址增大方向转目的地址=(PC)+2 + rel 835AH+2+35H=8391H例2:835AH SJMP E7H ;E7H是负数19H的补码, 是向后转的。(反码加1计算) 目的地址=(PC)+2 + rel 835AH+2-19H=8343H 向地址减小方向转 4)散转指令(变址寻址转移,无条件转 64 KB)程序设计举例: 助记符格式 机器码 (B) 相应操作 机器周期 如果 (A)=00H,执行 SS子程序;如果 (A)=01H,执行 MM子 程序;如果(A)=02H ,执行XX子程序。
JMP @A+DPTR 2 PC ?A+DPTR ? ORG 4000H ? MOV DPTR, #5000H ? MOV R2,A 该指令主要用于多分支的跳转程序设计。跳转 ? CLR C ? RLC 的目标地址是累加器 AA 和数据指针DPTR之和,它 ? ADD A, R2 ?可以是64KB存储空间的任何地方。 JMP @A+DPTR ? …… ? ORG 5000H ? 5000H LCALL SS (3个字节指令) ? 5003H LCALL MM ? 5006H LCALL XX 比较LJMP、AJMP、SJMP、JMP转移的起点和范围:-128 PC PC LJMP 64K AJMP SJMP JMPPC+2PC+2DPTR+127 2KB范围256LJMPAJMPSJMPJMP @A+DPTR ――条件转移指令(8条)实现按照一定条件决定转移的方向,分三类:判零转移指令 比较转移指令 循环转移指令 1)累加器 A 判0指令(2条)助记符格 式 机器码 (B) 相应操作 若A=0, 则PC?PC+rel, 否则程序顺序 执行 机器 周期 2JZ rel0110000JNZ rel程序举例: 0111000 若 A≠0, 则PC PC+rel, 否则程序顺序 MOV A, ? #10H 0 执行 JZ OUT MOV R2,#30H …… …… OUT: RLC A ……2 2)比较转移指令(4条)? CJNE A,#00H,SS 机器 助记符格式 机器码(B) 相应操作 周期 ? …… ? CJNE A,#10H,MM 若 A≠#data, 则 PC?PC+rel , 否 则 CJNE
顺序执行;若 A&#data ,则 CY=1 , A,#data,rel data? rel …… 否则CY=0 ? CJNE A,#20H,XX 若 Rn≠#data , 则 PC?PC+rel , 否 10111rrr CJNE ? …… 则顺序执行;若 Rn&#data ,则 CY=1 , 2 Rn,#data,rel data rel 否则CY=0 ? …… ? SS:若(Ri)≠#data,则 …… PC?PC+rel ,否 1011011i CJNE 则顺序执行;若 (Ri)&#data, 则 CY=1 , 2 …… @Ri,#data,rel data? rel 否则CY=0 ? MM:……
若A≠(direct),则 PC?PC+rel ,否 CJNE ? 2 direct 则 顺…… 序 执 行 ; 若 A&(direct) , 则 A,direct,rel rel ? CY=1 ,否则CY=0 XX: …… ? …… 3) (2条) ? 减1非零转移指令 ORG 0000H? MOV R0,#30H ;数据源首地址 相应操作 机器周 助记符格 机器码 ? 式 MOV R1,#70H ;数据存放目标首地址 期 (B) Rn?Rn-1 , ; 若 Rn≠0 , 则 ? MOV R2,#10H 数据个数 2 DJNZ 11011rrr PC?PC+rel, 否则顺序执行 ?Rn, LOOP: MOV A,@R0 rel rel ? MOV @R1,A 1101010 (direct)?(direct)-1,若 1INC ?DJNZ (R0 direct ) ≠ 0 , 则 2 direct,rel direct PC ?PC+rel,否则顺序执行 ? INC R1 rel ? DJNZ R2,LOOP ? SJMP $ 例如: DJNZ R5, LOOP ? END ――子程序调用和返回指令组(8条)1)绝对调用指令(1条)助记符格式 ACALL addr11 机器码(B) 相应操作 PC ?PC+2 机器周期a10a9a810001 addr7~0SP ? SP+1,(SP)?PC0~7SP ? SP+1,(SP)?PC8~15 PC0~10 ? addr1122)长调用指令(1条)助记符格式 机器码(B) 相应操作 机器周期LCALL addr16 addr15~8 addr7~0PC?PC+3SP? SP+1,SP?PC0~7 SP?SP+1, SP?PC8~15 PC? addr16 2 3)返回指令助记符格式 RET 子程序返回指 令 RETI 中断返回指令 机器码(B)
相应操作 PC8~15 ? (SP), SP ?SP-1 PC0~7 ? (SP), SP ?SP-1 PC8~15 ? SP, SP ?SP-1 PC0~7 ? SP, SP ?SP-1 机器周期 224)空操作指令助记符格式 NOP 机器码(B)
相应操作 空操作 指令说明 消耗1个机器周期 3.3.5----位操作类指令包括:位传送指令、条件转移指令、位运算指令。 位操作由单片机内布尔处理器来完成。 位地址的四种表示: 1)使用直接位地址表示;如20H、30H、33H等; 2)使用位寄存器名来表示;如C、OV、F0等; 3)用字节寄存器名后加位数来表示;如PSW.4、P0.5、ACC.3等;4)字节地址加位数来表示;如20.0、30.4、50.7等。 1.位传送指令助记符格 式 机器码 (B) 相应操 作 指令说明 机器周 期MOV C,bitMOV bit,C1010001 CY? 0 bit1001001 bit? 0 CY位传送指令,结果影 响CY标志位传送指令,结果不 影响PSW22 2.位置位和位清零指令助记符格 式 CLR C 机器码(B)
相应操作 CY? 0 指令说明 位清 0 指令,结果影响 CY 标志 机器周 期 1CLR bitSETB C SETB bit bitbit? 0CY?1 bit? 1位清0指令,结果不影响 PSW位置 1 指令,结果影响 CY 标志 位置1指令,结果不影响 PSW11 1 bit例如: CLR P1H.0 SETB F0 3.位逻辑运算指令助记符格式 ANL C,bit ANL C/bit ORL C ,bit ORL C/bit CPL C CPL bit 机器码(B)
bit 10010 相应操作 CY? CY∧bit CY? CY∧bit CY? CY∨bit 指令说明 位与指令 位与指令 位或指令 位或指令 位取反指令 位取反指令,结果 不影响CY 机器周期 2 2 2 2 2 2CY? CY∨bitCY?CY bit?bit 4.判CY标志转移指令助记符格 式 JC rel 机器码 (B) 相应操作 机器周 期 20100000 若 CY=1 , 则 PC?PC+2+rel , 0 否则顺序执行 rel 0101000 若 CY≠1 , 则 PC?PC+2+rel , 0 否则顺序执行 relJNC rel2 5.判位转移指令助记符格式 JB bit,relJNB bit,rel机器码(B) bit rel rel相应操作 若 bit=1 ,则 PC?PC+3+rel ,否 则顺序执行机器周期 22bit 若 bit=0 ,则 PC?PC+3+rel ,否 则顺序执行JBC bit,rel若 bit=1 , 则 PC?PC+3+rel ,
bit bit?0,否则顺序执行 rel2 4.5 伪指令1. 什么是伪指令? 伪指令又称汇编程序控制译码指令,属说明性汇 编指令。 ? “伪”字体现在汇编时不产生机器指令代码,不影响程序的执行,仅产生供汇编时用的某些命令,在汇编时执行某些特殊操作。 ? 如END表示编译到此结束。 2. 伪指令(1)定位伪指令 ORG 地址表达式 例如:ORG 1000H ; MOV A,#20H规定程序块或 数据块存放的 起始位置。 (’ Origin) 表示指令 MOV A,#20H 存放于1000H开 始的单元。 表示从1000H单元开始 字节数据表可以是多个字节 的地方存放数据2BH, 数据、字符串或表达式,它 0A0H,41H(字母A的 表示将字节数据表中的数据 ASCII码),08H 从左到右依次存放在指定地(2)定义字节数据伪指令 DB 字节数据表例如: ORG 1000H 址单元。 TAB: DB 2BH, 0A0H, ‘A’, 2*4 ; (3)定义字数据伪指令 DW 字数据表 例如: ORG 1000H DATA: DW 324AH, 3CH与DB类似,但 DW定义 表示从 1000H单元开始 的数据项为字,包括 的地方存放数据 32H, 两个字节,存放时高 4AH,00H ; 3CH 位在前,低位在后。 ( 3CH以字的形式表示 为003CH) 从指定的地址开始,保留 若干个存储单元作为备用 的空间。 从1000H开始的地方预留50 (H)个存储 字节空间。 22H存放在1032H单元(4)定义空间伪指令 DS 表达式 例如:ORG 1000H BUF: DS 50 TAB: DB 22H (5)符号定义伪指令 符号名 EQU 表达式 例如: LEN EQU 21H … MOV A,#LEN(6)汇编结束伪指令 END将符号定义为表达式 的值,只能定义单字 节数据,且必须先定 义后使用。执行指令后,累加器 A中的值为21H汇编语言源程序结束标志, 用于整个汇编语言程序的末 尾处。(7)位定义命令 BIT 符号名 BIT 位地址 :K1 BIT P1.0 作业:P74―75的一、二、三 1、数据传送类指令有几种类型? 是否影响标志位?2、算术运算类指令都有哪些类型? 3、逻辑操作分为哪两类操作? 4、循环移位指令每执行一次,移几位?5、ANL、ORL、XRL指令有哪些使用技巧?6、长转移与长调用指令有何区别? 7、长转移、短转移及相对转移的跳转范围有 什么不同? 8、位操作指令分为几类?9、位累加器C与字节累加器A有何区别?
更多搜索:
赞助商链接
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。关于 DA A 的解释 - 初学园地 -
51单片机学习论坛 www.51c51.com
- Powered by Discuz!
关于 DA A 的解释
单片机教授
关于 DA A 的解释
将累加器 A 作十进制调整
若(A) 3-0&9 或 (AC)=1
若(A)7-4&9或(C)=1
(A)7-4+6
上面关于DA A 本人迷茫中, 那位可以解释的详细一点、通俗一点呢?
有实例更好。
单片机教授
以下是引用dzkl168在 7:58:46的发言:
将累加器 A 作十进制调整
若(A) 3-0&9 或 (AC)=1
若(A)7-4&9或(C)=1
(A)7-4+6
上面关于DA A 本人迷茫中, 那位可以解释的详细一点、通俗一点呢?
有实例更好。
楼主首先需要搞清楚以下几点:
1.(A)7-4
和(A) 3-0
是什么意思[A累加器的高4位和低4位];
2.AC的含义[半进位位];
3.DA是十进制调整指令,就是针对十进制数运算的,如果结果A中的低4位和高4位>9就要修正;
自己去体会吧!
单片机教授
谢过 2楼 3楼 去深入体会了。
单片机高中生
单片机教授
以下是引用luckybirds在 11:48:46的发言:
十进制调整是指BCD码的。比如BCD码的21H,表示的就是十进制的21。所以十进制的码里面就没有大于9的。计算机在做加法时,对于BCD码在计算时还按照二进制计算的,所以算完后要进行十进制调整,这就是DA了。
例如:78H+56H,用ADD,或者ADDC计算完后,A里面的值是DEH,这个就不是BCD码了,在利用DA A调整后就变成A为44H,并产生进位,就是说,十进制的8+6=14,个位为4,进位1。7+5=13,十位为3,加上个位的进位就是4,再进位1。所以A的值就是44了。
这就是DA A 的全部过程!
你太大意了,哈哈!7+5=12,所以78H+56H=34H,而不是44H。
http://www.zy816.com
http://www.zy816.com/lzhiy0816
个人FTP服务器:
ftp://owner:owner@lzhiy0816.vicp.net
推荐使用FTP客户端软件(如:FlashFXP、CuteFTP)登录
单片机小学生
da a调整a中的数为bcd码if(ac == 1)& {低4位+6,ac = 1,高4位不+1;}//*注意1else if(低4位大于等于0x0a)&& {低4位+6,ac = 1,高4位+1;}else&& {低4位不变,ac = 0,高4位不变;}if(cy == 1)&&&{高4位+6,和 cy = 1,低4位不变, ac不变;}&//*注意2else& if(高4位大于等于0xa0)&& {高4位+6,和 cy = 1,低4位不变, ac不变;}else&& {高4位不变,和 cy = 0,低4位不变, ac不变;}注意1:当强制设置ac时此时可能出现错误 如:&mov& a,#09h&setb ac&clr& cy&da&& a&结果 a中是0x0f注意2:当强制设置cy时此时可能出现错误 如:&mov& a,#090h&clr ac&setb& cy&da&& a结果 a中是0x0f0以下试题来自:
填空题已知:(30H)=23H,(31H)=13H,(40H)=72H,(41H)=08H
MOV A,30H
ADD A,40H
MOV 30H,A
MOV A,31H
ADDC A,41H
MOV 31H,A
则结果为:(30H)=______H,(31H)=______H,(40H)=______H,(CY)=______。 95;21;72;0
为您推荐的考试题库
你可能感兴趣的试题
1.填空题 10ms1002.问答题 MOON:CLR C
SUBBA,#20H
NEXT:JNC MOON
ADD A,#20H
COM:MOV 40H,A 3.填空题 错误:MOVC A,@R7+DPTR
改正:MOVC A,@A+DPTR4.填空题 错误:DJNZ R7,DELAY
改正:DJNZ R7,A05.填空题 98H
热门相关试卷
最新相关试卷【图文】习题一(1-4)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
习题一(1-4)
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
已知 A=0C9H,B=8DH,CY=1 执行指令 ADDC A,B 结果?SUBB A,B结果?
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
ADDC A,B意为将A和B相加再放在A中.所以结果为0C9H+8DH=156H.SUBB A,B意为A减去B和CY后放进A中,所以结果为09CH-8DH-1=3CH.(H意思是16进制,你最好先转化成其它进制再计算.)
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 指令执行过程 的文章

 

随机推荐