微控制器原理及应用:第03章-3 寻址方式与指令系统_第1页
微控制器原理及应用:第03章-3 寻址方式与指令系统_第2页
微控制器原理及应用:第03章-3 寻址方式与指令系统_第3页
微控制器原理及应用:第03章-3 寻址方式与指令系统_第4页
微控制器原理及应用:第03章-3 寻址方式与指令系统_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、同济大学电子科学与技术系第三章 寻址方式与指令系统第二讲 指令系统(2)同济大学电子科学与技术系主要内容寻址方式指令系统数据传送类指令算术运算类指令逻辑运算类指令位操作类指令移位类指令程序控制类指令其它指令同济大学电子科学与技术系指令系统数据传送类指令算术运算类指令逻辑运算类指令位操作类指令移位类指令程序控制类指令其它指令同济大学电子科学与技术系原码、反码、补码原码:最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。 同济大学电子科学与技术系指

2、令系统HC08 CPU指令简表 :类 型保 留 字含 义1数据传送类LDA、LDX、LDHX取数到A、X、HX中STA、STX、STHX存A、X、HX到内存PSHA、PSHX、PSHH、PULA、PULX、PULH进栈、出栈TAP、TPA、TAX、TXA、TXS、TSX寄存器间传送MOV存储单元之间传送2算术运算类ADD、ADC、SUB、SBC、MUL、DIV加、减、乘、除INC、INCA、INCX、DEC、DECA、DECX加1/减1COM、COMA、COMX、NEG、NEGA、NEGX求反/取补CMP、CPX、CPHX比较CLR、CLRA、CLRX清零TST、TSTA、TSAX测试是否为0

3、AIS、AIXSP、HX增加3逻辑运算类AND、ORA、EOR与、或、异或同济大学电子科学与技术系指令系统4位操作类指令BIT、BCLR、BSET、CLC、SEC、CLI、SEI位测试、清位、置位5移位类指令ASL、ASLA、ASLX、LSL、LSLA、LSLXASR、ASRA、ASRX、LSR、LSRA、LSRX算术左移、逻辑左移算术右移、逻辑右移ROL、ROLA、ROLX、ROR、RORA、RORX循环左移、循环右移6程序控制类BCC、BCS、BHCC、BHCS、BIL、BIH、BMC、BMS、BHI、BHS、BLO、BLS、BEQ、BNEBPL、BMI、BGE、BGT、BLE、BLT、B

4、RCLR、BRSET、BRA一般转移指令CBEQ、CBEQA、CBEQXDBNZ、DBNZA、DBNZX比较相等转移减1不为0转移JMPJSR、BSR、RTS无条件跳转调子程序、子程序返回7其它指令SWI、RTI、DAA、NSA、RSP、NOP、BRN、STOP、WAIT算术类指令 编号 指令 操作 寻址方式 (50) ADD #opr8 A+#opr8 A IMM(51) ADD addr8 A+(addr8)A DIR(52) ADD addr16 A+(addr16)A EXT(53) ADD addr16,X A+(addr16+HX)A IX2(54) ADD addr8,X A+(

5、addr8+HX)A IX1(55) ADD ,X A+(HX)A IX(56) ADD addr8,SP A+(addr8+SP)A SP1(57) ADD addr16,SP A+(addr16+SP)A SP2 (58) ADC #opr8 A+#opr8 +CA IMM(59) ADC addr8 A+(addr8)+CA DIR(60) ADC addr16 A+(addr16)+CA EXT(61) ADC addr16,X A+(addr16+HX)+CA IX2(62) ADC addr8,X A+(addr8+HX)+CA IX1(63) ADC ,X A+(HX)+CA I

6、X(64) ADC addr8,SP A+(addr8+SP)+CA SP1(65) ADC addr16,SP A+(addr16+SP)+CA SP2 1)加法指令不带进位的加法指令溢出11半进位中断屏蔽负标志0标志进位位0110100011001LDA #$88ADD #$88 A:10001000 10001000000100001ACCR上电复位状态VHINZC00100不带进位的加法指令带进位的加法指令算术类指令 编号 指令 操作 寻址方式 (66) SUB #opr8 A-#opr8 A IMM(67) SUB addr8 A-(addr8)A DIR(68) SUB addr1

7、6 A-(addr16)A EXT(69) SUB addr16,X A-(addr16+HX)A IX2(70) SUB addr8,X A-(addr8+HX)A IX1(71) SUB ,X A-(HX)A IX(72) SUB addr8,SP A-(addr8+SP)A SP1(73) SUB addr16,SP A-(addr16+SP)A SP2 (74) SBC #opr8 A-#opr8 -CA IMM(75) SBC addr8 A-(addr8)-CA DIR(76) SBC addr16 A-(addr16)-CA EXT(77) SBC addr16,X A-(add

