收藏 分享(赏)

飞思卡尔汇编指令集.pdf

上传人:HR专家 文档编号:6246416 上传时间:2019-04-03 格式:PDF 页数:29 大小:786.98KB
下载 相关 举报
飞思卡尔汇编指令集.pdf_第1页
第1页 / 共29页
飞思卡尔汇编指令集.pdf_第2页
第2页 / 共29页
飞思卡尔汇编指令集.pdf_第3页
第3页 / 共29页
飞思卡尔汇编指令集.pdf_第4页
第4页 / 共29页
飞思卡尔汇编指令集.pdf_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、 1 飞思卡尔芯片汇编指令集 目录 汇编指令 . 5 LDAA . 5 LDAB 5 LDD 5 LDS . 5 LDX 5 LDY 5 LEAS. 6 LEAX 6 LEAY 6 STAA 6 STAB . 6 STD . 6 STS 6 STX . 6 STY . 7 TAB . 7 TAP . 7 TBA. 7 TFR . 7 TPA . 7 TSX . 7 TSY . 7 TXS . 8 TYS . 8 EXG 8 XGDX . 8 XGDY . 8 SEX . 8 MOVB. 8 MOVW . 8 ABA 9 ABX 9 ABY 9 ADDA . 9 ADDB . 9 ADDD .

2、9 ADCA . 9 ADCB . 10 2 SBA . 10 SUBA 10 SUBB 10 SUBD 10 SBCA 10 SBCB 11 DAA 11 INC 11 INCA . 11 INCB . 11 INS 11 INX . 11 INY . 12 DEC. 12 DECA 12 DECB 12 DES . 12 DEX 12 DEY 12 CBA 12 CMPA 13 CMPB . 13 CPD . 13 CPS . 13 CPX . 13 CPY . 13 TST . 13 TSTA . 14 TSTB . 14 ANDA . 14 ANDB . 14 ANDCC . 14 E

3、ORA 14 EORB 14 ORAA . 14 ORAB . 15 ORCC 15 CLC . 15 CLI 15 CLV . 15 CLR . 15 CLRA 15 CLRB 15 COM . 16 3 COMA. 16 COMB . 16 NEG 16 NEGA . 16 NEGB 16 EMUL . 16 EMULS . 16 MUL 17 EDIV . 17 EDIVS . 17 FDIV . 17 IDIV 17 IDIVS 18 EMACS . 18 BITA 19 BITB . 19 BLCR 19 BSET . 19 LSL, LSLA, LSLB, LSLD 19 LSR,

4、 LSRA, LSRB, LSRD . 19 ASL, ASLA, ASLB, ASLD . 20 ASR, ASRA, ASRB 20 ROL, ROLA, ROLB . 20 ROR, RORA, RORB 20 MEM . 21 REV, REVW . 21 WAV 21 MAXA 21 MINA 21 MAXM 21 MINM . 21 EMAXD 22 EMIND . 22 EMAXM . 22 EMINM . 22 TBL, ETBL . 22 BRA, LBRA 22 BRN, LBRN 22 BCC, LBCC 22 BCS, LBCS . 22 BEQ, LBEQ 23 BN

5、E, LBNE 23 BMI, LBMI . 23 BPL, LBPL . 23 4 BVC, LBVC 23 BVS, LBVS . 23 BHI, LBHI 23 BHS, LBHS . 23 BLO, LBLO 23 BLS, LBLS . 24 BGT, LBGT 24 BGE, LBGE 24 BLT, LBLT 24 BLE, LBLE . 24 DBEQ 24 DBNE 24 IBEQ . 25 IBNE . 25 TBEQ 25 TBNE 25 JMP . 25 BSR, JSR, RTS 25 CALL, RTC . 25 SWI . 26 TRAP 26 RTI 26 PS

6、HA, PSHB, PSHC, PSHD, PSHX, PSHY 26 PULA, PULB, PULC, PULD, PULX, PULY . 26 STOP . 26 WAI . 26 BGND . 26 NOP. 27 汇编伪指令 . 27 ORG 27 EQU 27 SET . 27 DC . 27 FCC . 27 DCB 28 DS . 28 ABSENTRY 28 XDEF 28 XREF 28 END 28 SECTION 28 MARCO, ENDM 29 5 CPU内部寄存器 A(1byte), B(1byte), X(2byte), Y(2byte), D(2byte)

