收藏 分享(赏)

3.汇编与指令.ppt

上传人:天天快乐 文档编号:758563 上传时间:2018-04-21 格式:PPT 页数:167 大小:1.84MB
下载 相关 举报
3.汇编与指令.ppt_第1页
第1页 / 共167页
3.汇编与指令.ppt_第2页
第2页 / 共167页
3.汇编与指令.ppt_第3页
第3页 / 共167页
3.汇编与指令.ppt_第4页
第4页 / 共167页
3.汇编与指令.ppt_第5页
第5页 / 共167页
点击查看更多>>
资源描述

1、Freescale(Motorola) 16位DSP原理及开发技术,3.汇编语言及指令系统,由于多总线结构,DSP可实现指令的并行处理:,(1)单并行处理例: ADD X0 ,A Y0,X(R1)+N (2)双重并行处理例: MACR X0,Y0,A X:(R0)+N,Y X:(R3)-,X0 ;,双重并行处理一例,源2 目的2,第一位(用 XAB1 和 CGDB),第二位(用 XAB2 和 XDB2),操作码和操作数,MACR X0,Y0,A,X:(R0)+N,Y0,X:(R3)-,X0,并行处理,源1 目的1,计算式子,特殊寻址模式,固有的RTS寄存器直接寻址MOVEA1,N立即数寻址 A

2、DD #$2000,X1短立即数寻址MOVE #$001C,B1绝对地址寻址SUBX:$0800,A短绝对地址寻址MOVEX:$001C,R2I/O 短寻址 MOVEX:$FFEC,R2,立即数寻址,立即数寻址是指汇编指令中的操作数是一个数,用#表示后面是一个数值,一个立即数,X A 9 8 7 X X X X,目的地,16 位目的地,操作码,立即数,15,0,程序存储器,执行前,执行后,立即数进入16位寄存器的例子: MOVE #$A987,B1,X X X X X X X X X,B2,B0,15,0,31,16,32,35,B1,B2,B0,15,0,31,16,32,35,B1,B,立

3、即数寻址(续),立即数进入累加器,执行前,执行后,执行前,执行后,负立即数进入36位累加器的例子: MOVE #$A987,B,X X X X X X X X X,B2,B0,15,0,31,16,32,35,B1,B,F A 9 8 7 0 0 0 0,B2,B0,15,0,31,16,32,35,B1,B,X X X X X X X X X,B2,B0,15,0,31,16,32,35,B1,B,0 1 2 3 4 0 0 0 0,B2,B0,15,0,31,16,32,35,B1,B,正立即数进入36位累加器的例子: MOVE #$1234,B,执行后,执行前,$5432,数据存储器,例

4、: MOVE X:$5432,B0,绝对地址寻址是指操作数是一个绝对地址 引用操作数:程序存储器、数据存储器,程序存储器,程序或数据存储器,A B C D,15,0,操作码,绝对寻址,数据,绝对寻址,X X X X X X X X X,B2,B0,15,0,31,16,32,35,B1,B,X X X X X A B C D,B2,B0,15,0,31,16,32,35,B1,B,绝对地址寻址,地址寄存器直接寻址,地址寄存器直接寻址是指操作数是寄存器例:MOVE X1,A ;将X1寄存器的值传送给 A寄存器,寄存器间接寻址 MOVE A1,X:(Rn)带事后加1的寄存器间接寻址 MOVE A1

5、,X:(Rn)+带事后减1的寄存器间接寻址 MOVE X:(Rn)-,B1带事后加寄存器N的间接寻址 MOVE X0,X:(Rn)+N带寄存器N偏移量间接寻址 MOVE X1,X:(Rn+N)带16位偏移量的寄存器间接寻址 MOVE Y0,X:(Rn+xxxx)带R2 6位偏移量的寄存器间接寻址 MOVE A0,X:(R2+xx)带SP 6位偏移量的寄存器间接寻址 MOVE A0,X:(SP-xx),地址寄存器间接寻址模式,(1)寄存器间接寻址,$1000,数据存储器,X,X,X,X,$1000,R0,(无影响),N,(无影响),M01,$1000,R0,(无影响),N,(无影响),M01,1

