HOLTEK 指令集說明 指令集說明 注由于資源大小問題其中以下幾款MCU 只有62 條指令其余均為63 條指令 HT48CA0/HT48RA0A 無RETI 指令 HT48R05A-1 無TABRDL 指令 指令尋址方式有下面5 種 .. 立即尋址 此一尋址法是將立即的常數值緊跟在運算碼 (opcode) 后例如 MOV A, 33H ADD A, 33H .. 直接尋址 直接尋址的情況只允許在存儲器之間作數據傳送例如 MOV [33H], A CLR [33H] .. 間接尋址 在間接尋址方式中必定要使用到間接尋址暫存器(R0 R1) 例如 MOV R0, A MOV A, R0 .. 特殊暫存器尋址 此一尋址方式完全是針對某一暫存器作運算例如 CLR WDT CLR WDT1 .. 指針尋址 指針尋址只適用在配合做查表指令例如 MOV A, 02H MOV TBLP, A HOLTEK 指令集說明 2 指令集摘要 助記符 說明 指令 周期 影響標志位 算術運算 ADD A, [m] 累加器與數據存儲器相加結果放入累加器 1 Z,C,AC,OV ADDM A, [m] 累加器與數據存儲器相加結果放入數據存儲器 11 Z,C,AC,OV ADD A, x 累加器與立即數相加結果放入累加器 1 Z,C,AC,OV ADC A, [m] 累加器與數據存儲器進位標志相加結果放入累加器 1 Z,C,AC,OV ADCM A, [m] 累加器與數據存儲器進位標志相加結果放入數據存儲器 1 1 Z,C,AC,OV SUB A, x 累加器與立即數相減結果放入累加器 1 Z,C,AC,OV SUB A, [m] 累加器與數據存儲器相減結果放入累加器 1 Z,C,AC,OV SUBM A, [m] 累加器與數據存儲器相減結果放入數據存儲器 11 Z,C,AC,OV SBC A, [m] 累加器與數據存儲器進位標志相減結果放入累加器 1 Z,C,AC,OV SBCM A, [m] 累加器與數據存儲器進位標志相減結果放入數據存儲器 1 1 Z,C,AC,OV DAA [m] 將加法運算后放入累加器的值調整為十進制數并將結果放 入數據存儲器 1 1 C 邏輯運算 AND A, [m] 累加器與數據存儲器做與運算結果放入累加器 1 Z OR A, [m] 累加器與數據存儲器做或運算結果放入累加器 1 Z XOR A, [m] 累加器與數據存儲器做異或運算結果放入累加器 1 Z ANDM A, [m] 累加器與數據存儲器做與運算結果放入數據存儲器 11 Z ORM A, [m] 累加器與數據存儲器做或運算結果放入數據存儲器 11 Z XORM A, [m] 累加器與數據存儲器做異或運算結果放入數據存儲器 1 1 Z AND A, x 累加器與立即數做與運算結果放入累加器 1 Z OR A, x 累加器與立即數做或運算結果放入累加器 1 Z XOR A, x 累加器與立即數做異或運算結果放入累加器 1 Z CPL [m] 對數據存儲器取反結果放入數據存儲器 11 Z CPLA [m] 對數據存儲器取反結果放入累加器 1 Z 遞增和遞減 INCA [m] 數據存儲器的內容加1 結果放入累加器 1 Z INC [m] 數據存儲器的內容加1 結果放入數據存儲器 11 Z DECA [m] 數據存儲器的內容減1 結果放入累加器 1 Z DEC [m] 數據存儲器的內容減1 結果放入數據存儲器 11 Z 移位 RRA [m] 數據存儲器右移一位結果放入累加器 1 無 RR [m] 數據存儲器右移一位結果放入數據存儲器 11 無 RRCA [m] 帶進位將數據存儲器右移一位結果放入累加器 1 C RRC [m] 帶進位將數據存儲器右移一位結果放入數據存儲器 11 C RLA [m] 數據存儲器左移一位結果放入累加器 1 無 RL [m] 數據存儲器左移一位結果放入數據存儲器 11 無 RLCA [m] 帶進位將數據存儲器左移一位結果放入累加器 1 C RLC [m] 帶進位將數據存儲器左移一位結果放入數據存儲器 11 C 數據傳送 MOV A, [m] 將數據存儲器送至累加器 1 無 MOV [m], A 將累加器送至數據存儲器 11 無 MOV A, x 將立即數送至累加器 1 無 位運算 CLR [m]. i 將數據存儲器的第i 位清0 11 無 SET [m]. i 將數據存儲器的第i 位置1 11 無 HOLTEK 指令集說明 3 助記符 說明 指令 周期 影響標志位 轉移 JMP addr 無條件跳轉 2 無 SZ [m] 如果數據存儲器為0 則跳過下一條指令 12 無 SZA [m] 數據存儲器送至累加器如果內容為0 則跳過下一條指 令 1 2 無 SZ [m]. i 如果數據存儲器的第i 位為0 則跳過下一條指令 12 無 SNZ [m]. i 如果數據存儲器的第i 位不為0 則跳過下一條指令 12 無 SIZ [m] 數據存儲器加1 如果結果為0 則跳過下一條指令 13 無 SDZ [m] 數據存儲器減1 如果結果為0 則跳過下一條指令 13 無 SIZA [m] 數據存儲器加1 將結果放入累加器如果結果為0 則跳 過下一條指令 1 2 無 SDZA [m] 數據存儲器減1 將結果放入累加器如果結果為0 則跳 過下一條指令 1 2 無 CALL addr 子程序調用 2 無 RET 從子程序返回 2 無 RET A, x 從子程序返回并將立即數放入累加器 2 無 RETI 從中斷返回 2 無 查表 TABRDC [m] 讀取當前頁的ROM 內容并送至數據存儲器和TBLH 2 1 無 TABRDL [m] 讀取最后頁的ROM 內容并送至數據存儲器和TBLH 2 1 無 其它指令 NOP 空指令 1 無 CLR [m] 清除數據存儲器 11 無 SET [m] 置位數據存儲器 11 無 CLR WDT 清除看門狗定時器 1 TO,PD CLR WDT1 預清除看門狗定時器 1 TO 4 ,PD 4 CLR WDT2 預清除看門狗定時器 1 TO 4 ,PD 4 SWAP [m] 交換數據存儲器的高低字節結果放入數據存儲器 11 無 SWAPA [m] 交換數據存儲器的高低字節結果放入累加器 1 無 HALT 進入暫停模式 1 TO,PD 注 x 立即數 m 數據存儲器地址 A 累加器ACC i 第0~7 位 addr 程序存儲器地址 影響標志位 不影響標志位 1 如果數據是加載到PCL 寄存器則指令執行周期會被延長一個指令周期四個系統時鐘 2 如果滿足跳躍條件則指令執行周期會被延長一個指令周期四個系統時鐘否則指令執行周期不會被延長 3 1 和2 4 如果執行CLW WDT1 或CLR WDT2 指令后看門狗定時器被清除則會影響TO 和PD 標志位否則不會影響 TO 和PD 標志位 HOLTEK 指令集說明 4 ADC A, [m] 累加器與數據存儲器進位標志相加結果放入累加器 說明 本指令把累加器數據存儲器值以及進位標志相加結果存放到累加器 運算過程 ACC..ACC+[m]+C 影響標志位 TC2 TC1 TO PD OV Z AC C ADCM A, [m] 累加器與數據存儲器進位標志相加結果放入數據存儲器 說明 本指令把累加器數據存儲器值以及進位標志相加結果存放到存儲器 運算過程 [m]..ACC+[m]+C 影響標志位 TC2 TC1 TO PD OV Z AC C ADD A, [m] 累加器與數據存儲器相加結果放入累加器 說明 本指令把累加器數據存儲器值相加結果存放到累加器 運算過程 ACC..ACC+[m] 影響標志位 TC2 TC1 TO PD OV Z AC C ADD A, x 累加器與立即數相加結果放入累加器 說明 本指令把累加器值和立即數相加結果存放到累加器 運算過程 ACC..ACC+X 影響標志位 TC2 TC1 TO PD OV Z AC C ADDM A, [m] 累加器與數據存儲器相加結果放入數據存儲器 說明 本指令把累加器數據存儲器值相加結果放到數據存儲器 運算過程 [m]..ACC+[m] 影響標志位 TC2 TC1 TO PD OV Z AC C AND A, [m] 累加器與數據存儲器做與運算結果放入累加器 說明 本指令把累加器值數據存儲器值做邏輯與結果存放到累加器 運算過程 ACC..ACC “AND” [m] 影響標志位 TC2 TC1 TO PD OV Z AC C HOLTEK 指令集說明 5 AND A, x 累加器與立即數做與運算結果放入累加器 說明 本指令把累加器值立即數做邏輯與結果存放到累加器 運算過程 ACC..ACC “AND” X 影響標志位 TC2 TC1 TO PD OV Z AC C ANDM A, [m] 累加器與數據存儲器做與運算結果放入數據存儲器 說明 本指令把累加器值數據存儲器值做邏輯與結果放到數據存儲器 運算過程 ACC..ACC “AND” [m] 影響標志位 TC2 TC1 TO PD OV Z AC C CALL addr 子程序調用 說明 本指令直接調用地址所在處的子程序此時程序計數器加一將此程序計數器值存到堆 棧寄存器中再將子程序所在處的地址存放到程序計數器中 運算過程 Stack..PC+1 PC .. addr 影響標志位 TC2 TC1 TO PD OV Z AC C CLR [m] 清除數據存儲器 說明 本指令將數據存儲器內的數值清零 運算過程 [m] ..00H 影響標志位 TC2 TC1 TO PD OV Z AC C CLR [m] . i 將數據存儲器的第i 位清0 說明 本指令將數據存儲器內第i 位值清零 運算過程 [m].i ..0 影響標志位 TC2 TC1 TO PD OV Z AC C CLR WDT 清除看門狗定時器 說明 本指令清除WDT 計數器從0 開始重新計數暫停標志位PD 和看門狗溢出標志 位TO 也被清零 運算過程 WDT .. 00H PD&TO .. 0 影響標志位 TC2 TC1 TO PD OV Z AC C 0 0 HOLTEK 指令集說明 6 CLR WDT1 預清除看門狗定時器 說明 必須搭配CLR WDT2 一起使用才可清除WDT 計時器從0 開始重新計數當程序 只執行過該指令沒有執行CLR WDT2 時系統只會不會將暫停標志位PD 和計數 溢出位TO 清零PD 與TO 保留原狀態不變 運算過程 WDT .. 00H* PD&TO .. 0* 影響標志位 TC2 TC1 TO PD OV Z AC C 0* 0* CLR WDT2 預清除看門狗定時器 說明 必須搭配CLR WDT1 一起使用才可清除WDT 計時器從0 開始重新計數當程序 只執行過該指令沒有執行CLR WDT1 時系統只會不會將暫停標志位PD 和計數 溢出位TO 清零PD 與TO 保留原狀態不變 運算過程 WDT .. 00H* PD&TO .. 0* 影響標志位 TC2 TC1 TO PD OV Z AC C 0* 0* CPL [m] 對數據存儲器取反結果放入數據存儲器 說明 本指令是將數據存儲器內保存的數值取反 運算過程 [m] .. [m ] 影響標志位 TC2 TC1 TO PD OV Z AC C CPLA [m] 對數據存儲器取反結果放入累加器 說明 本指令是將數據存儲器內保存的值取反后結果存放在累加器中 運算過程 ACC .. [m ] 影響標志位 TC2 TC1 TO PD OV Z AC C HOLTEK 指令集說明 7 DAA [m] 將加法運算后放入累加器的值調整為十進制數并將結果放入數據存儲器 說明 本指令將累加器高低四位分別調整為BCD 碼如果低四位的值大于9 或AC=1 那 么BCD 調整就執行對原值加6 并且內部進位標志AC1=AC 即AC 求反否則原 值保持不變如果高四位的值大于9 或C=1 那么BCD 調整就執行對原值加6 再加AC1 并把C 置位否則BCD 調整就執行對原值加AC1 C 的值保持不變結果 存放到數據存儲器中只有進位標志位C 受影響 操作 如果ACC.3~ACC.0 > 9 或AC=1 那么 [m].3~[m].0 .. ACC.3~ACC.0 +6 AC1= AC 否則 [m].3~[m].0 .. ACC.3~ACC.0 AC1=0 并且 如果ACC.7~ACC.4+AC1 > 9 或C=1 那么 [m].7~[m].4 .. ACC.7~ACC.4 +6+ AC1 C=1 否則 [m].7~[m].4 .. ACC.7~ACC.4 + AC1 C=C 影響標志位 TC2 TC1 TO PD OV Z AC C DEC [m] 數據存儲器的內容減1 結果放入數據存儲器 說明 本指令將數據存儲器內的數值減一再放回數據存儲器 運算過程 [m] .. [m]-1 影響標志位 TC2 TC1 TO PD OV Z AC C DECA [m] 數據存儲器的內容減1 結果放入累加器 說明 本指令將存儲器內的數值減一,再放到累加器 運算過程 ACC .. [m]-1 影響標志位 TC2 TC1 TO PD OV Z AC C HALT 進入暫停模式 說明 本指令終止程序執行并關掉系統時鐘RAM 和寄存器內的數值保持原狀態WDT 計數 器清0 暫停標志位PD 被設為1 WDT 計數溢出位TO 被清為0 運算過程 PC .. PC+1 PD .. 1 TO .. 0 影響標志位 TC2 TC1 TO PD OV Z AC C 0 1 HOLTEK 指令集說明 8 INC [m] 數據存儲器的內容加1 結果放入數據存儲器 說明 本指令將數據存儲器內的數值加一,結果放回數據存儲器 運算過程 [m] .. [m]+1 影響標志位 TC2 TC1 TO PD OV Z AC C INCA [m] 數據存儲器的內容加1 結果放入數據存儲器 說明 本指令是將存儲器內的數值加一,結果放到累加器 運算過程 ACC .. [m]+1 影響標志位 TC2 TC1 TO PD OV Z AC C JMP addr 無條件跳轉 說明 本指令是將要跳到的目的地直接放到程序計數器內 運算過程 PC .. addr 影響標志位 TC2 TC1 TO PD OV Z AC C MOV A, [m] 將數據存儲器送至累加器 說明 本指令是將數據存儲器內的數值送到累加器內 運算過程 ACC .. [m] 影響標志位 TC2 TC1 TO PD OV Z AC C MOV A, x 將立即數送至累加器 說明 本指令是將立即數送到累加器內 運算過程 ACC .. X 影響標志位 TC2 TC1 TO PD OV Z AC C MOV [m], A 將累加器送至數據存儲器 說明 本指令是將累加器值送到數據存儲器內 運算過程 [m] .. ACC 影響標志位 TC2 TC1 TO PD OV Z AC C HOLTEK 指令集說明 9 NOP 空指令 說明 本指令不作任何運算而只將程序計數器加一 運算過程 PC .. PC+1 影響標志位 TC2 TC1 TO PD OV Z AC C OR A, [m] 累加器與數據存儲器做或運算結果放入累加器 說明 本指令是把累加器數據存儲器值做邏輯或結果放到累加器 運算過程 ACC..ACC “OR” [m] 影響標志位 TC2 TC1 TO PD OV Z AC C OR A, x 累加器與立即數做或運算結果放入累加器 說明 本指令是把累加器值立即數做邏輯或結果放到累加器 運算過程 ACC..ACC “OR” X 影響標志位 TC2 TC1 TO PD OV Z AC C ORM A, [m] 累加器與數據存儲器做或運算結果放入數據存儲器 說明 本指令是把累加器值存儲器值做邏輯或結果放到數據存儲器 運算過程 ACC..ACC “OR” [m] 影響標志位 TC2 TC1 TO PD OV Z AC C RET 從子程序返回 說明 本指令是將堆棧寄存器中的程序計數器值送回程序計數器 運算過程 PC .. Stack 影響標志位 TC2 TC1 TO PD OV Z AC C RET A, x 從子程序返回并將立即數放入累加器 說明 本指令是將堆棧寄存器中的程序計數器值送回程序計數器并將立即數送回累加器 運算過程 PC .. Stack ACC .. X 影響標志位 TC2 TC1 TO PD OV Z AC C HOLTEK 指令集說明 10 RETI 從中斷返回 說明 本指令是將堆棧寄存器中的程序計數器值送回程序計數器與RET 不同的是它使用在 中斷程序結束返回時它還會將中斷控制寄存器INTC 的0 位EMI 中斷允許位置1 允許中斷服務 運算過程 PC .. Stack EMI .. 1 影響標志位 TC2 TC1 TO PD OV Z AC C RL [m] 數據存儲器左移一位結果放入數據存儲器 說明 本指令是將數據存儲器內的數值左移一位第7 位移到第0 位結果送回數據存儲器 運算過程 [m].0 ..[m].7, [m]. i+1 ..[m].i :i=0~6 影響標志位 TC2 TC1 TO PD OV Z AC C RLA [m] 數據存儲器左移一位結果放入累加器 說明 本指令是將存儲器內的數值左移一位第7 位移到第0 位結果送到累加器而數據存 儲器內的數值不變 運算過程 ACC.0 ..[m].7, ACC. i+1 ..[m].i :i=0~6 影響標志位 TC2 TC1 TO PD OV Z AC C RLC [m] 帶進位將數據存儲器左移一位結果放入數據存儲器 說明 本指令是將存儲器內的數值與進位位左移一位第7 位取代進位標志進位標志移到第 0 位結果送回數據存儲器 運算過程 [m]. i+1 ..[m].i :i=0~6 [m].0 ..C C .. [m].7 影響標志位 TC2 TC1 TO PD OV Z AC C RLCA [m] 帶進位將數據存儲器左移一位結果放入累加器 說明 本指令是將存儲器內的數值與進位位左移一位第七位取代進位標志進位標志移到第 0 位結果送回累加器 運算過程 ACC. i+1 ..[m].i :i=0~6 ACC.0 ..C C .. [m].7 影響標志位 TC2 TC1 TO PD OV Z AC C HOLTEK 指令集說明 11 RR [m] 數據存儲器右移一位結果放入數據存儲器 說明 本指令是將存儲器內的數值循環右移第0 位移到第7 位結果送回數據存儲器 運算過程 [m].7 ..[m].0, [m].i ..[m]. i+1 : i=0~6 影響標志位 TC2 TC1 TO PD OV Z AC C RRA [m] 數據存儲器右移一位結果放入累加器 說明 本指令是將數據存儲器內的數值循環右移第0 位移到第7 位結果送回累加器而數 據存儲器內的數值不變 運算過程 ACC.7 ..[m].0, ACC.i ..[m]. i+1 :i=0~6 影響標志位 TC2 TC1 TO PD OV Z AC C RRC [m] 帶進位將數據存儲器右移一位結果放入數據存儲器 說明 本指令是將存儲器內的數值加進位位循環右移第0 位取代進位標志進位標志移到第 7 位結果送回存儲器 運算過程 [m].i ..[m]. i+1 :i=0~6 [m]. 7 ..C C .. [m].0 影響標志位 TC2 TC1 TO PD OV Z AC C RRCA [m] 帶進位將數據存儲器右移一位結果放入累加器 說明 本指令是將數據存儲器內的數值加進位位循環右移第0 位取代進位標志進位標志移 到第7 位結果送回累加器數據存儲器內的數值不變 運算過程 ACC.i ..[m]. i+1 i=0~6 ACC.7 ..C C .. [m].0 影響標志位 TC2 TC1 TO PD OV Z AC C SBC A,[m] 累加器與數據存儲器進位標志相減結果放入累加器 說明 本指令是把累加器值減去數據存儲器值以及進位標志的取反結果放到累加器 運算過程 ACC..ACC+[m ]+ C 影響標志位 TC2 TC1 TO PD OV Z AC C HOLTEK 指令集說明 12 SBCM A,[m] 累加器與數據存儲器進位標志相減結果放入數據存儲器 說明 本指令是把累加器值減去數據存儲器值以及進位標志取反結果放到數據存儲器 運算過程 [m]..ACC+[m]+C 影響標志位 TC2 TC1 TO PD OV Z AC C SDZ [m] 數據存儲器減1 如果結果為0 則跳過下一條指令 說明 本指令是把數據存儲器內的數值減1 判斷是否為0 若為0 則跳過下一條指令即如 果結果為零放棄在目前指令執行期間所取得的下一條指令并插入一個空周期用以取 得正確的指令二個指令周期否則執行下一條指令一個指令周期 運算過程 如果[m]-1=0 跳過下一條指令執行再下一條 影響標志位 TC2 TC1 TO PD OV Z AC C SDZA [m] 數據存儲器減1 將結果放入累加器如果結果為0 則跳過下一條指令 說明 本指令是把數據存儲器內的數值減1 判斷是否為0, 為0 則跳過下一行指令并將減完后 數據存儲器內的數值送到累加器,而數據存儲器內的值不變即若結果為0 放棄在目前 指令執行期間所取得的下一條指令并插入一個空周期用以取得正確的指令二個指令 周期否則執行下一條指令一個指令周期 運算過程 如果[m]-1=0 跳過下一條指令執行再下一條 ACC .. [m]-1 影響標志位 TC2 TC1 TO PD OV Z AC C SET [m] 置位數據存儲器 說明 本指令是把存儲器內的數值每個位置為1 運算過程 [m] .. FFH 影響標志位 TC2 TC1 TO PD OV Z AC C SET [m]. i 將數據存儲器的第i 位置1 說明 本指令是把存儲器內的數值的第i 位置為1 運算過程 [m].i ..1 影響標志位 TC2 TC1 TO PD OV Z AC C HOLTEK 指令集說明 13 SIZ [m] 數據存儲器加1 如果結果為0 則跳過下一條指令 說明 本指令是把數據存儲器內的數值加1 判斷是否為0 若為0 跳過下一條指令即放棄 在目前指令執行期間所取得的下一條指令并插入一個空周期用以取得正確的指令二 個指令周期否則執行下一條指令一個指令周期 運算過程 如果 [m]+1=0 跳過下一行指令[m] ..[m]+1 影響標志位 TC2 TC1 TO PD OV Z AC C SIZA 數據存儲器加1 將結果放入累加器如果結果為0 則跳過下一條指令 說明 本指令是把數據存儲器內的數值加1 判斷是否為0, 若為0 跳過下一條指令即放棄在 目前指令執行期間所取得的下一條指令并插入一個空周期用以取得正確的指令二個 指令周期并將加完后存儲器內的數值送到累加器而數據存儲器的值保持不變否 則執行下一條指令一個指令周期 運算過程 如果[m]+1=0 跳過下一行指令ACC .. [m]+1 影響標志位 TC2 TC1 TO PD OV Z AC C SNZ [m]. i 如果數據存儲器的第i 位不為0 則跳過下一條指令 說明 本指令是判斷數據存儲器內的數值的第i 位, 若不為0 則程序計數器再加1, 跳過下一 行指令放棄在目前指令執行期間所取得的下一條指令并插入一個空周期用以取得正 確的指令二個指令周期否則執行下一條指令一個指令周期 運算過程 如果 [m].i≠0 跳過下一行指令 影響標志位 TC2 TC1 TO PD OV Z AC C SUB A, [m] 累加器與數據存儲器相減結果放入累加器 說明 本指令是把累加器值數據存儲器值相減結果放到累加器 運算過程 ACC..ACC+[m ]+1 影響標志位 TC2 TC1 TO PD OV Z AC C SUB A, x 累加器與立即數相減結果放入累加器 說明 本指令是把累加器值立即數相減結果放到累加器 運算過程 ACC..ACC+ X +1 影響標志位 TC2 TC1 TO PD OV Z AC C HOLTEK 指令集說明 14 SUBM A, [m] 累加器與數據存儲器相減結果放入數據存儲器 說明 本指令是把累加器值存儲器值相減結果放到存儲器 運算過程 [m]..ACC+[m ]+1 影響標志位 TC2 TC1 TO PD OV Z AC C SWAP [m] 交換數據存儲器的高低字節結果放入數據存儲器 說明 本指令是將數據存儲器的低四位和高四位互換,再將結果送回數據存儲器 運算過程 [m].7~[m].4<-V1 . [m].3~[m].0 影響標志位 TC2 TC1 TO PD OV Z AC C SWAPA [m] 交換數據存儲器的高低字節結果放入累加器 說明 本指令是將數據存儲器的低四位和高四位互換再將結果送回累加器 運算過程 ACC.3~ACC.0.. [m].7~[m].4 ACC.7~ACC.4.. [m].3~[m].0 影響標志位 TC2 TC1 TO PD OV Z AC C SZ [m] 如果數據存儲器為0 則跳過下一條指令 說明 本指令是判斷數據存儲器內的數值是否為0 為0 則跳過下一行指令即放棄在目前指 令執行期間所取得的下一條指令并插入一個空周期用以得正確的指令二個指令周 期否則執行下一條指令一個指令周期 運算過程 如果 [m] = 0, 跳過下一行指令 影響標志位 TC2 TC1 TO PD OV Z AC C SZA [m] 數據存儲器送至累加器如果內容為0 則跳過下一條指令 說明 本指令是判斷存儲器內的數值是否為0 若為0 則跳過下一行指令即放棄在目前指令 執行期間所取得的下一條指令并插入一個空周期用以得正確的指令二個指令周期 并把存儲器內值送到累加器而存儲器的值保持不變否則執行下一條指令一個指令 周期 運算過程 如果[m] = 0 跳過下一行指令并ACC.. [m] 影響標志位 TC2 TC1 TO PD OV Z AC C HOLTEK 指令集說明 15 SZ [m]. i 如果數據存儲器的第i 位為0 則跳過下一條指令 說明 本指令是判斷存儲器內第i 位值是否為0 若為0 則跳過下一行指令即放棄在目前指 令執行期間所取得的下一條指令并插入一個空周期用以得正確的指令二個指令周 期否則執行下一條指令一個指令周期 運算過程 如果 [m].i = 0 跳過下一行指令 影響標志位 TC2 TC1 TO PD OV Z AC C TABRDC [m] 讀取ROM 當前頁的內容并送至數據存儲器和TBLH 說明 本指令是將表格指針指向程序寄存器當前頁將低位送到存儲器高位直接送到TBLH 寄存器內 運算過程 [m] ..程序存儲器低四位 TBLH..程序存儲器高四位 影響標志位 TC2 TC1 TO PD OV Z AC C TABRDL [m] 讀取ROM 最后一頁的內容并送至數據存儲器和TBLH 說明 本指令是將TABLE 指針指向程序寄存器最后頁將低位送到存儲器高位直接送到 TBLH 寄存器內 運算過程 [m] ..程序存儲器低四位 TBLH..程序存儲器高四位 影響標志位 TC2 TC1 TO PD OV Z AC C XOR A, [m] 累加器與立即數做異或運算結果放入累加器 說明 本指令是把累加器值 數據存儲器值做邏輯異或結果放到累加器 運算過程 ACC..ACC “XOR” [m] 影響標志位 TC2 TC1 TO PD OV Z AC C XORM A, [m] 累加器與數據存儲器做異或運算結果放入數據存儲器 說明 本指令是把累加器值數據存儲器值做邏輯異或結果放到數據存儲器 運算過程 [m]..ACC “XOR” [m] 影響標志位 TC2 TC1 TO PD OV Z AC C XOR A, x 累加器與數據存儲器做異或運算結果放入累加器 說明 本指令是把累加器值與立即數做邏輯異或結果放到累加器 運算過程 ACC..ACC “XOR” X 影響標志位 TC2 TC1 TO PD OV Z AC C |