7、CCR: 条件码寄存器 S 停止运行模式禁止位 X 非屏蔽中断允许位 H 半进位标志 I 中断标志位 N 负标志 Z 0标志 V 溢出标志 C - 进位 /借位标志 汇编指令 LDAA 说明:将内存单元的内容加载到累加器 A; 例: LDAA $55 ;表示将内存单元 $0055的数据加载到 累加器 A中。 LDAB 说明:将内存单元的内容 加载到累加器 B; 例: LDAB 5 , Y ;表示将 Y+5内存单元的数据加载到 累加器 B中。 LDD 说明:将内存单元的内容加载到累加器 D中; 例: LDD D , X ;表示将 D+X内存单元的数据加载到累加器 D中。 LDS 说明:将内存单元

8、的内容加载到堆栈指针寄存器 SP 中; 例: LDS X ;表示将 X指向的内存单元的内容加载到堆栈寄存器 SP中。 LDX 说明:将内存单元的内容加载到变址寄存器 X中; 例: LDX #$2000 ;表示将立即数 $2000加载到变址寄存器 X中。 LDY 说明:将内存单元的内容加载到变址寄存器 Y中; 例: LDX #$3000 ;表示将立即数 $3000加载到变址寄存器 Y中。 6 LEAS 说明:将有效地址加载到堆栈指针寄存器 SP中; 例: LDY #$2000 ;表示将立即数 $3000加载到变址寄存器 Y中。 LEAS 4, Y+ ; SP 的值为 $2000,然后 Y的值加

9、4, Y为 $2004。 LEAX 说明:将有效地址加载到变址寄存器 X中; 例: LEAX D, Y ; 将 D的内容加上 Y的内容加载到 X寄存器。 LEAY 说明:将有效地址加载到变址寄存器 Y中; 例: LEAX B, X ; 将 B的内容加上 X的内容加载到 Y寄存器。 STAA 说明:将累加器 A的内容存储到内存单元中; 例: STAA $1000 ; 将 累加器 A的内容存储到地址为 $1000的内存单元中 。 STAB 说明:将累加器 B的内容存储到内存单元中; 例: LDX #$1000 STAB 2, X+ ; 将 B的内容存储到地址为 $1000的 X内存单元中 ,然后

10、X加 2 。 STD 说明:将累加器 D的内容存储到内存单元中; 例: STD $2000 ; 将 D的内容存储到地址为 $2000的内存单元中。 ; A送 $2000单元 , B送 $2001单元 STS 说明:将堆栈指针 SP 的内容存储到内存单元中; 例: STS $1000 ; 将堆栈指针 SP的内容保存到地址为 $1000, $1001单元中。 STX 说明:将变址寄存器 X的内容存储到内存单元中; 例: STX Y ; 将 X的内容保存到地址为 Y, Y+1的单元中。 7 STY 说明:将变址寄存器 X的内容存储到内存单元中; 例: STY $2000 ; 将 Y的内容保存到地址为

11、 $2000, $2001的单元中。 TAB 说明:将累加器 A的内容传送到累加器 B中; 例: LDAA # $55 ; 将 立即数 $55加载到累加器 A中 。 TAB ; A 传送到 B, B的值为 $55。 TAP 说明:将累加器 A的内容传送到程序状态字 CCR中,但 X位不会发生从 0到 1的改变; TBA 说明:将累加器 B的内容 传送到累加器 A中; 例: TBA ; 将累加器 B的内容传送到累加器 A中 。 TFR 说明:将一寄存器的内容传送到另一寄存器中,操作对 CCR 无影响, 除非 目的寄存器是CCR; 例: TFR A, B ; 与 TAB等价,但不影响 CCR。 T

12、FR X, A ; 将 X低八位的内容传送到累加器 A中。 TFR A,D ; 将 A的内容写入 D的低八位中, D的高八位进行符号扩展。 TPA 说明:将程序状态字 CCR的内容传送到累加器 A中 ,同 TFR CCR, A; TSX 说明:将堆栈指针 SP 的内容传送到寄存器 X中 ,同 TFR SP, X; TSY 说明:将堆栈指针 SP 的内容传送到寄存器 Y中 ,同 TFR SP, X; 8 TXS 说明:将寄存器 X的内容传送到堆栈指针 SP中 ,同 TFR X, SP; TYS 说明:将寄存器 Y的内容传送到堆栈指针 SP中 ,同 TFR Y, SP; EXG 说明:将一寄存器的

