程序如下: DIV_DOUBLE: LDP #DP_B01 CLRC SXM LACL CHUSHU ;CHUSHU=除数 SUB #0 BCND ERROR_RESULT,EQ LDP #DP_B01 LACC GAO,16 ;GAO =被除数的高十六位 ADDS DI ;DI =被除数的低十六位 SACH GAP SACL DI LACC CHUSHU,16 SACH BUFFER ;临时寄存器 LACL GAO RPT #15 SUBC BUFFER SACL GAO XOR GAO OR DI RPT #15 SUBC BUFFER SACH BUFFER SACL SHANG ;SHANG = 商 B DIV_END ERROR_RESULT: LDP #DP_B01 SPLK #0,SHANG DIV_END: NOP RET 这段小程序貌似实现两数相除的功能,但是我看不懂它的编程原理,请大侠指教.
|