6、5,0,15,0,15,0,15,0,15,0,15,0,15,0,$1000,数据存储器,1,2,3,4,15,0,执行后,执行前,0 1 2 3 4 5 6 7 8,A2,A0,15,0,31,16,32,35,A1,A,0 1 2 3 4 5 6 7 8,A2,A0,15,0,31,16,32,35,A1,A,例: MOVE A1,X:(R0),(2)带事后加1的寄存器间接寻址,$2501,数据存储器,X X X X,$2500,R1,(无影响),N,$FFFF,M01,$2501,R1,(无影响),N,$FFFF,M01,15,0,15,0,15,0,15,0,15,0,15,0,15

7、,0,$2500,数据存储器,15,0,执行后,执行前,A 6 5 4 3 F E D C,B2,B0,15,0,31,16,32,35,B1,B,A 6 5 4 3 F E D C,B2,B0,15,0,31,16,32,35,B1,B,X X X X,F E D C,X X X X,$2500,$2501,例: MOVE B0,X:(R1)+,(3)带事后减1的寄存器间接寻址,例: MOVE B,X:(R1)-,数据存储器,X X X X,$4735,R1,(无影响),N,$FFFF,M01,$4734,R1,(无影响),N,$FFFF,M01,15,0,15,0,15,0,15,0,15

8、,0,15,0,$4734,数据存储器,15,0,0 6 5 4 3 F E D C,B2,B0,15,0,31,16,32,35,B1,0 6 5 4 3 F E D C,B2,B0,15,0,31,16,32,35,B1,B,X X X X,6 5 4 3,X X X X,$4735,(4)带事后加N/减N的寄存器间接寻址,例: MOVE Y1,X:(R2)+N 执行前 执行后,$3204,数据存储器,X X X X,$3200,R2,N,$0004,M01,$3204,R2,N,$0004,M01,15,0,15,0,15,0,15,0,15,0,15,0,15,0,$3200,数据存储

9、器,15,0,5 5 5 5 A A A A,Y0,15,0,31,16,Y1,Y,5 5 5 5 A A A A,Y0,15,0,31,16,Y1,Y,X X X X,5 5 5 5,X X X X,$3200,$3204,(无影响),(无影响),(5)带有偏移量的寄存器间接寻址,例: MOVE X: (R0+offset), x1 读R0+offset指向的存储器到寄存器X1中Offset是小于63的数,指令占1字;大于63的数,指令占2字;Offset也可以是偏移量寄存器N,(6)带有偏移量的寄存器间接寻址(续),例: MOVE A1,X:(R2+N),F E D C B A 9 8 7

10、,$7003,数据存储器,X X X X,$7000,R2,N,$0003,M01,15,0,15,0,15,0,0,$7000,数据存储器,15,0,X X X X,E D C B,X X X X,$7000,$7003,$FFFF,执行后,执行前,F E D C B A 9 8 7,A2,A0,15,0,31,16,32,35,A1,A,A2,A0,15,0,31,16,32,35,A1,A,+,(7)带短置换的寄存器间接寻址,例: MOVE A1,X:(R2+3),F E D C B A 9 8 7,$7003,数据存储器,X X X X,$7000,R2,N,M01,$7000,R2,

11、N,(无影响),M01,15,0,15,0,15,0,15,0,15,0,15,0,$7000,数据存储器,15,0,X X X X,E D C B,X X X X,$7000,$7003,执行后,执行前,F E D C B A 9 8 7,A2,A0,15,0,31,16,32,35,A1,A,A2,A0,15,0,31,16,32,35,A1,A,+,(无影响),(无影响),(无影响),指令中的短立即数值,(8)带长置换的寄存器间接寻址,例: MOVE A1,X:(R0+$10CF),F E D C B A 9 8 7,$80CF,数据存储器,X X X X,$7000,R0,N,M01,