13、内容 与 另一寄存器 的内存交换 ; 例: EXG A, B ; 将 A与 B的内容交换 。 EXG B, X ; 将 X低八 位的内容传送到累加器 B中 ,把 $FF:B 传送到 X中 。 EXG X, A ; 将 $00:A 传送到 X中, X的低八位传送到 A中 。 XGDX 说明:将 寄存器 D的内容和寄存器 X内容交换 ,同 EXG D, X; XGDY 说明:将寄存器 D的内容和寄存器 Y内容交换 ,同 EXG D, Y; SEX 说明:将八位寄存器的内容进行符号扩展后送入十六位寄存器中; 例: SEX A, D ; 若 A最高位为 1: $FF: A 传送到 D中, A值变为 $

14、FF。 ; 若 A最高位为 0: $00: A 传送到 D中, A值变为 $00。 MOVB 说明:将源地址一个字节的内容复制到目的地址; 例: MOVB $2000, X ; 将 $2000内存单元的内容传送到 X寄存器指向的内存单元。 MOVB $80, 8,Y ; 将 $0080内存单元的内容传送到 Y+8内存单元中。 MOVW 说明:将源地址一个字的内容复制到目的地址; 例: MOVW #$1234, $1000 ; 将 $12放到 $1000单元 ,将 $34放到 $1001单元 。 MOVW 2, X+ , 4, Y+ ; 将 X寄存器指向的 2B数据传送到 Y寄存器指向的 2B

15、; 内存单元中,传输后, X自动加 2, Y自动加 4。 9 ABA 说明:将 A的内容加上 B的内容送到累加器 A中; 例: ABA ; 将 A的内容加上 B的内容 ,结果 送到累加器 A中 。 ABX 说明:将 B的内容加上 X的内容结果送到 X中 ,操作对 CCR无影响; 例: ABX ; 同 LEAX B, X 。 ABY 说明:将 B的内容加上 Y的内容结果送到 Y中 ,操作对 CCR无影响; 例: ABX ; 同 LEAX B, Y 。 ADDA 说明:将 A的内容加上内存单元 M的内容结果送到 A中 ,操作对 CCR有影响; 例: ADDA X ; 将 A的内容加上 X单元的内容

16、,结果存在 A中 。 ADDA D,X ; 将 A的内容加上 X+D内存单元为指针指向的数据,结果存于 A中。 ADDB 说明:将 B的内容加上内存单元 M的内容结果送到 B中 ,操作对 CCR有影响; 例: ADDB Y ; 将 B的内容加上 Y单元的内容,结果存在 B中 。 ADDB $2000 ; 将 B的内容加上内存单元 $2000的内容,结果存于 B中。 ADDD 说明:将 D的内容加上内存单元 M处的 2B 数据送到 D中; 例: ADDD X ; 将 D的内容加上 X内存单元的内容,结果存在 D中 。 ADDD 2, X+ ; 将 D的内容加上内存单元 X的内容,结果存于 D中

17、,然后 X的内容加 2。 ADDD 2, X ; 将 D的内容加上 X+2内存单元 的内容,结果存于 D中。 ADCA 说明:将 A的内容加上内存单元 M的内容 再加上进位位 C, 结果送到 A中; 例: ADCA X ; 将 A 的内容加上 X 指向的内存单元的 内容, 再加上进位位 C 的值,结果存在 A中 。 ADCA D, X ; 将 A的内容加上 D+X内存单元为指针指向 的内容, 再加上进位位 C的值, 结果存于 A中。 10 ADCB 说明:将 B的内容加上内存单元 M的内容再加上进位位 C,结果送到 B中; 例: ADCB Y ; 将 B 的内容加上 Y 指向的内存单元的内容,

18、再加上进位位 C 的值,结果存在 B中 。 ADCB $2000 ; 将 B的内容加上内存单元 $2000的内容,再 加上进位位 C的值,结果存于 B中。 SBA 说明:将 A的内容加上 B的内容送到累加器 A中; 例: ABA ; 将 A的内容减去 B的内容 ,结果送到累加器 A中。 SUBA 说明:将 A的内容减去内存单元 M的内容结果送到 A中; 例: SUBA 2, X+ ; 将 A的内容减去 X单元的内容,结果存在 A中, X加 2 。 SUBA X ; 将 A的内容 减去 X内存单元的 内容 ,结果存于 A中。 SUBB 说明:将 B的内容减去内存单元 M的内容结果送到 B中; 例

