小命 CPL=07位dma域与9bit的DP相结合 形成16位的数据存储器地址。 CPL=17位dma域加上(正偏移)SP 的值形成16位的数据存储器地址。 15141312111098冒日543210 9位数据贡指针DP 7位dma 1514131211109876543210 16位堆栈指针sP 7位dma 16位数据存储器地址 b DP值是从0-511(29-1),以DP为基准的直接寻址把存储器分 成512页,7位的dma范围从0~127,每页有128个可访问的单元。 12
12 CPL=0 7 位 dma 域 与 9bit 的 DP 相结合 形成16位的数据存储器地址。 CPL=1 7位dma域加上(正偏移)SP 的值形成16位的数据存储器地址。 DP值是从0~511(2 9-1),以DP为基准的直接寻址把存储器分 成512页,7位的dma范围从0~127,每页有128个可访问的单元
小命 5.间接寻址 方法 特点 (ARO-AR) 能在一个指令中访问 ARAUO/ARAU1 两个数据存储器单元 16位无符号算术运 算 寻址范围为64K 两个独立的存储器单元读数据 读一个、写另一个存储器单元 读写两个连续的存储器单元13
13 5.间接寻址 方法 特点 (AR0~AR7)→ ARAU0/ARAU1 → 16位无符号算术运 算→ 寻址范围为64K 能在一个指令中访问 两个数据存储器单元 两个独立的存储器单元读数据 读一个、写另一个存储器单元 读写两个连续的存储器单元
小命 5.间接寻址 (1)单操作数寻址 LD AR1. B 15~8 6~3 2~0 操作码 I=1 MOD ARF 定义间接寻 定义寻址所使用 STI 址的类型 的辅助寄存器 CMPT=0标准方式ARF确定辅助寄存器,ST0中ARP=0 CMPT=1兼容方式如ARF=0,用ARP选择辅助寄存器, 否则,用ARF来确定辅助寄存器。ARF的值装入ARP
14 5.间接寻址 (1)单操作数寻址 定义间接寻 址的类型 定义寻址所使用 的辅助寄存器 ST1 CMPT=0 标准方式 ARF确定辅助寄存器,ST0中ARP=0 CMPT=1 兼容方式 如ARF=0,用ARP选择辅助寄存器, 否则,用ARF来确定辅助寄存器。ARF的值装入ARP。 LD *AR1,B
小命 ARP(3) AR0(16) AR1(16 ARD BK 1k 1 AR2(16) ARAUO AR3(16 AR416 +.%0B ARS(16 DAB(16) ARO BK (读) AR6(16) ARAU1 AR7(16 BK(16)1 EAB(16) (写) or CAB(16 匚数据总线DB6 (32位读) 数据总线E 单操作数间接寻址的硬件框图 15
单操作数间接寻址的硬件框图 15
小命捉 单数据存储器操作数间接寻址类型 MOD 域 操作码语法 功能 说明 0000 ☆ARx addaX ARx包含了数据存储器地址 ddrARx 0001 ARx=ARx-1 访问后,ARx中的地址减1 addeR 0010 *ARx+ ARx=ARx+ 访问后,ARx中的地址加1① 0011 *+ARx ARx=ARx+1 在寻址前,ARx中的地址加1,然后再寻址0③ 0100 *ARx-0B addrARx ARx=B (ARX-ARO) 访问后,从ARx中以位倒序进位的方式减去AR0 0101 ⊥Rx-0 addrARX ARX=ARX-ARO 访问后,从ARx中减去AR0 0110 MARx+O addrARx ARX=ARX+ARO 访间后,把AR0加到ARx中去 011l ☆ARx+0B addrARx ARx=B (ARX+ARO) 访问后,把AR0以位倒序进位的方式加到ARx中 100 ARx-/o addr=ARx ARx=circ (ARx-1) 访问后,ARx中的地址以循环寻址的方式减10 *ARx-0% addaX ARx=circ (ARX-ARO) 访问后,从ARx中以循环寻址的方式减去AR0 1010 *ARx+% ARx=circ (ARx+1) 访问后,ARx中的地址以循环寻址的方式加10 1011 *ARx+0%o addAX ARx=circ (ARX+ARO) 访问后,把AR0以循环寻址的方式加到ARx中 1100 *ARx (lk) addrARx+lk ARX=ARX 金:和男移女)的和用米作为数据存储器地 1101 *+ARx (lk) addrARx+lk 在寻址前 带符号的16位的长偏移(k)加到 ARx=ARx+lk addrcire (ARx+lk) 1110 *+ARx (lk)%/ ARx=circ (ARx+lk) 储○, 后再用新的ARx 1111 *(lk) addle (牌x用米作为数据有傅器
16 MOD域 操作码语法 功 能 说 明 0000 *ARx addr=ARx ARx包含了数据存储器地址 0001 *ARxaddr=ARx ARx=ARx-1 访问后,ARx中的地址减1② 0010 *ARx+ addr=ARx ARx=ARx+1 访问后,ARx中的地址加1① 0011 *+ARx addr=ARx+1 ARx=ARx+1 在寻址前,ARx中的地址加1,然后再寻址①②③ 0100 *ARx-0B addr=ARx ARx=B(ARx-AR0) 访问后,从ARx中以位倒序进位的方式减去AR0 0101 *ARx-0 addr=ARx ARx=ARx-AR0 访问后,从ARx中减去AR0 0110 *ARx+0 addr=ARx ARx=ARx+AR0 访问后,把AR0加到ARx中去 0111 *ARx+0B addr=ARx ARx=B(ARx+AR0) 访问后,把AR0以位倒序进位的方式加到ARx中 1000 *ARx-% addr=ARx ARx=circ(ARx-1) 访问后,ARx中的地址以循环寻址的方式减1① 1001 *ARx-0% addr=ARx ARx=circ(ARx-AR0) 访问后,从ARx中以循环寻址的方式减去AR0 1010 *ARx+% addr=ARx ARx=circ(ARx+1) 访问后,ARx中的地址以循环寻址的方式加1① 1011 *ARx+0% addr=ARx ARx=circ(ARx+AR0) 访问后,把AR0以循环寻址的方式加到ARx中 1100 *ARx(lk) addr=ARx+lk ARx=ARx ARx和16位的长偏移(lk)的和用来作为数据存储器地 址。ARx本身不被修改 1101 *+ARx(lk) addr=ARx+lk ARx=ARx+lk 在寻址前,把一个带符号的16位的长偏移(lk)加到 ARx中,然后用新的ARx的值作为数据存储器的地址③ 1110 *+ARx(lk)% addr=circ(ARx+lk) ARx=circ(ARx+lk) 在寻址前,把一个带符号的16位的长偏移以循环寻址 的方式加到ARx中,然后再用新的ARx的值作为数据存 储器的地址③ 1111 *(lk) addr=lk 一个无符号的16位的长偏移(lk)用来作为数据存储器 的绝对地址。(也属绝对寻址)③ 单数据存储器操作数间接寻址类型