二、乘除倒數算術電路外掛方案
乘法運算與倒數運算共用一個電路,除法運算是先對除數進行倒數運算,之後再用被除數與倒數進行乘法運算。
(一)電路特征
1、電路共用。乘法、除數、倒數運算共用一個電路。
2、輸入端口共用。有A、B兩個輸入端口,倒數運算、乘法運算、除法運算共用這兩個輸入端口。
3、輸出端口各自獨立。乘法運算的輸出端口由高16位與低16位兩個輸出端口組成。除法運算的輸出端口由一個16位整數與一個16位小數兩個輸出端口組成。倒數運算的輸出端口由一個16位整數輸出端口,一個16位除數標志位輸出端口,一個用16位小數表達的倒數運算結果輸出端口,共三個端口組成。其中,倒數運算的16位整數輸出端口與16位除數標志位輸出端口,用於再次做除法運算時與被除數相乘。
4、由於運算電路共用與輸入端口共用,每次運算只能選用一種算術模式。
(二)外掛到CPU上的方式
1、乘法、除法、倒數電路有A、B兩個輸入端口。A輸入端口掛接到兩個16位寄存器上,第一個寄存器存放16位數據,第二個寄存器存放除數標志位。B輸入端口掛接到兩個16位的寄存器上,第一個寄存器存放16位整數,第二個寄存器存放16位小數。倒數運算分為整數的倒數運算與帶小數的倒數運算。進行整數的倒數運算時,使用B端口掛接的第一個寄存器。進行帶小數的倒數運算時,使用B端口掛接的兩個寄存器。進行乘法運算時,使用A端口掛接的第一個寄存器與B端口掛接的第一個寄存器。進行除法運算時,先對除數進行倒數運算,倒數運算的整數輸出端口的數據送入A端口掛接的第一個寄存器中,倒數運算的除數標志位輸出端口的數據送入A端口的第二個寄存器中,被除數送入B端口掛接的第一個寄存器中。
2、乘法、除法、倒數電路有三個輸出端口。乘法運算的輸出端口掛接到兩個16位寄存器上,一個寄存器存放高16位數據,另一個寄存器存放低16位數據,兩個寄存器表達一個32位的整數數據。除法運算的輸出端口掛接到兩個16位寄存器上,一個寄存器存放整數,另一個寄存器存放小數。倒數運算的輸出端口掛接到三個寄存器上,第一個寄存器存放整數,第二個寄存器存放除數標志位數據,第三個寄存器存放倒數的運算結果。其中,為了保障除法運算輸出結果有32位精度,進行除法運算必須使用倒數運算的整數輸出結果與除數標志位輸出結果。
3、電路有三個模式控制位,第一個是乘法模式控制位,第二個是整數的倒數模式控制位,第三個是帶小數的倒數模式控制位。整數的倒數模式控制位掛接到寄存器的第5位上,帶小數的倒數模式控制位掛接到寄存器的第6位上,乘法模式控制位掛接到寄存器的第7位上。當寄存器的某一個模式位為1時,即選擇該模式運算。三種算術模式控制位每次只能選擇一個模式控制位。
(三)電路所用的元件數量與電路級數
乘法、倒數、除法共用電路共需基本邏輯元件2506個,隔離元件555個。
在乘法電路中,從數據全部到達電路的輸入端口開始,到運算結果全部到達電路的輸出端口,電路總級數為98級。
在倒數電路中,從數據到達電路的輸入端口開始,到運算結果全部到達電路的輸出端口,電路總級數為67級。
(四)編程舉例
1、簡單掛接的編程例
設:模式寄存器為P,A操作數的數據寄存器為A10,除法標志位寄存器為A11;B操作數的整數寄存器為B1,B操作數的小數寄存器為B2。倒數運算的結果數據寄存器為J30,除法標志位寄存器為J31,用16位小數表達的倒數結果數據寄存器為J32;乘法運算的結果寄存器高16位為J40,低16位為J41;除法運算結果的整數寄存器為J50,小數寄存器為J51。
設:R1、R2內存有16位整數,R3內存有16位小數。
(1)R1*R2的編程:
mov P,#10000000B ;選擇乘法運算
mov A10,R1
mov B10,R2
mov R3,J40 ;乘法結果的高16位存入R3
mov R4,J41 ;乘法結果的低16位存入R4
(2)R2進行倒數運算編程:
mov P,#100000B ;選擇整數的倒數運算
mov B10,R2
mov R4,J32 ;倒數運算結果存入R4
(3)R1/R2的運算編程:
mov P,#100000B ;選擇整數的倒數運算
mov B10,R2
mov A10,J30 ;倒數運算結果的整數部分送入A操作數的數據寄存器
mov A11,J31 ;除法標志位送入A操作數的除法標志位寄存器
mov P,#10000000B ;選擇乘法運算
mov B10,R1 ;被除數送入B1寄存器
mov R4,J50 ;除法結果的整數部分存入R4
mov R5,J51 ;除法結果的小數部分存入R5
(4)R2、R3進行倒數運算編程:
mov P,#1000000B ;選擇帶小數的倒數運算
mov B10,R2
mov B11,R3
mov R4,J32 ;倒數運算結果存入R4
(5)R1/(R2,R3)的運算編程:
mov P,#100000B ;選擇帶小數的倒數運算
mov B10,R2
mov B11,R3
mov A10,J30 ;倒數運算結果的整數部分送入A操作數的數據寄存器
mov A11,J31 ;除法標志位送入A操作數的除法標志位寄存器
mov P,#10000000B ;選擇乘法運算
mov B10,R1 ;被除數送入B1寄存器
mov R4,J50 ;除法結果的整數部分存入R4
mov R5,J51 ;除法結果的小數部分存入R5
說明:進行除法運算時,倒數運算的結果要先送入A端口的兩個寄存器中,然後再把倒數運算模式切換到乘法運算模式。這是因為共用電路進行倒數運算時,A端口寄存器中的數據對倒數運算不產生影響。
2、全管理掛接的編程例
全管理掛接把運算結果存放到任意指定的地址或寄存器中。
設:兩個16位寄存器R1、R2內存有數據。DAO為倒數指令。
MUC R4,R5,R1,R2 ;R1*R2 R4、R5寄存器,兩個寄存器共32位
DIV R4,R5,R1,R2 ;R1/R2 R4、R5寄存器,一個存整數,另一個存小數
DAO R4,R5,R2 ;1/R2 R4、R5寄存器
DIV R4,R5,R1,R2,R# ;R1/(R2,R3) R4、R5寄存器,一個存整數,另一個存小數
DAO R4,R5,R2,R4 ;1/(R2,R3) R3、R4寄存器