19、: SUBB #230 ; 将 B的内容减去 230,结果存在 B中。 SUBB X ; 将 B的内容减去 X内存单元的内容,结果存于 B中。 SUBD 说明:将 B的内容减去内存单元 M的 2B数据,结果送到累加器 D中; 例: SUBD $#100 ; 将 D的内容减去 $100,结果存在 D中。 SUBD 5, X ; 将 D的内容减去 X+5指向的内存单元的 2B数据,结果存于 D中。 SBCA 说明:将 A的内容减去内存单元 M的内容再减去借位位 C得值 ,结果送到 A中; 例: SBCA $1000 ; 将 A的内容减去地址单元 $1000的数据,再减去借位位 C 的值,结果存在

20、A中 。 SBCA 1, X+ ; 将 A的内容 减去 X指向的数据单元 的内容,再 减去借 位位 C的 值,结果存于 A中 ,然后 X加 1。 11 SBCB 说明:将 B的内容减去内存单元 M的内容再减去借位位 C的值 ,结果送到 B中; 例: SBCB Y ; 将 B的内容减去 Y指向的数据单元的内容, 再减 去借位位 C的值,结果存在 B中 。 SBCB 1, +X ; X 先自加 1存于 X中,再将 B的内容减去 X指向的数据单 元的内容,再减去借位位 C的值,结果存于 B中。 DAA 说明:二 -十进制调整指令,在 ABA,ADD,ADC指令后使用,若相加后 A的低四位大 于 9或

21、半进位位 H=1,则加 $06修正;若相加后 A的高四位大于 9或进位位 C=1,则加$60修正;若两者都符合,加 $66修正,且重置进位位 C; 例: LDAA #$55 ; ADDA #$38 ; A=$55+$38= $8D DAA ; 加 $06修正,结果为 $93 。 INC 说明:加一指令,将 M单元的 内容加一; 例: INC $1000 ; 将 $1000地址单元的数据加一。 INCA 说明:将 A的内容加一; 例: INCA ; 将累加器 A的内容加一。 INCB 说明:将 B的内容加一; 例: INCB ; 将累加器 B的内容加一。 INS 说明:将 SP的内容加一 ,操作

22、对 CCR无影响; 例: INS ; 将 SP 的内容加一 ,同 LEAS 1, SP。 INX 说明:将 X 的内容加一 ,该指令与 LEAX 1, X 都是将 X 的值加一,但 LEAX 指令不影响 Z标 志位; 例: INX ; 将变址寄存器 X的内容加一。 12 INY 说明:将 Y的内容加一 ,该指令与 LEAY 1, Y都是将 Y的值加一,但 LEAY指令不影响Z标志位; 例: INY ; 将变址寄存器 Y的内容加一。 DEC 说明:减一指令,将 M单元的内容减一; 例: DEC $1000 ; 将 $1000地址单元的数据减一。 DECA 说明:将 A的内容减一; 例: DECA

23、 ; 将累加器 A的内容减一。 DECB 说明:将 B的内容减一; 例: DECB ; 将累加器 B的内容减一。 DES 说明:将 SP的内容减一,操作对 CCR无影响; 例: DES ; 将 SP的内容减一,同 LEAS -1,SP 等价。 DEX 说明:将 X的内容减一; 例: DEX ; 将 X的内容减一,同 LEAX -1,X 等价 , 但 LEAX指令不影响 Z标志位。 DEY 说明:将 Y的内容减一; 例: DEY ; 将 Y的内容减一,同 LEAY -1,Y 等价 , 但 LEAY 指令不影响 Z标志位。 CBA 说明:将 A的内容减去 B的内容,结 果不返回,操作影响 CCR;

24、 例: CBA ; 比较 A和 B。 13 CMPA 说明:将 A的内容减去 M的内容,结果不返回 ,操作影响 CCR; 例: CMPA #$30 ; 将 A的内容与 $30比较。 CMPA X ; 将 A的内容与 X指向的数据单元的内容比较。 CMPB 说明:将 B的内容减去 M的内容,结果不返回 ,操作影响 CCR; 例: CMPB 1, -X ; 先把 X减一赋值回 X,再将 B的内容与 X单元的数据比较。 CMPB X ; 将 B的内 容与 X指向的数据单元的内容比较。 CPD 说明:将 D的内容减去 M单元 的 2B 数据 ,结果不返回 ,操作影响 CCR; 例: CPD #$120

