- 1、本文档共130页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第3章SPCE061A指令系统;3.1概述;3.1.2寻址方式
寻址方式主要有以下几种:
(1)立即寻址:操作数以立即数的形式出现。
例如,R1=0x1234是把十六进制数0x1234赋给存放器R1。
(2)直接寻址:通过存储器地址来访问存储器中的数据。
例如,R1=[0x2222]将0x2222单元的数据传送到存放器R1。
(3)存放器寻址:操作数在存放器中。
例如,R1=R2是把存放器R2中的数据赋给存放器R1。;(4)存放器间接寻址:存放器中存储的是操作数的地址。
例如,R1=[BP]是把由BP指向的内存单元的数据传送到存放器R1。
(5)变址寻址:操作数的地址由基址和偏移量共同提供。
例如,R1=[BP+0x34],BP为基址,0x34为偏移量,两者共同确定操作数存放的地址。;表3.1符号约定;;3.2数据传送指令;表3.2数据传送指令一览表(ISA1.1指令集);1.立即寻址
格式1:Rd=IM16
说明:16位立即数送入目标存放器Rd。
格式2:Rd=IM6
说明:6位立即数扩展为16位送入目标存放器Rd。例如:
R1=0xF001 //R1的值变为0xF001;2.存放器寻址
格式1:Rd=Rs
说明:将源存放器Rs的数据送给目标存放器Rd。例如:
R2=0xF001 //R2的值为0xF001
R1=R2 //R1的值变为0xF001;3.直接寻址
格式1:Rd=[A6]
说明:把A6指定的存储单元数据读到Rd存放器。
格式2:Rd=[A16]
说明:把A16指定的存储单元数据读到Rd存放器。
格式3:[A6]=Rs
说明:将源存放器Rs中的数据送给以A6为地址的存储单元。
格式4:[A16]=Rs
说明:把Rs数据存储到A16指出的存储单元。例如:
R1=0x0011 //R1的值为0x0011
[0x0010]=R1 //0x0010单元的值变为0x0011;4.变址寻址
格式1:Rd=[BP+IM6]
说明:把基址指针BP与6位的立即数的和作为地址,将该存储单元的数据读到Rd存放器。
格式2:[BP+IM6]=Rs
说明:把Rs的值存储到基址指针BP与6位的立即数之和为地址的存储单元。例如:
R1=0x0010
[BP+0x0002]=R1;5.存放器间接寻址
格式1:[Rd]=Rs
说明:把Rs的数据存储到Rd的值所指的存储单元(Rd中存放的是操作数的地址)。
格式2:[++Rd]=Rs
说明:首先把Rd的值加1,再将Rs的数据存储到Rd的值所指的存储单元。
格式3:Rd=[Rs++]
说明:读取Rs所指的存储单元的值存入Rd,而后Rs的值加1。;例1将R3的值保存于0x25单元。
R3=0x5678 //把16位立即数0x5678赋给R3
方法1:
[0x25]=R3 //将R3的值存储于0x25存储单元(直接寻址), //0x25单元的内容为0x5678
方法2:
R2=0x25 //立即数0x25送入R2
[R2]=R3 //将R3的值存储于0x25存储单元(存放器间 //接寻址),0x25单元的内容为0x5678;方法3:
BP=0x20 //立即数0x20送入BP
[BP+5]=R3 //将R3的值存储于0x25存储单元(变址寻 //址),0x25单元的内容//为0x5678;例2将0x25,0x26和0x27单元清零。
方法1:
R1=0
R2=0x25 //立即数0x25送入R2中
[R2++]=R1 //R1的值存储于0x25,存储单元R2=R2+1
[R2++]=R1 //R1的值存储于0x26,存储单元R2=R2+1
[R2]=R1 //R1的值存储于0x27;方法2:
R1=0
R2=0x27
[R2--]=R1 //R1的值存储于0x27,存储单元R2
文档评论(0)