音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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 欄目:單片機
請教DX,雙字節(jié)運算減法例程中,若結(jié)果為負從哪里可以反應(yīng)出來.
首先預(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
你的例程如果抄得準確的話,STATUS可以反應(yīng)所有狀況
16位的加減例程結(jié)果可以影響STATUS的狀態(tài)位,就像是單字節(jié)運算一樣,不信你軟仿真試試.要不就不用那么麻煩了.

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
LAT寄存器怎么用?
icd2連接成功,但是在program時卻沒有任何效果,這是為什么呢?
PIC讀寫問題
煩請推薦幾款性價比較高的大容量FLASH的PIC單片機
有哪位DX總結(jié)一下PIC系統(tǒng)的,哪些型號內(nèi)部的EEPROM是
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號