25、0 ; 将 D的内容与 $1200比较。 CPD 5, X ; 将 D的内容与 X+5指向的数据单元的 2B 内容比较。 CPS 说明:将 SP的内容减去 M单元的 2B 数据,结果不返回 ,操作影响 CCR; 例: CPS #$100 ; 将 SP的内容与 $0100比较。 CPS $100 ; 将 SP的内容与 $100, $101单元的一个字的内容比较 。 CPX 说明:将 X的内容减去 M单元的 2B 数据,结果不返回 ,操作影响 CCR; 例: CPX $20 ; 将 X的内容与 $20, $21单元的一个字的内容比较。 CPX A, X ; 将 X的内容与 X+A指向的数据单元的

26、2B内容比较。 CPY 说明:将 Y的内容减去 M单元的 2B 数据,结果不返回 ,操作影响 CCR; 例: CPY D, Y ; 将 Y的内容与 Y+D单元的 2B 内容比较。 CPY D, Y ; 将 Y的内容与以 Y+D单元 的数据为指针指向的 2B内容比较。 TST 说明:将 M单元的 1B数据减去 $00,结果不返回,操作影响 CCR; 例: TST $1000 ; 将 $1000单元的内容与 0比较。 TST 5, X ; 将 X+5指向的数据单元的内容与 0比较。 14 TSTA 说明:将 A减去 $00,结果不返回,操作影响 CCR; 例: TSTA ; 判断 A的内容是否为

27、0。 TSTB 说明:将 B减去 $00,结果不返回,操作影响 CCR; 例: TSTB ; 判断 B的内容是否为 0。 ANDA 说明:将 M的内容与 A相与,结果送到 A中,操作影响 CCR; 例: ANDA #$00 ; 将 A的内容清 0。 ANDB 说明:将 M的内容与 B相与,结果送到 B中,操作影响 CCR; 例: ANDB $2000 ; 将 B与 $2000地址的内容相与。 ANDCC 说明:将 M的内容与 CCR相与,结果送到 CCR中,操作影响 CCR; 例: ANDCC #$00 ; 将 CCR清 0。 EORA 说明:将 M的内容与 A相异或,结果送到 A中,操作影响

28、 CCR; 例: EORA $80 ; 将 A与 $80地址的内容相异或。 EORB 说明:将 M的内容与 B相异或,结果送到 B中,操作影响 CCR; 例: EORB X ; 将 B与 X地址的内容相异或。 ORAA 说明:将 M的内容与 A相或,结果送到 A中,操作影响 CCR; 例: ORAA $80 ; 将 A与 $80地址的内容按位做或运算。 15 ORAB 说明:将 M的内容与 B相或,结果送到 B中,操作影响 CCR; 例: ORAB $80 ; 将 B与 $80地址的内容按位做或运算。 ORCC 说明:将 M的内容与 CCR相或,结果送到 CCR中, ,除 X位不能被软件置 1

29、; 例: ORCC $80 ; 将 CCR与 $80地址的内容按位做或运算 (X 位不变 )。 CLC 说明:将进位位 C清 0,同 ANDCC #$FE; 例: CLC ; 将进位位 C清 0。 CLI 说明:将中断屏蔽位 I清 0,同 ANDCC #$EF; 例: CLI ; 将中断屏蔽位 I清 0。 CLV 说明:将溢出标志位 V清 0,同 ANDCC #$FD; 例: CLV ; 将溢出标志位 V清 0。 CLR 说明:将溢 M地址的 内容清 0, 操作影响 CCR; 例: CLR $80 ; 将 $80地址的内容清 0。 CLRA 说明:将 A的内容清 0,操作影响 CCR; 例:

30、CLRA ; 将累加器 A的内容清 0。 CLRB 说明:将 B的内容清 0,操作影响 CCR; 例: CLRB ; 将累加器 B的内容清 0。 16 COM 说明:将 $FF-M的值放回 M处,即对 M求补,操作影响 CCR; 例: COM $80 ; 将 $80地址的内容求补。 COMA 说明:将 $FF-A的值放回 A处,即对 A求补,操作影响 CCR; 例: COMA ; 将 A的内容求补,结果放回 A处。 COMB 说明:将 $FF-B的值放回 B处,即对 B求补,操作影响 CCR; 例: COMB ; 将 B的内容求补,结果放回 B处。 NEG 说明:将 0-M的值放回 M处,即对

31、 M按位取反,操作影响 CCR; 例: NEG $80 ; 将 $80的内容取反加一。 NEGA 说明:将 0-A的值放回 A处,即对 A按位取反,操作影响 CCR; 例: NEGA ; 将 A的内容取反加一。 NEGB 说明:将 0-B的值放回 B处,即对 B按位取反,操 作影响 CCR; 例: NEGB ; 将 B的内容取反加一。 EMUL 说明:无符号 16位乘法,乘数和被乘数放在 D, Y中,结果存在 Y, D中, Y中为高 16位,D为低 16位,操作影响 CCR; 例: LDD #300 ; 乘数为 300。 LDY #500 ; 被乘数为 500。 EMUL ; 结果存于 Y:

32、D中,为 $2000: $49F0 , 即十进制 150000。 EMULS 说明:有符号 16位乘法,乘数和被乘数放在 D, Y中,结果存在 Y, D中, Y中为高 16位,D为低 16位,操作影响 CCR; 17 例: LDD #300 ; 乘数为 300。 LDY #-500 ; 被乘数为 500。 EMULS ; 结果存于 Y: D中,为 $FFFD: $B610 , 即十进制 -150000。 MUL 说明:无符号 8位乘法,乘数和被乘数放在 A, B中,结果存在 A, B中, A中为高 16位,B为低 16位,操作影响 CCR; 例: LDAA #125 ; 乘数为 125。 LD

33、AB #80 ; 被乘数为 80。 MUL ; 结果存于 A: B中,为 $27: $10 , 即十进制 10000。 EDIV 说明:无符号 32位除以无符号 16位除法,被除数放在 Y: D中,除数放在 X中,商放在Y中, D中为余数 , 操作影响 CCR; 例: LDD #0 ; LDY #125 ; 被除数为 $007D0000 (8192000)。 LDX #801 ; 除数 $0321 (801)。 EDIV ; 结果为 $27F3(10227)存于 Y中,余数为 $00AD(173)存于 D中。 EDIVS 说明:有符号 32位除以有符号 16位除法,被除数放在 Y: D中,除数

34、放在 X中,商放在Y中, D中为余数, 商和余数均为有符号数, 操作影响 CCR; 例: LDD #0 ; LDY #-125 ; 被除数为 $007D0000 (-8192000)。 LDX #801 ; 除数 $0321 (801)。 EDIVS ; 结果为 $D80D(-10227)存于 Y中,余数为 $FF53(-173)存于 D中。 FDIV 说明:该指令是小数除法指令,有符号 16位除以有符号 16位除法,实际上就是求真分数D/X的值,被除数放在 D中,除数放在 X中, 运算结果放在 X中,余数放在 D中 ,商是一个二进制小数,小数点在 X的 bit的左边, 操作影响 CCR; 例

35、: LDD #3 ; 分子是 3 LDX #8 ; 分母是 8,相当于 3/8。 FDIV ; 结果存于 X中,为 $6000,相当于 $0.6000 =0.375, 余数为 0在 D中 。 IDIV 说明:该指令是 无符号整数 除法指令, 无 符号 16位除以 无 符号 16位除法,被除数放在 D 18 中,除数放在 X 中,运算结果 商 放在 X 中,余数放在 D 中, 当发生除零计算式,C位被置一,商 X的值为 $FFFF,余数 D中的值不定 ,操作影响 CCR; 例: LDD #$01F4 ; 被除数是 $01F4(500) LDX #$0017 ; 除数是 $0017(23)。 ID

36、IV ; 结果存于 X中,为 $0015(21),余数为 $0011(17)在 D中。 IDIVS 说明:该指令是 有 符号整数除法指令, 有 符号 16位除以 有 符号 16位除法,被除数放在 D中,除数放在 X 中,运算结果商放在 X 中,余数放在 D 中,当发生除零计算式,C位被置 1, X, D的 值不定,操作影响 CCR; 例: LDD #$FCE0 ; 被除数是 $FCE0(-800) LDX #$001E ; 除数是 $001E(30)。 IDIVS ; 结果存于 X中,为 $FFE6(-26),余数为 $FFEC(-20)在 D中。 EMACS 说明 :乘加指令,该指令 能完成

37、扩展有符号数乘法并进行累加运算,源操作数和结果都存于内存中,结果是 32位有符号数,源操作数隐含使用 X, Y寄存器寻址。该指令先将 X, Y指向的 16为有符号数进行乘法运算,得到 32位有符号数,再把这个中间结果加到 32 位的结果单元中, 操作影响 CCR; 例: ORG $2000 SRC1: FDB $01, $02, $03, $04, $05, $06, $07, #08 ; 第一组乘数 SRC2: FDB $11, $12, $13, $14, $15, $16, $17, #18 ; 第二组乘数 DEST: RMB 4 ; 存放结果 ORG $4000 LDX #DEST ;