12、$7000,R0,N,(无影响),M01,15,0,15,0,15,0,15,0,15,0,15,0,$7000,数据存储器,15,0,X X X X,E D C B,X X X X,$7000,$80CF,F E D C B A 9 8 7,A2,A0,15,0,31,16,32,35,A1,A,A2,A0,15,0,31,16,32,35,A1,A,+,(无影响),$FFFF,$FFFF,源于指令的长立即数值,执行前,执行后,读取指令 F1 F2 F3 F3e F4 F5 F6 .指令译码D1 D2 D3 D3e D4 D5 .执行指令 E1 E2 E3 E3e E4 .指令周期 1 2

13、3 4 5 6 7 .,流水线结构,流水线效应,当一个 AGU 寄存器正被一条指令占用,与此同时,接下来的另一条指令又把它作为地址或者在一条 LEA 指令中,这时就会出现流水线效应,消除流水线效应的方法有两种 在两条指令间插入一条 NOP 指令,或者重排近处的指令,使流水线效应的条件不再成立。,; 一个 AGU 流水线效应的例子,move,#$4,r0,move,X:(r0),b,; 用的是 r0 以前的值, 不是 4,move,x0,y0,; 方法1 -在两条指令间插入一条 NOP 指令,move,#$4,r0,nop,;插入NOP 指令,move,X:(r0),b,; 使用 r0 的新值,

14、 4,move,x0,y0,; 方法2 -重排指令,使条件不再成立,move,#$4,r0,move,x0,y0,;,move,X:(r0),b,;使用 r0 的新值, 4,附属 AGU 流水线效应案例,情形 1. 由于向N寄存器写入数据而引起的附带效应MOVE#$7,N ; 向 N 寄存器写入数据MOVEX:(R2)+N,X0 ; N寄存器在地址算法计算中 ;被使用N 寄存器在第二条指令中被使用;通过插入一条额外指令的方法,DSP 内核 自动停止流水线工作. 因此, 这种次序是允许的; 这种附带效应也存在于 (Rn+N) 寻址模式。,附属 AGU 流水线效应案例 (续),情形2. 由于在 N

15、 寄存器进行位操作而引起 BFSET #$7,N MOVE X:(R2)+N,X0 ;N寄存器在地址算法 ;计算中被使用N 寄存器在第二条指令中被使用;同 SP 寄存器一样,这是一种利用 N 更新 R0-R3的方法;任何由于对N 寄存器进行位操作,其次序是不允许的,并被汇编程序所禁止;可通过在两条指令之间加入NOP指令或重排指令顺序的方法加以修正;仅接受 BFSET,BFCLR,或 BFCHG 指令;在BFTSTH,BFTSTL,BRCLR, 或 BRSET 等指令中没有这种效应; 这种附带效应也存在于 (Rn+N) 寻址模式,附属 AGU 流水线效应案例 (续),情形 3. 由于向 (R0-

16、R3, SP)写入而引起 MOVE #$7,R2; 向 R2 寄存器MOVE X:(R2)+,X0; R2 在地址计算中被使用地址指针寄存器在第一条指令中被使用,同时在第二条指令中被应用于地址算法中;这种次序是不允许的, 同时这也被汇编程序所禁止; 可通过在两条指令之间加入NOP指令或重排指令顺序的方法加以修正;,附属 AGU 流水线效应案例 (续),情形 4. 由于向地址域寄存器 (M01)写入而引起 MOVE #$7,M01 ;向地址域寄存器 (M01)写入MOVE X:(R0)+,X0 ; M01 寄存器在地址计算中 ;被使用M01 寄存器在第一条指令中被使用,同时在第二条指令中被应用于

17、地址算法中;这种次序是不允许的, 同时这也被汇编程序所禁止;可通过在两条指令之间加入NOP指令或重排指令顺序的方法加以修正;,无附属AGU流水线效应案例,情形 1. 无附属效应MOVE#$7,N ;向N寄存器写入MOVEX:(R2)+,X0 ;N未用在此条指令中情形2.无附属效应MOVE#$7,R1 ;向R1寄存器写入MOVEX:(R2)+N,X0 ;R1未用在此条指令中情形3.无附属效应MOVE#$7,R1 ;向R1寄存器写入MOVER1,X:$0004 ;R1没有被作为指针 ;或AGU计算中使用,无附属AGU流水线效应案例(续),情形4.无附属效应MOVE #$7,R1 ;向 R1 寄存器

18、写入MOVE X:(R1+$3456),X0 ;X:(Rn+xxxx) 寻址模式中使 用了 R1 这里列出了一个特例。 对于 X:(Rn+xxxx)寻址模式, 即使 Rn寄存器在前一个周期中已被写入,也不会发生附带效应 情形5.无附属效应LEA(R1)+N ; 更新 R1 寄存器MOVEX:(R1)-,X0 ; R1 可在这条指令中使用 在这种指令顺序中,,由于在前一个周期中LEA 指令被用来更新R1寄存器,不会出现附属流水线效应,DSP56800系列的指令系统,常用伪指令,1.定位伪指令ORG,用于指示汇编程序下一条待汇编指令的地址值,起程序定位的作用。如: ORG P:$1000 把由表达

19、式决定的值赋给程序计数器,指令汇编后应放在从程序空间$1000开始的存储单元中。如果一个源程序中没有ORG伪指令,程序计数器的初始值为$0000,即从0号单元开始汇编。2.赋值管理指令EQU如: REGBAS EQU $100 把100赋给REGBAS标号。3.END () 表示本汇编程序到此结束。可以是一个语句标号,也可以是一个有效地址,表示程序运行的起始地址,即程序从起始地址运行到此结束。,4.XDEF、XREF XDEF表示在本文件中定义可以被其他文件中的程序调用的子程序。XREF表示本子程序的定义在其他文件中。 XDEF ASM_ROUTINE XREF C_FUNCTION,BUSY

20、_FLGASM_ROUTINE BFSET #$0001,BUSY_FLG BCS BUSY JSR C_FUNCTION BFCLR #$0001,X:BUSY_FLGBUSY RTS,DSP56800系列的指令系统 (一)数据传送指令,一、装载有效地址 LEA汇编语法:LEA ea所进行的操作是:ea D 首先对地址寄存器的内容做相应计算,然后再将 计算结果送入地址寄存器。 主要的操作有地址寄存器做加/减1,或者做加/ 减16位偏移量操作,或者用N寄存器的值做偏移 量刷新R0-R3中的值,具体如下页所示。此操作 对CCR无影响。,装载有效地址指令LEA的操作,例如:LEA (R0)+N0

21、;R0R0+N0,计算前:,计算后:,二、数据传送指令 MOVE,MOVE(可单并行寻址或双并行寻址),可实现任何源操作数和目的操作数之间的数据传送。 (1)单并行寻址: 数据存储器与累加器的相互访问汇编语法: X:,D 所进行的操作是: X: D汇编语法: S,X: 所进行的操作是: S X:,例如: ASL A A,X:(R3)+N ;将移位前的A值存入X:(R3)中,A*2A, R3N R3 执行前: 执行后:,汇编语法: X:,D1 X:,D2所进行的操作是: X:D1 X:D2汇编语法: MOVE X:,D1 X:,D2所进行的操作是: X:D1 X:D2例如:MPYR X0,Y0,