8、r16+HX)-CA IX2(78) SBC addr8,X A-(addr8+HX)-CA IX1(79) SBC ,X A-(HX)-CA IX(80) SBC addr8,SP A-(addr8+SP)-CA SP1(81) SBC addr16,SP A-(addr16+SP)-CA SP2 1)减法指令减法指令带借位的减法指令算术类指令2)无符号乘/除法指令编号 指令 操作 寻址方式 (82) MUL XAX:A INH (83) DIV H:A/XA;余数H INH MUL指令将X与A中的数相乘,高8位进X,低8位进A。同时清标志位H和C,不影响其他标志位。DIV指令将H、A中的2

9、字节数除以X中的1字节数,商进A保存,余数进H。影响Z、C标志位。 注意:乘除指令中,认为操作数均为无符号数无符号乘法无符号除法算术类指令3)加1/减1指令编号 指令 操作 寻址方式 (84) INC addr8 (addr8)+1(addr8) DIR(85) INCA A+1A INH(86) INCX X+1X INH(87) INC addr8,X (addr8+HX)+1(addr8+HX) IX1(88) INC ,X (HX)+1(HX) IX(89) INC addr8,SP (addr8+SP)+1(addr8+SP) SP1 (90) DEC addr8 (addr8)-1

10、(addr8) DIR(91) DECA A-1A INH(92) DECX X-1X INH(93) DEC addr8,X (addr8+HX)-1(addr8+HX) IX1(94) DEC ,X (HX)-1(HX) IX(95) DEC addr8,SP (addr8+SP)-1(addr8+SP) SP1 影响标志位V, N, Z, 对C和H没有影响 LDA #$FF ADD #$01运行后:V=1 H=1 N=0 Z=1 C=1 A:11111111+ 00000001000000001ALDA #$FFINCA运行后:V=1 N=0 Z=1 H和C不变这是ADD #$1和INC

11、指令的区别A=0 不带进位的加法指令和加1指令算术类指令4)取反/求补指令编号 指令 操作 寻址方式 (96) COM addr8 $ FF - (addr8)(addr8) DIR (97) COMA $ FF - AA INH(98) COMX $ FF - (X)X INH(99) COM addr8,X $ FF - (addr8+HX)addr8+HX) IX1(100) COM ,X $ FF - (HX)(HX) IX (101) COM addr8,SP $ FF - (addr8+SP)(addr8+SP) SP1 (102) NEG addr8 $ 00 - (addr8)

12、(addr8) DIR (103) NEGA $ 00 - AA INH(104) NEGX $ 00 - (X)X INH(105) NEG addr8,X $ 00 - (addr8+HX)(addr8+HX) IX1(106) NEG ,X $ 00 - (HX)(HX) IX (107) NEG addr8,SP $ 00 - (addr8+SP)(addr8+SP) SP1 取反指令求补指令算术类指令5)比较指令编号 指令 操作 寻址方式 (108) CMP #opr8 A-#opr8 IMM(109) CMP addr8 A-(addr8) DIR(110) CMP addr16

13、A-(addr16) EXT(111) CMP addr16,X A-(addr16+HX) IX2(112) CMP addr8,X A-(addr8+HX) IX1(113) CMP ,X A-(HX) IX(114) CMP addr8,SP A-(addr8+SP) SP1(115) CMP addr16,SP A-(addr16+SP) SP2 (116) CPX #opr8 X-#opr8 IMM(117) CPX addr8 X-(addr8) DIR(118) CPX addr16 X-(addr16) EXT(119) CPX addr16,X X-(addr16+HX) I

14、X2(120) CPX addr8,X X-(addr8+HX) IX1(121) CPX ,X X-(HX) IX(122) CPX addr8,SP X-(addr8+SP) SP1(123) CPX addr16,SP X-(addr16+SP) SP2 (124) CPHX #opr16 HX-#opr16 IMM(125) CPHX addr8 HX-(addr8:addr8+1) DIR 做减法,对CCR各位的影响与SUB指令相同比较指令比较指令将两个操作数(其中一个是A、X或H:X)作了一次减法,不改变任何一操作数,仅影响标志位。8位比较:MOV #$AA,$80LDA #$AA

15、CMP $80 ;$AA-$AA=0,所以Z=1,说明相等16位比较:MOV #$12,$80MOV #$34,$81LDHX #$1200CPHX $80 ; (H:X)=$1200,($80)=$12,($81)=$34 ;$1200-$12340, N=1, Z=0 说明两数不等算术类指令6)清零指令编号 指令 操作 寻址方式 (126) CLR addr8 #$ 00 addr8 DIR (127) CLRA #$ 00 A INH(128) CLRX #$ 00 X INH(129) CLRH #$ 00 H INH(130) CLR addr8,X #$ 00(addr8+HX)

16、IX1(131) CLR ,X #$ 00(HX) IX (132) CLR addr8,SP #$ 00(addr8+SP) SP1 算术类指令7)测试是否为负或零指令编号 指令 操作 寻址方式 (133) TST addr8 (addr8)-#$00 DIR (134) TSTA (A)-#$00 INH(135) TSTX (X)-$00 INH(136) TST addr8,X (addr8+HX)-#$00 IX1(137) TST ,X (HX)-#$00 IX (138) TST addr8,SP (addr8+SP)-#$00 SP1 算术类指令8)HX与SP增加指令 编号 指

17、令 操作 寻址方式 (139) AIS #opr8 SP+ #opr8 SP IMM (140) AIX #opr8 HX+ #opr8 HX IMM 注意:所加的立即数须小于等于16;指令执行结果对CCR没有影响逻辑运算类指令 编号 指令 操作 寻址方式 (141) AND #opr8 A#opr8 A IMM(142) AND addr8 A(addr8)A DIR(143) AND addr16 A(addr16)A EXT(144) AND addr16,X A(addr16+HX)A IX2(145) AND addr8,X A(addr8+HX)A IX1(146) AND ,X

18、A(HX)A IX(147) AND addr8,SP A(addr8+SP)A SP1(148) AND addr16,SP A(addr16+SP)A SP2 (149) ORA #opr8 A#opr8 A IMM(150) ORA addr8 A(addr8)A DIR(151) ORA addr16 A(addr16)A EXT(152) ORA addr16,X A(addr16+HX)A IX2(153) ORA addr8,X A(addr8+HX)A IX1(154) ORA ,X A(HX)A IX(155) ORA addr8,SP A(addr8+SP)A SP1(15

19、6) ORA addr16,SP A(addr16+SP)A SP2 逻辑运算类指令 编号 指令 操作 寻址方式 (157) EOR #opr8 A#opr8 A IMM(158) EOR addr8 A(addr8)A DIR(159) EOR addr16 A(addr16)A EXT(160) EOR addr16,X A(addr16+HX)A IX2(161) EOR addr8,X A(addr8+HX)A IX1(162) EOR ,X A(HX)A IX(163) EOR addr8,SP A(addr8+SP)A SP1(164) EOR addr16,SP A(addr16

20、+SP)A SP2 逻辑运算指令逻辑运算类指令都是对累加器A和另一操作数按位进行,结果返回A。VHNZC0 LDA #$AA ; 10101010AND #$A5 ; 10100101 A 10100000要将某位取反,可对该位用1去异或,而其余各位用0异或。LDA #$00 ; 00000000EOR #$40 ; 01000000 A 01000000位操作指令编号 指令 操作 寻址方式 (165) BIT #opr8 A & #opr8 IMM(166) BIT addr8 A &(addr8) DIR(167) BIT addr16 A&(addr16) EXT(168) BIT ad

21、dr16,X A& (addr16+HX) IX2(169) BIT addr8,X A& (addr8+HX) IX1(170) BIT ,X A& (HX) IX(171) BIT addr8,SP A& (addr8+SP) SP1(172) BIT addr16,SP A& (addr16+SP) SP2 (173) BCLR n,addr8 0(addr8).n DIR(174) BSET n,addr8 1(addr8).n DIR (175) CLC 0C INH(176) SEC 1C INH (177) CLI 0I (开总中断) INH(178) SEI 1I (关总中断)

22、 INH 置位清标志位清中断标志位I置中断标志位位操作指令位测试指令BIT:计算机进行BIT指令时实际是对累加器A和操作数进行了一次AND运算,与AND的区别是“与”运算结果不存入累加器A,因此两个操作数都不变,仅改变标志位。清位:BCLR n,addr8MOV #$FF,$80 ;($80)=11111111BCLR 0,$80 ; ($80)=11111110由于是直接寻址addr8,因此只能0页寻址,对存储器前256个单元操作,其位操作空间位25682048。指令中n=07,不影响任何标志位。置位:BSET n,addr8清/置标志位C:CLC C0 SEC C1 清/置位中断屏蔽位:CLI I0 开中断SEI I1 关中断第0位移位类指令编号 指令 操作 寻址方式 (179) ASL addr8 DIR (180) ASLA INH(181) ASLX C0 INH(182) ASL addr8,X b7 b0 IX1(183) ASL ,X IX (184) ASL addr8,SP SP1 (185) LSL addr8 DIR (186) LSLA INH(187) LSLX C0 INH(188) LSL addr8,X b7 b0 IX1(189) LSL ,X IX (190) LSL addr8,SP SP11)单向移位指令编号 指令 操作 寻址方式 (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论