38、 X指向结果单元。 MOVW #0, 2, X+ ; 结果单元高位字清零。 MOVW #0, X ; 结果单元低位字清零。 LDX #SRC1 ; X 指向第一组操作数。 LDY #SRC2 ; Y 指向第二组操作数。 LDAB #8 ; 循环计数器,共八对数据。 LOOP1: EMACS DEST; 乘积并累加到 DEST单元。 BVS ERR ; 检查溢出,是则转到 ERR 处进行处理。 LEAX 2, X ; X 指向下一个操作数。 LEAY 2, Y ; Y 指向下一个 操作数。 DBNE B LPPO1; 未完则转到 LOOP1处继续执行。 ANDCC #$FE ; 清除溢出位,表示

39、正常结束无溢出。 RTS ; 结束返回。 ERR: ORCC #$01 ; 将溢出位置位,表示溢出。 RTS ; 溢出返回。 运算结束后, DEST开始的内存单元为 $0000030C 。 19 BITA 说明:将 A的内容与内存单元 M的内容做与操作,只改变相应的 CCR标志; 例: BITA #$80; 测试 A的最高位知否为 0。 BITB 说明:将 B的内容与内存单元 M的内容做与操作,只改变相应的 CCR标志; 例: BITB #$80; 测试 B的最高位知否为 0。 BLCR 说明:将立即数取反后与内存单元 M 的内容做与操作,将操作结果会送到内存单元中,即将内存单元与立即数中 1

40、的位相对应的位清 0,操作对 CCR有影响 ; 例: BLCR $2000, #$81; 将 $2000地址的最高位和最低位清 0。 BSET 说明:将立即数与内存单元 M 的内容做 或 操作,将操作结果会送到内存单元中,即将内存单元与立即数中 1的位相对应的位 置 1,操作对 CCR有影响; 例: BSET $55, #$80; 将 $55地址的单元的最高位置 1。 LSL, LSLA, LSLB, LSLD 说明:逻辑左移指令, 将内存字节, A, B,或 D 的内容向左移动一位,最低位补 0,最高位进入进位位 C。 操作对 CCR有影响; 例: LSL $8000; 将 $8000地址的

41、内容左移一位,最 高位进入 C,最低位补 0。 LSLA ; 将 累加器 A的 内容左移一位,最高位进入 C,最低位补 0。 LSLB ; 将累加器 B的内容左移一位,最高位进入 C,最低位补 0。 LSLD ; 将累加器 D的内容左移一位,最高位进入 C,最低位补 0。 LSR, LSRA, LSRB, LSRD 说明:逻辑 右 移指令,将内存字节, A, B,或 D 的内容向 右 移动一位,最 高 位补 0,最低 位进入进位位 C。操作对 CCR有影响; 例: LSR X; 将 X指向的地址的内容右移一位,最低位 进入 C,最高位补 0。 LSRA ; 将累加器 A的内容右移一位,最低位进

42、入 C,最高位补 0。 LSRB ; 将累加器 B的内容右移一位,最低位进入 C,最高位补 0。 LSRD ; 将累加器 D的内容右移一位,最低位进入 C,最高位补 0。 20 ASL, ASLA, ASLB, ASLD 说明: 算术 左移指令,将内存字节, A, B,或 D 的内容向左移动一位,最低位补 0,最高位进入进位位 C。操作对 CCR有影响; 例: ASL 2, X; 将 X 的内容加 2 指向的地址的内容左移一位 , 即乘 2,最高位进 入C, 最低位补 0。 ASLA ; 将累加器 A的内容左移一位,最高位进入 C,最低位补 0。 ASLB ; 将累加器 B的内容左移一位,最高

43、位进入 C,最低位补 0。 ASLD ; 将累加器 D的内容左移一位,最高位进入 C,最低位补 0。 ASR, ASRA, ASRB 说明: 算术 右移指令,将内存字节, A 或 B 的内容向右移动一位,最高位 保持不变 ,最低位进入进位位 C。操作对 CCR有影响; 例: ASR X; 将 X指向的地址的内容右移一位,最低位 进入 C,最高位不变。 LSRA ; 将累加器 A的内容右移一位,最低位进入 C,最高位不变。 LSRB ; 将累加器 B的内容右移一位,最低位进入 C,最高位不变。 ROL, ROLA, ROLB 说明: 循环左 移指令,将内存字节, A 或 B 的内容 连标志位 C

44、 循环 向 左 移动一位, C 进入最低位 , 最高位 进入 C。操作对 CCR有影响; 例: ROL 2, X ; 将 X的内容 加 2指向的地址的内容连同进位位 C循环左 移一位, C ; 进入最低位 ,最高位 进入 C。 ROLA ; 将 累加器 A的内容 连同进位位 C循环左移一位, C进入最低位 ,最高位 ; 进入 C。 ROLB ; 将累加器 B的内容连同进位位 C循环左移一位, C进入最低位,最高位 ; 进入 C。 ROR, RORA, RORB 说明:循环 右 移指令,将内存字节, A 或 B 的内容连标志位 C 循环向 右 移动一位, C 进入最 高 位,最 低 位进入 C。

45、操作对 CCR有影响; 例: ROR 2, X +; 将 X的内容加 2指向的地址的内容连同进位位 C循环右移一位, C ; 进入最高位,最低位进入 C,完成后 X的内容加 2。 RORA ; 将累加器 A的内容连同进位位 C循环 右 移一位, C进入最 高 位,最 低 位 ; 进入 C。 RORB ; 将累加器 B的内容连同进位位 C循环 右 移一位, C进入最 高 位,最 低 位 ; 进入 C。 循环移位指令配合算术或逻辑移位指令可以实现多字节移位操作,但要注意右移时先要从高字节开始,左移时先要从低字节开始。 例:将 $4000开始的一个 8字节实现快速除 2操作。 LDX #$4000

46、; X指向高字节地址。 21 ASR 1, X+ ;最高字节算术右移 1位, X指向下一个单元。 LDAB #7 ;设置累加器 B循环次数。 LOOP1: ROR 1, X+ ;带进位位 C循环右移。 DBNE B, LOOP1; 未完跳转到 LOOP1继续做, B为 0结束。 MEM 说明: 模糊 化指令,根据隶属函数求隶属度; REV, REVW 说明: 模糊推理指令,按模糊逻辑规则求值。 WAV 说明:反模糊指令,求重心(使用单值隶属度函数作为模糊变量的隶属度函数)。 MAXA 说 明:将 A中的内容与内存单元 M的内容作比较,将两者较大的一个存到 A中,根据 (A-M)的结果影响 CC

47、R; 例: MAXA $1080 ; 将 A的内容与 $1080地址的内容作比较,较大的存入 A中。 MINA 说明:将 A中的内容与内存单元 M的内容作比较,将两者较小的一个存到 A中,根据 (A-M)的结果影响 CCR; 例: MINA $1080 ; 将 A的内容与 $1080地址的内容作比较,较小的存入 A中。 MAXM 说明:将 A中的内容与内存单元 M的内容作比较,将两者较大的一个存到 M中,根据 (A-M)的结果影响 CCR; 例: MAXM $1080 ; 将 A的内容与 $1080地址的内容作比较,较大的存入 $1080 中。 MINM 说明:将 A中的内容与内存单元 M的内

48、容作比较,将两者较小的一个存到 M中,根据 (A-M)的结果影响 CCR; 例: MINM $1080 ; 将 A的内容与 $1080地址的内容作比较,较小的存入 $1080中。 22 EMAXD 说明:将 D 中的内容与内存单元 M 的一个字内容作比较,将两者较大的一个存到 D 中,根据 (D-M)的结果影响 CCR; EMIND 说明:将 D 中的内容与内存单元 M 的一个字内容作比较,将两者较小的一个存到 D 中,根据 (D-M)的结果影响 CCR; EMAXM 说明:将 D 中的内容与内存单元 M的一个字内容作比较,将两者较大的一个存到 M中,根据 (D-M)的结果影响 CCR; EM

49、INM 说明:将 D 中的内容与内存单元 M的一个字内容作比较,将两者较小的一个存到 M中,根据 (D-M)的结果影响 CCR; TBL, ETBL 说明:查表插值指令,用来进行内插值操作。 BRA, LBRA 说明: (短转移 /长转移 )无条件跳转指令,不影响 CCR; BRN, LBRN 说明: (短转移 /长转移 )不跳转指令,不影响 CCR; BCC, LBCC 说明: (短转移 /长转移 )当进位位 C=0时跳转,不影响 CCR; BCS, LBCS 说明: (短转移 /长转移 )当进位位 C=1时跳转,不影响 CCR; 23 BEQ, LBEQ 说明: (短转移 /长转移 )当 0标志位 Z=1时跳转,不影响 CCR; BNE, LBN

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

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

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


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

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

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