欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 雙字節二進制無符號數除法的疑問 [打印本頁]

作者: 新鄉家電維修    時間: 2026-2-26 18:13
標題: 雙字節二進制無符號數除法的疑問
入口條件:被除數在R2、R3、R4、R5中,除數在R6、R7中。
出口信息:OV=0 時,雙字節商在R2、R3中,OV=1 時溢出。
影響資源:PSW、A、B、R1~R7 堆棧需求: 2字節

DIVD: CLR C ;比較被除數和除數
        MOV A,R3
        SUBB A,R7
        MOV A,R2
        SUBB A,R6
        JC DVD1
        SETB OV ;溢出
        RET
DVD1: MOV B,#10H ;計算雙字節商
DVD2: CLR C ;部分商和余數同時左移一位
        MOV A,R5
        RLC A
        MOV R5,A
        MOV A,R4
        RLC A
        MOV R4,A
        MOV A,R3
        RLC A
        MOV R3,A
        XCH A,R2
        RLC A
        XCH A,R2
        MOV F0,C ;保存溢出位
        CLR C
        SUBB A,R7 ;計算(R2R3-R6R7)
        MOV R1,A
        MOV A,R2
        SUBB A,R6
        ANL C,/F0 ;結果判斷
        JC DVD3
        MOV R2,A ;夠減,存放新的余數
        MOV A,R1
        MOV R3,A
        INC R5 ;商的低位置一
DVD3: DJNZ B,DVD2 ;計算完十六位商(R4R5)
        MOV A,R4 ;將商移到R2R3中
        MOV R2,A
        MOV A,R5
        MOV R3,A
        CLR OV ;設立成功標志
        RET
被除數這里是4位,為啥只比較R2/R3的值,和除數
4位被除數哪個是低位,如果只有兩位被除數咋辦,R4R5是低位嗎?


作者: 新鄉家電維修    時間: 2026-2-26 21:01
最后采用單片機自帶的硬件除法器計算,只保留整數
;用硬件16位除法器計算16位/16位
        MOV  P_SW2,#80h
        MOV  A,#2fh;被除數裝入2f99H
        MOV  DPTR,#MD1
        MOVX @DPTR,A
        MOV  A,#99H;
        MOV  DPTR,#MD0
        MOVX @DPTR,A

        MOV  A,ADC_RES;除數裝入
        MOV  DPTR,#MD5
        MOVX @DPTR,A
        MOV  A,ADC_RESL;
        MOV  DPTR,#MD4
        MOVX @DPTR,A

        MOV  A,#10100000B;16/16模式
        MOV  DPTR,#ARCON
        MOVX @DPTR,A
        MOV  A,#00000001B;開始計算
        MOV  DPTR,#OPCON
        MOVX @DPTR,A
TTT:
        MOV  DPTR,#OPCON
        MOVX A,@DPTR
        ANL A,#01H
        JNZ TTT         ;不為0轉移,查詢

        MOV  DPTR,#MD1
        MOVX A,@DPTR
        MOV 35H,A
        MOV  DPTR,#MD0
        MOVX A,@DPTR
        MOV 34H,A
        MOV  P_SW2,#00h


        MOV A,35H;解壓成BCD碼供顯示驗證
        SWAP A
        ANL A,#0FH
        MOV 33H,A
        MOV A,35H
        ANL A,#0FH
        MOV 32H,A

        MOV A,34H
        SWAP A
        ANL A,#0FH
        MOV 31H,A
        MOV A,34H
        ANL A,#0FH
        MOV 30H,A

        RET


結果正確,那就這樣吧,該帖結束!


作者: Hephaestus    時間: 2026-2-27 07:41
比較被除數的高位和除數就行了,很明顯MSB是R2最高位,LSB是R5最低位。
作者: coody_sz    時間: 2026-2-27 14:45
剛開始的數據比較是錯誤的。
應該是先判斷除數非0,然后做移位減。
作者: 新鄉家電維修    時間: 2026-3-2 18:44
coody_sz 發表于 2026-2-27 14:45
剛開始的數據比較是錯誤的。
應該是先判斷除數非0,然后做移位減。

我感覺也有問題,開始比較啥,只要不是0就行了唄,
假如被除數沒有除數大,結果都是余數不就行了
另外這程序比較被除數最高兩位,,明顯漏洞,如果被除數只有2字節呢
作者: Y_G_G    時間: 2026-3-2 22:18
我2018年就來到這個論壇了,那時候我還是用了幾年的匯編,很慶幸,2020年開始放棄匯編轉C了,用了C才后悔沒有早點放棄匯編
個人感覺,匯編,特別是8051這種匯編,能看明白就行了,還得是C呀
作者: 人中狼    時間: 2026-3-3 08:38
代碼注釋已經寫得很清楚了,R2、R3是被除數,R4、R5是商,從比較被除數和除數大小也可以看出R2是高位




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1