一、加减算术电路外挂方案
(一)加减电路的特征
1、电路共用。由加法、减法算术电路与接口电路组成的加减运算共用电路,能够进行有符号整数加法、有符号整数减法、无符号整数加法、无符号整数减法四种模式的算术运算。
2、端口共用。四种模式的算术运算输入操作数端口共用,有符号加法与无符号加法的输出端口共用,有符号减法与无符号减法的输出端口共用。
3、由于电路共用、端口共用,每次运算只能选用一种算术模式。
(二)加减电路的外挂方式
1、加减电路有两个操作数输入端口,每个输入端口挂接到两个寄存器上,一个是16位的数据寄存器,另一个是标志寄存器。
2、加减电路有两个运算结果输出端口,每个输出端口挂接到两个寄存器上,一个是16位的运算结果数据寄存器,另一个是标志寄存器。标志寄存器有进位标志、负符号标志、A操作数大于B操作数标志,B操作数大于A操作数标志,运算结果0标志。
在标志寄存器中,有进位时,进位位标志置1;无进位时,进位标志清0;运算结果为负时,负符号标志置1;运算结果为正时,负符号标志清0;A操作数的绝对值大于B操作数的绝对值时,A操作数大于B操作数的标志位置1;B操作数的绝对值大于A操作数的绝对值时,B操作数大于A操作数的标志位置1;运算结果大于0时,运算结果0标志位置1;运算结果等于0时,运算结果0标志位清0。
在进行加减连续运算时,当运算结果标志寄存器中的数据送入输入端的标志寄存器中时,运算电路只取用标志寄存器中的符号位标志,其他标志位不参与运算。
3、加减电路有一个模式控制端口,模式控制端口挂接到寄存器上,寄存器的第0位为有符号加法模式,第1位为有符号减法模式,第2位为无符号加法模式,第3位为无符号减法模式。当寄存器的某一个模式位为1时,即选择该模式运算。四种算术模式选择位每次只能选择一个模式位。
(三)加减电路所用的元件数量与电路级数
以与门、或门、非门三种逻辑元件为基本逻辑元件,加减电路共需基本逻辑元件380个,隔离元件69个,有源隔离元件16个。
在四种模式的加减算术电路中,从数据全部到达电路的输入端口开始,到运算结果全部到达电路的输出端口,电路总级数为46级。
(四)加减编程举例
1、简单挂接的编程例
设:模式寄存器为P,A操作数的数据寄存器为A10,标志寄存器为A11,B操作数的数据寄存器为B10,标志寄存器为B11,加法结果数据寄存器为J10,加法标志寄存器为J11,减法结果数据寄存器为J20,标志寄存器为J21。
设R0,R1,R2,R3,R4,R5,R6,R7寄存器中存有数据,进行R0+R1+R2-R3-R4-R5+R6+R7运算,并假设每次运算结果的进位位都为0,有:
mov P,#100B ;选择无符号加法
mov A10,R0
mov B10,R1
mov R8,J10 ;运算结果存入R8
mov A10,R8 ;再次进行无符号加运算
mov B10,R2
mov R8,J10 ;运算结果存入R8
mov P,#1000B ;选择无符号减法
mov A10,R8
mov B10,R3
mov R8,J20 ;运算结果存入R8
mov R9,J21 ;标志结果存入R9
mov P,#10B ;选择有符号减法
mov A11,R9
mov B11,#0
mov A10,R8
mov B10,R4
mov R8,J20 ;运算结果存入R8
mov R9,J21 ;标志结果存入R9
mov A11,R9 ;再次进行有符号减法
mov B11,#0
mov A10,R8
mov B10,R5
mov R8,J20 ;运算结果存入R8
mov R9,J21 ;标志结果存入R9
mov P,#1B ;选择有符号加法
mov A11,R9
mov B11,#0
mov A10,R8
mov B10,R6
mov R8,J10 ;运算结果存入R8
mov R9,J11 ;标志结果存入R9
mov A11,R9 ;再次进行有符号加法
mov B11,#0
mov A10,R8
mov B10,R7
mov R8,J20 ;运算结果存入R8
mov R9,J21 ;标志结果存入R9
2、全管理挂接的编程例
全管理挂接的指令可以有两种方式。方式一是把运算结果存放到第一个输入端口的寄存器中,方式二是把运算结果存放到任意指定的地址或寄存器中。
(1)运算结果存放到输入端口的第一个操作数寄存器中
对R0+R1+R2-R3-R4-R5+R6+R7的运算进行编程如下:
MOV A10,R0 ;R0 A10
ADDC_N A10,R1 ;A10+R1 A10
ADDC_N A10,R2 ;A10+R2 A10:
MOV A11,#0 ;#0 A11
SUB_N A11,A10,R3 ;A10-R3 A10,A11
SUB_Y A11,A10,#0,R4 ;A10-R4 A10,A11
SUB_Y A11,A10,#0,R5 ;A10-R5 A10,A11
ADDC_Y A11,A10,#0,R6 ;A10+R6 A10,A11
ADDC_Y A11,A10,#0,R7 ;A10+R7 A10,A11
(2)运算结果存放到任意指定的地址或寄存器
对R0+R1+R2-R3-R4-R5+R6+R7的运算进行编程如下:
ADDC_N &R10,R0,R1 ;R0+R1 R10
ADDC_N #100H,R10,R2 ;R10+R2 #100H
SUB_N &R8,&R9,(100H),R3 ;(100H)-R3 R8,R9
SUB_Y &R10,&R11,R8,R9,#0,R4 ;R9-R4 R10,R11
SUB_Y &R8,&R9,R10,R11,#0,R5 ;R11-R5 R8,R9
ADDC_Y &R10,&R11,R8,R9,#0,R6 ;R9+R6 R10,R11
ADDC_Y &R8,&R9,R10,R11,#0,R7 ;R11+R7 R8,R9