|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教DX,雙字節(jié)運算減法例程中,若結(jié)果為負從哪里可以反應(yīng)出來. |
| 作者:Knight8 欄目:單片機 |
首先預(yù)祝各位在新的一年里萬事順意! 請教DX,雙字節(jié)運算減法例程中,若結(jié)果為負從哪里可以反應(yīng)出來. 下面是從網(wǎng)上找到的資料并整理了一下,驗證通過.但是就是不知道做減法運算時,若結(jié)果為負,如何標示。 請有經(jīng)驗的大師們給點提示。萬分感謝! ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ; 四則運算子程序 ; 16×16位定點數(shù)加、減法子程序 ;以下子程序?qū)崿F(xiàn)2個16×16位有符號數(shù)加、減運算,其和或差用一個16位數(shù)表示。 ;在子程序中,減法是通過對減數(shù)求補后再與被減數(shù)相加來實現(xiàn)的。 ;因此,當程序從D_sub進入子程序時為減法,當從D_add進入子程序時為加法。 ;子程序的入口條件和出口條件如下: ;入口條件: 16位被加數(shù)/被減數(shù)存放在ACCBHI、ACCBLO中; ; 16位加數(shù)/減數(shù)存放在ACCAHI、ACCALO中; ;出口條件:16位和/差存放在ACCBHI和ACCBLO中。 ;以下為16×16位有符號數(shù)加、減法子程序。 ;注意:在以下注釋程序中均以ACCA代替ACCAHI、ACCALO兩個字節(jié),以ACCB代替ACCBHI、ACCBLO兩個字節(jié)。 LIST p=16F877 INCLUDE p16F877.inc ACCALO EQU 20 ;存放加數(shù)或減數(shù)低8位 ACCAHI EQU 21 ;存放加數(shù)或減數(shù)高8位 ACCBLO EQU 23 ;存放被加數(shù)或被減數(shù)低8位 ACCBHI EQU 24 ;存放被加數(shù)或被減數(shù)高8位 ORG 0X0000 START GOTO MAIN ;***雙字節(jié)減法子程序,入口地址ACCB-ACCA,出口地址ACCB*** D_sub CALL NEG_A ;求ACCA的補碼 ;***雙字節(jié)加法子程序,入口地址ACCB+ACCA,出口地址ACCB*** D_add MOVF ACCALO,0 ;ACCB和ACCA低半字節(jié)相加 ADDWF ACCBLO BTFSC STATUS,C ;有進位否? INCF ACCBHI ;有,ACCB高字節(jié)加1,再加ACCAHI MOVF ACCAHI,0 ;ACCA、ACCB高半字節(jié)相加 ADDWF ACCBHI RETURN ;子程序返回 ;************** ACCA取補子程序***************** NEG_A COMF ACCALO ;ACCALO取反加1 INCF ACCALO BTFSC STATUS,Z ;低8位有進位嗎? DECF ACCAHI ;有,ACCAHI減1,再取反 COMF ACCAHI ;否則ACCAHI直接取反 RETURN ;子程序返回 ;【校驗舉例1減運算】 ; 19531+(-16594)=2937(十進制)化為十六進制數(shù):4C46H+BF2EH ; 結(jié)果:0B79H(十六進制) ;【校驗舉例2加運算】 ; 26222+3000=29222(十進制)化為十六進制數(shù): 666EH+0BB8H ; 結(jié)果:7226H(十六進制) ;【例程】 ;注意:程序從D_sub進入子程序時為減法,當從D_add進入子程序時為加法。 MAIN MOVLW 0X6E ;被加數(shù)666EH送ACCB MOVWF ACCBLO MOVLW 0X66 MOVWF ACCBHI MOVLW 0XB8 ;加數(shù)BB8H送ACCA MOVWF ACCALO MOVLW 0X0B MOVWF ACCAHI CALL D_add ;調(diào)用雙字節(jié)加法子程序,求和 END |
| 2樓: | >>參與討論 |
| 作者: xieyuanbin 于 2005/1/3 16:17:00 發(fā)布:
你的例程如果抄得準確的話,STATUS可以反應(yīng)所有狀況 16位的加減例程結(jié)果可以影響STATUS的狀態(tài)位,就像是單字節(jié)運算一樣,不信你軟仿真試試.要不就不用那么麻煩了. |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |