【正文】
指令含義 立即尋址 主要用于初始化 LD 10, A 立即數(shù) 10 ? A 絕對尋址 用 16位地址尋址存儲單元 STL A, *( y) 將 AL內(nèi)容存入 y所在的存儲單元 累加器尋址 累加器中的內(nèi)容作為地址 READA x 將 A的內(nèi)容作為地址讀程序存儲器,并存入 x存儲單元 直接尋址 利用 DP指針和 SP指針尋址 LD @x, A (DP+x的低 7位地址 ) ? A 間接尋址 輔助寄存器作為地址指針 LD *AR1, A ((AR1)) ? A 存儲器映射 寄存器尋址 快速尋址 MMR LDM ST1, B (ST1) ? B 堆棧尋址 壓入 /彈出 RAM和 MMR PSHM AG (SP)1 ? SP,(AG) ? (SP) 部分尋址縮略語 縮略語 含 義 Smem 16位單尋址操作數(shù) Xmem 16位雙尋址操作數(shù) , 用于雙操作數(shù)或部分單操作數(shù)指令 , 從 DB數(shù)據(jù)總線上讀取 Ymem 16位雙尋址操作數(shù),用于雙操作數(shù)指令,從 CB數(shù)據(jù)總線上讀取 dmad 16位立即數(shù):數(shù)據(jù)存儲器地址( 0~ 65 535) pmad 16位立即數(shù):程序存儲器地址 ( 0~ 65 535) PA 16位立即數(shù): I/O口地址( 0~ 65 535) src 源累加器( A或 B) dst 目的累加器( A或 B) lk 16位長立即數(shù) 指令中含有一個固定的立即數(shù) LD 0, ARP ; ARP=2( k3) LD 3, ASM ; ASM=3( k5) LD 50, DP ; DP=50( k9) LD 1234, A ; A=1234( lk) STM FFFFh, IMR ; IMR=FFFFh( lk) 立即數(shù)尋址示例 絕對尋址示例 指令中含有所要尋找的操作數(shù)的 16位存儲單元地址 數(shù)據(jù)存儲器地址 ( dmad) 尋址: MVDK Smem, dmad MVDM dmad, MMR MVKD dmad, Smem MVMD MMR, dmad 程序存儲器地址 ( pmad) 尋址: MACD Smem, pmad, src MACP Smem, pmad, src MVDP Smem, pmad MVPD pmad, Smem 端口地址 (PA)尋址 PORTR PA, Smem PORTW Smem, PA *(lk)尋址適用于支持單數(shù)據(jù)存儲器操作數(shù)的指令 1. MVDK Smem, dmad 功能描述:把一個單數(shù)據(jù)存儲器操作數(shù) Smem的內(nèi)容復(fù)制 到一個通過 dmad(地址在 EAB地址寄存器 EAR中 )尋址的數(shù) 據(jù)存儲器單元??梢匝h(huán)執(zhí)行該指令來轉(zhuǎn)移數(shù)據(jù)存儲器中 的連續(xù)字。 數(shù)據(jù)存儲器地址( dmad)尋址 例 MVDK DAT10, 8000H Data Memory 004 DP B e f o r e I n st r u c t i o n A f t e r I n st r u c t i o n 004 DP 1234 020A H 1 2 3 4 020A H A B C D 800 0H 1 2 3 4 8000 H 2. MVKD dmad, Smem 功能描述:把數(shù)據(jù)從一數(shù)據(jù)存儲器單元轉(zhuǎn)移到另一個數(shù)據(jù) 存儲器單元中。源數(shù)據(jù)存儲器單元由一個 16 bit立即數(shù) dmad 尋址,然后轉(zhuǎn)移到 Smem中。循環(huán)執(zhí)行該指令可以轉(zhuǎn)移數(shù)據(jù) 存儲器中的連續(xù)字 (使用間接尋址 )。 例 MVKD 1000H, *+AR5 0 1 F F A R 5 B e fo re In s t ru c t i o n A ft e r In s t ru c t i o n 0200 A R 5 Data Memory 1 2 3 4 1000H 1 2 34 A B C D 0200H 1 2 3 4 1000H 0200 H 1. MACD Smem, pmad, src 功能描述:一個單數(shù)據(jù)存儲器值 Smem與一個程序存儲器值pmad相乘,乘積和源累加器 src的值相加,結(jié)果存放在 src中。另外,還把數(shù)據(jù)存儲器值 Smem裝入到 T寄存器和緊接著 Smem地址的數(shù)據(jù)單元中去。 該指令受 FRCT和 OVM的影響,并影響到 OVsrc。 程序存儲器地址( pmad)尋址 0 0 0 0 7 7 0 0 0 0 A Be fo re In s t ru c t i o n 0 0 0 8 T A ft e r In s t ru c t i o n 0 0 0 0 7 D 0 B4 4 A 0 0 5 5 T 0100 A R3 0 0 F F A R3 F RCT 0 0 F RCT Program Memory 1 2 3 4 C O E F F S 1234 C O E F F S Da t a M e m o r y 0 0 6 6 0101 H 0055 0101H 0055 0100 H 0055 0100 H 例 MACD *AR3–, COEFFS, A 2. MVDP Smem, pmad 功能描述:把嚴格的 16 bit單數(shù)據(jù)存儲器操作數(shù) Smem復(fù) 制到一個由 16 bit立即數(shù) pmad尋址的程序存儲器單元中。 通過循環(huán)執(zhí)行該指令可以把數(shù)據(jù)存儲器中的連續(xù)字 (使 用間接尋址 )轉(zhuǎn)移到由 16 bit立即數(shù)尋址的連續(xù)的程序存 儲器空間中。 例 MVDP DAT0, 0FE00H 0 0 4 D P B e fo re In s t ru c t i o n A ft e r In s t ru c t i o n 0 0 4 D P 0200H 0 1 2 3 0 1 2 3 0200H FFFF F E 0 0 H 0 1 2 3 F E 0 0 H Data Memory Program Memory 端口地址 (PA)尋址 1. PORTR PA, Smem ; (PA)→Smem 功能描述:從一個外部 I/O口 PA(地址為 16 bit立即數(shù) )把一個 16 bit數(shù)讀入到指定的數(shù)據(jù)存儲器單元 Smem中。 2. PORTW Smem, PA ; (Smem)→PA 功能描述:把指定的數(shù)據(jù)存儲器單元 Smem中的 16 bit數(shù)寫到 外部 I/O口 PA中去。 B e f o r e I n st r u c t i o n A f t e r I n st r u c t i o n 0 0 0 DP 0 0 0 DP 7 F F A 0 0 0 5 H 7 F F A 0005 H 0060H 0 0 0 0 7 F F A 0060H 例 PORTR 05H, INDAT ; INDAT .equ 60H I/O Memory Data Memory 例 PORTW OUTDAT, 05H ; OUTDAT .equ 07H I/O Memory 0 0 0 0 0 0 0 5 H 7 F F A 0005H Data Memory B e f o r e I n st r u c t i o n A f t e r I n st r u c t i o n 0 0 0 DP 0 0 0 DP 0007H 7FFA 7FFA 0087H 例如,把數(shù)據(jù)空間中地址為 BUFFER單元中的數(shù)據(jù)傳送到累加器 A,指令可寫為: LD *( BUFFER), A 采用一個符號或是一個特定的值來指明數(shù)據(jù)空間的地址。適用于所有支持單數(shù)據(jù)存儲器操作數(shù)的指令。 長立即數(shù) *(Ik)尋址 累加器尋址示例 將累加器的內(nèi)容作為地址去訪問程序存儲單元,即將累加器中的內(nèi)容作為地址,用來對存放數(shù)據(jù)的程序存儲器尋址。 用于完成程序存儲空間與數(shù)據(jù)存儲空間之間的數(shù)據(jù)傳輸。 1. READA Smem 功能:把累加器 A所確定的程序存儲器單元中的一個字,傳送 到單數(shù)據(jù)存儲器 (Smem)操作數(shù)所確定的數(shù)據(jù)存儲器單元中。 2. WRITA Smem 功能:把 Smem操作數(shù)所確定的數(shù)據(jù)單元中的一個字,傳送到 累加器 A所確定的程序存儲器單元中去。 A 0 0 0 0 0 0 0 0 2 3 0 0 0 0 0 0 0 0 2 3 A B e f o r e I n s t r u c t i o n Af t e r I n s t r u c t i o n DP 0 0 4 0 0 4 DP Program Memory 0023H 0 3 0 6 0 3 0 6 0023H Data Memory 0206H 0 0 7 5 0 3 0 6 0206H 例 READA DAT6 例 WRITA DAT5 A 0 0 0 0 0 0 0 2 5 7 0 0 0 0 0 0 0 2 5 7 A B e f o r e I n s t r u c t i o n Af t e r I n s t r u c t i o n DP 0 3 2 0 3 2 DP Program Memory 0257H 0 3 0 6 4 3 3 9 02 57H Data Memory 1905H 4339 4339 1905H 直接尋址示例 指令中只含有數(shù)據(jù)存儲器的低 7位地址 (偏移地址 dmad); 利用數(shù)據(jù)指針 DP和堆棧指針 SP尋址。 所要尋址的數(shù)據(jù)存儲器 16位地址是由基地址和偏移地址構(gòu)成。 CPL=0時 , 數(shù)據(jù)存儲器 16位地址由 DP和偏移地址 dmad構(gòu)成; CPL=1時 , 數(shù)據(jù)存儲器 16位地址由 SP加偏移地址 dmad構(gòu)成 。 直接尋址標識: ① 變量前加 @, 如 @x; ② 在偏移量前加 @, 如 @5。 例: RSBX CPL ;基地址為 DP LD 3, DP ;設(shè)置當前頁面為 3 LD @x, A ;將 x值加載到累加器 A LD 4, DP ;設(shè)置當前頁面為 4, y所在的頁面 ADD @y, A ;將 y值加到累加器 A 例 LD *AR4, DP 0 2 0 0 A R 4 B e f o r e I n st r u c t i o n 1 F F DP A f t e r I n st r u c t i o n 0 2 0 0 A R 4 0 D C DP Data Memory 0200 H F E D C F E D C 0200 H 間接尋址示例 根據(jù)輔助寄存器 (AR0~AR7)給出的 16位地址進行尋址 例 LD *AR3+, T 0 0 0 0 T B e fo re In s t ru