一、加减算术电路外挂方案
  (一)加减电路的特征
  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
 返回上页
 返回首页