22、A X:(R0)+,Y0 X:(R3)+,X0 执行前: 执行后:,(2)双并行寻址:,三、 传送控制寄存器指令MOVE(C): (1)内部寄存器内部寄存器 汇编语言:MOVEC S,D 所进行的操作是:SD例如:MOVEC LC,X0 ; LC X0 执行前: 执行后:,(2) 数据存储器内部寄存器 汇编语言:MOVEC X:,D 所进行的操作是:X:D 汇编语言:MOVEC D ,X: 所进行的操作是:DX:例如:MOVEC X:$CC00,N ;X:($CC00)N 执行前: 执行后:,又如: MOVEC R2, X:(R3+$3072) ; R2X:(R3+$3072) 执行前: 执行

23、后:,1000,1000,R3,R3,四、 立即数传送指令MOVEI(1)立即数内部寄存器 汇编语言: MOVEI #xx,D 所进行的操作是:#xxD 汇编语言: MOVEI #xxxx,D 所进行的操作是:#xxxxD例如:MOVEI #$FFC7,X0 ; $FFC7X0 执行前: 执行后:,内部寄存器外设扩展寄存器(续),(2)立即数数据存储器 汇编语言:MOVEI #xxxx,X: 所进行的操作是:#xxxxX:如:MOVEI #$C33C,X:$A009 ;$C33C(X:$A009),执行前:,执行后:,五、 MOVE(M): 程序空间移动 汇编语言:MOVEM P:,D 所进行

24、的操作是:P:D 汇编语言:MOVEM S, P: 所进行的操作是:SP:例如:MOVEM P:(R2)+N,A ; P:(R2)A, R2+NR2 执行前: 执行后:,0003,0003,N,N,六、 MOVE(P):(1) 寄存器外设扩展寄存器 汇编语言:MOVEP X:,D(pp是I/O短地 址,$FFC0$FFFF) 所进行的操作是:X:D 汇编语言:MOVEP S, X: 所进行的操作是:SX:例如:MOVEP R1,X:$FFE2 执行前: 执行后:,(2) 立即数外设扩展寄存器 汇编语言:MOVEP #xxxx,X: 所进行的操作是:#xxxxX:例如:MOVEP #$0342,

25、 X:$FFE4 执行前: 执行后:,七、MOVE(S):Move Abvsolute Short(l)寄存器 数据存储器短寻址(前64个单元) 汇编语言:MOVES X:,D 所进行的操作是:X:D 汇编语言:MOVES S, X: 所进行的操作是:SX:例如:MOVES X:$0034,Y1 执行前: 执行后:,(2)立即数 数据存储器短寻址(前64个单元) 汇编语言:MOVES #xxxx,X: 所进行的操作是:#xxxxX:例如:MOVES #$0342,X:$24 执行前: 执行后:,八、算术逻辑单元ALU内部寄存器之间的数据传送TFR,汇编语言:TFR S,D (单并行寻址) 所进

26、行的操作是:SD (单并行寻址) 可以实现36位数据的传送(SA置1),当要实现16位数据向36位传送时,要进行符号扩展和某位补0再进行传送。 指令对CCR的影响:,例如:TFR B,A X: (R0)+,Y1执行前: 执行后:,九、条件满足传送指令 Tcc,汇编语言:Tcc S,D 所进行的操作是:如果条件cc满足,则 SD 汇编语言:Tcc S,D R0,R1 所进行的操作是:如果条件cc满足,则 SD,R0R1 源操作数S和目标操作数D只能是算术逻辑单元内的寄存器和累加器,只有在条件满足时才传送数据,传送部分与TFR相同。而条件的使用与条件转移指令中的使用相同。例如:CMP X0,A ;

27、比较X0和A的大小 TGT X0,A R0,R1 ;如果X0大于A,则 ;X0A,R0R1,条件满足传送指令Tcc (续)条件“cc”可指定为:,(二)移位指令,一、 逻辑左移 LSL汇编语法:LSL D 所进行的操作是:对16位目标操作数逻辑左移一位,并且将结果保存在目标操作数中。如果目标操作数是36位,只对其高字部分(A1或B1)处理,其余部分(A2, B2, A0, B0)不变。目标操作数可以是FDD(累加器A或B)。指令对CCR的影响:,N如果累加器A或B的31位为1则置1 Z如果A1或B1为零则置1V总是清0 C由被移的最高位决定,例如: LSL B ;对B1逻辑左移一位 计算前:

28、计算后:,二、逻辑右移 LSR 汇编语法:LSR D 所进行的操作是:,对16位目标操作数逻辑右移一位,并且将结果保存在目标操作数中。如果目标操作数是36位,只对其高字部分(A1或B1)处理,其余部分(A2, B2, A0, B0)不变。目标操作数可以是FDD(A或B)。 指令对CCR的影响:,N总是清0 Z如果A1或B1为零则置1V总是清0 C由被移的最低位决定,例如: LSR B 计算前: 计算后:,三、多位逻辑左移 LSLL 汇编语法:LSLL S1,S2,D 所进行的操作是:S1 S2 D 对16位源操作数S1进行逻辑右移,所移位数由源操作数S2的低4位表示,每一次的移位同逻辑右移LS

29、R的操作相同,移位结束后将结果放入目标操作数D中。目标操作数D可以是FDD。 指令对CCR的影响:,N如果结果的MSB为1则置1 Z如果结果为0则置1,例如: LSRR Y1,X0,A; 计算前: 计算后:,0300,0300,SR,SR,五、带加法的逻辑右移 LSRAC,汇编语法:LSRAC S1,S2,D 所进行的操作是:S1 S2 + D D 此指令的操作是将LSRR和ADD结合起来,在进行多位逻辑右移后,先将右移结果与目标操作数的内容相加,然后再保存。如果目标操作数是36的,相加时要进行符号扩展(A2,B2)。 指令对CCR的影响:,N如果累加器A和B的35位为1则置1 Z如果结果为0

30、则置1,例如: LSRAC Y1,X0,A; 计算前: 计算后:,六、循环左移 ROL,汇编语法:ROL D 所进行的操作是: 对16位操作数逻辑左移一位,即C位移入LSB,MSB移入C位。如果操作数是36位,只对MSP部分处理,其余位不变。结果不受SA位的影响。操作数可以是FDD。 指令对CCR的影响:,N如果32位操作数的31位或16操作数的15位为1则置1 V清0 Z如果32位操作数的MSP或16操作数为0则置1 C由移入此位的比特所决定,例如:ROL B 执行前: 执行后: SR中的C=1 SR中的C移入B1中,C=0,七、循环右移 ROR,汇编语法:ROR D 所进行的操作是:,对1

31、6位操作数逻辑Y右移一位,即C位移入MSB,LSB移入C位。如果操作数是36位,只对MSP部分处理,其余位不变。结果不受SA位的影响。操作数可以是FDD。指令对CCR的影响:,N如果32位操作数的31位或16操作数的15位为1则置1 V清0 Z如果32位操作数的MSP或16操作数为0则置1 C由移入此位的MSB位决定,例如:ROR B 执行前: 执行后: SR中的C=0 SR中的C移入B1中 C=1 因为B1=0,所以Z=1,八、算术左移 ASL 汇编语法:ASL D (单并行寻址) 所进行的操作是:,对D算术左移一位并将结果存入D中,其中D既可以是36位累加器A或B,也可以是16位寄存器X0

32、、Y0或Y1,但是在有并行指令时,D只能是A或B。当D为16位操作数时,其实际操作同LSL相同。 指令对CCR的影响:,(单并行寻址),例如: ASL A X:(R3)+N,Y0,执行前: 执行后:,N-如果结果的MSB为1则置1V-如果累加器的35位由于算术左移而改变则置1C-由被移的最高位决定,汇编语法:ASLL S1,S2,D 所进行的操作是:S1S2D 对源操作数S1算术右移若干位(高位保持),而右移位数由源操作数S2的低4位表示,并将最终的结果存入目标操作数D中。S1可以是16位的Y0、Y1、A1或B1,S2可以是16位的X0、Y0或Y1,D则既可以是16位的寄存器X0、Y0或Y1,

