数据寻址方式

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

立即寻址:
﹡ 就是指令中包含有执行指令所需要的立即数
(不用寻址)。在数字前面加 # 号,表示一个立 即数;
﹡立即数可为3、5、8、9位短立即数,也可为
16位长立即数;指令可为1 字或2字。 如:1)LD #80h,A
2)LD #7h,ARP 3)RPT #FFh 4)LD #1Fh,ASM;将5位立即数加载到 ASM中 5)LD #1FFh,DP;将9位立即数加载到 DP中
寻址用到的缩写语
❖ Lk:16位长立即数; ❖ Dst:目的累加器; ❖ Src:源累加器; ❖ PA:16位立即数---I/O口地址; ❖ Pmad: 16位立即数---程序存储器地址; ❖ Dmad: 16位立即数---数据存储器地址; ❖ Xmem:16位双寻址操作数,用于双/单操作数指令。从DB总线读出; ❖ Ymem: 16位双寻址操作数,用于双操作数指令。从CB数据总线读出 。 ❖ Smem:16位单寻址操作数。
间接寻址:
❖ 使用辅助寄存器16位的地址,访问数据存储 空间的任意单元
❖ 间接寻址类型 ❖ 循环寻址 (*) ❖ 位倒序寻址(*)
例:完成下列表达式的程序
4
y xn n1
.bss x,4 ;伪指令,为变量X,Y保留一个5个字的空间
.bss y,1
.text
;程序开始,该段后包含了可执行的代码
STM #X,AR1 ;将#X送到AR1中
LD *AR1+,A ;((AR1))→A ,AR1=AR1+1
ADD *AR1+,A ;((AR1))+(A)→A
ADD *AR1+,A ; +X3
ADD *AR1,A ;
+X4
AR1
STL A,*(y) ;A中的低位数送到y中
x 1000h
. .
X1 X2 X3
例:求Y=X2+X4+X6+X8+X10
.bss x,10 ;给变量x保留10个空间
.bss y,1 ;给变量y保留1个空间
.text
;程序开始
STM #X+1,AR1
绝对寻址:
﹡指令中包含有所要寻址的存储单元的16位地址。
﹡有四种绝对寻址:dmad寻址,pmad寻址, PA寻址, *(lk)寻址。
数据页分配情况:
地址 0000-----007Fh 0080-----00FF 0100-----017F 0180-----01FF 0200-----027F 0280-----02FF 0300-----037F 0380-----03FF …..
start: stm #0,swwsr stm #x,ar1 rpt #4 mvpd table,*ar1+ ;
初始化数据
;------------1111111111---------normal-----
STM #x,AR1 ;将#X送到AR1中
LD *AR1+,A ;((AR1))→A , AR1=AR1+1
PA寻址:
❖ PORTR 05,INDAT ❖ PORTW OUTDAT,5h
*(lk)寻址:
❖ LD *(2000h),A ❖ STL A,*(200h)
累加器寻址:
❖ 利用累加器的内容作为地址来访问程序存储 器中的数据
❖ READA:从程序存储器中(A的内容为地址) 读数据到数据存储器中
❖ WRITA:将数据存储器中的数写到程序存储 器中(A的内容为地址)
直接寻址:
﹡指令包含了数据地址的低7位,作为偏移地址与DP或SP中
的基地址组合形成完整的16位数据地址。在DP和SP不变的情 况下,可以直接访问128个地址。
﹡使用SP还是DP由状态寄存器中的CPL位决定:
CPL=0,使用DP的9位作为高9位与偏移地址相加 CPL=1,使用SP的16位与偏移地址相加
※ 在偏移地址前加@来设定
举例:注意(流水线等待..) 见p34 1、LD #1234h,SP
SSBX CPL ST #5678h,@30h; (1264h)=#5678h
2、LD #020h,DP RSBX CPL ST #1234h,@30h;(1030h)=#1234h
0 0010 0000 011 0000=1030
DP 第0页
1 2 3 4 5 6 7
27=128
Dmad寻址:
❖ MVDK *AR3-,1000h ❖ MVDM 300h,BK ❖ MVKD 1000h,*+AR5 ❖ MVMD AR7,8000h
Pmad寻址:
❖ MVDP DAT0,0FE00h ❖ MVPD 2000h,*AR7 ❖ MVPD 0FE00h,DAT5
;-Biblioteka Baidu--222222222222-------
❖ ;-------3333- add-- 1 3 5 STM #x,AR1 STM #2,AR0 ld *ar1+0,a add *ar1+0,a add *ar1+0,a stl a,*(y)
;--------3333--
xh:
b
xh ; 空循环
.
X4
1004h Y
.title “add001.asm” .mmregs .def start .bss x,5 .bss y,1 .data Table: .word 1,2,3,4,5 .text
ld *ar1+,a add *ar1+,a add *ar1+,a add *ar1+,a add *ar1+,a stl a,@y
ADD *AR1+,A ; ((AR1))+ (A)→A
ADD *AR1+,A ; +X3
ADD *AR1,A ;
+X4
STL A,*(y) ;A中的低位数送到y中
;---------1111111111111111----
;-----2222222222---rpt---stm #x,ar1 ld *ar1+,a rpt #3 add *ar1+,a stl a,*(y)
﹡直接寻址指令编码格式:
15~8
7
opcode I=0
I=0,表示直接寻址
6~0
dam
直接寻址的地址产生:
※ DP的取值范围:0~511(29=512),dma的取值范围从0~128, 所以,DP指向全部的512页之一,dma指向这一页的128个字 地址之一。
※ SP指向全空间的任意一个地址,dma指向某页的特定地址。从 一个数据空间的任何一个基地址访问连续的128个字的块。
相关文档
最新文档