33、也可以是36位的累加器A或B。当目标操作数D为36位时,将16位右移指令结果存入MSP,而LSP部分清0,并对EXT部分由31位符号扩展,结果不受饱和控制位SA的影响。 指令对CCR的影响:,例如:ASRR Y1,X0,A,执行前: 执行后:,十二、带加法的算术右移ASRAC,汇编语法:ASRAC S1,S2,D 所进行的操作是:S1S2+DD 实现了多位算术右移ASRR和不带进位加法ADD的功能,对源操作数S1算术右移若干位(高位保持),而右移位数由源操作数S2的低4位表示,并将最终的结果加到目标操作数D上。而操作数的具体使用与ASRR的使用相同。 指令对CCR的影响:,例如: ASRAC

34、Y1,X0,A,执行前: 执行后:,N-如果结果的35位为1则置1Z-如果结果为0则置1,逻辑指令,一、逻辑非指令 NOT,汇编语法:NOT D 所进行的操作是: 汇编语法:NOT D 所进行的操作是: 此操作数是16位的,可以是X0、Y0或Y1;同时目标寄存器也可以是36位,如A或B,此时只对其3116位进行运算,其余位不变。运算结果不受运行模式寄存器OMR中的SA位影响。,例如:NOT A A,X(R2)+ 执行前: 执行后:,N如果结果的MSB(31位或15位)为1则置1Z如果结果(36位的MSP或16位)为0则置1V清0,二、带进位的逻辑非指令NOTC,汇编语法:NOTC D 汇编语法

35、:NOTC X:所进行的操作是:此操作数是16位的,可以是内部的任意寄存器和存储器的内容,直接对它取反并存储结果;同时目标寄存器也可以是36位,如A或B,此时只对其3116位取反,其余位不变,同时存储结果。运算结果不受运行模式寄存器OMR中的SA位影响。CCR中的C位由取反前的数据来决定。,C如果取反前数据为$FFFF则置1,例如:NOTC R2 执行前: 执行后:,三、逻辑与指令 AND,汇编语法:AND S,D 所进行的操作是: 汇编语法:AND S,D 所进行的操作是:上述操作“”表示逻辑与,过程是将S和D的对应位相与并将结果存入目标操作数。S和D可以是16位或36位的寄存器,但不能是存

36、储器的内容。当S是16位操作数而D是36位操作数时,将D的3116位与S对应位相与并将结果存入D的3116位,而D的其余位不变。指令对CCR的影响:N如果与结果的最高位为1则置1Z如果与结果为0则置1V清0,例如:AND X0,A 执行前: 执行后:,四、可与立即数运算的逻辑与指令 ANDC,汇编语法:ANDC #iiii,X: 所进行的操作是: 汇编语法:ANDC #iiii,D 所进行的操作是:将16位立即数与目标操作数相与,并将结果存入D中,其中D可以是任意寄存器或存储器的内容。这个过程对目标操作数D的操作遵循“读改写”,状态寄存器的C位随着操作而改变。指令对CCR的影响:,例如:ANDC #$5555,x:$A000 执行前: 执行后:,C如果D中与立即数置1所对应的所有位均为1则置1,否则清0。,汇编语法:OR S,D 汇编语法:OR S,D,上述操作“”表示逻辑或,过程是将S和D的对应位相或并将结果存入目标操作数D。源操作数S可以是DD(X0,Y0或Y1)或F1(A1或B1),目标操作数D可以是FDD(ALU中的寄存器和累加器)或DD。当S是16位操作数而D是36位操作数时,将D的3116位与S对应位相或并将结果存入D的3116位,而D的其余位不变。运算结果不受运行模式寄存器OMR中的SA位影响。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报