Patent Publication Number: US-5423052-A

Title: Central processing unit with switchable carry and borrow flag

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to an operation system of a central processing unit provided in a microcomputer or microprocessor. 
     2. Description of the Prior Art 
     FIG. 7 is a block diagram showing an arrangement of a microcomputer based on a conventional operation system. In FIG. 7, numeral 11 designates a central processing unit (which will be referred hereinafter to as a CPU) and 12 denotes a memory. The CPU 11 comprises a data latch circuit 5 for latching data for an operation from the memory 12, an arithmetic register 4 for storing data for operations and operation (calculation) results, a carry and borrow flag 2 for storing a carry indicative of the operation result to be stored in the arithmetic register 4 exceeding a predetermined number of bits and further for storing a borrow indicative of a digit (figure) borrow when the content of the data latch circuit 5 cannot be subtracted from the content of the arithmetic register 4, and an arithmetic and logic unit (which will be referred hereinafter to as an ALU) 3 for performing operations on the basis of the contents of the data latch circuit 5, the contents of the arithmetic register 4 and the contents of the carry and borrow flag 2 to store the operation results in the arithmetic register 4 and the carry and borrow flag 2. The CPU 11 performs the operations in accordance with programs written in the memory 12. The memory 12 comprises a ROM 12b for storing data and programs and a RAM 12a for temporarily storing data necessary for operations. Here, although the programs can be written in either the read-only ROM 12b or the readable and writable RAM 12a, it is general to write them in the ROM 12b. Accordingly, the following description will be made as the programs are written in the ROM 12b. 
     Secondly, the operation of the operation system will be described hereinbelow with reference to FIG. 7. The CPU 11 operates in accordance with a program written in the ROM 12b of the memory 12. In response to the CPU 11 reading operation codes on the program, the operation codes read are inputted to a control unit, not shown, of the CPU 11 and the control unit operates the CPU 11 in accordance with a procedure determined by the respective operation codes. 
     FIG. 8 is an illustration for describing an ADC instruction. The ADC instruction is an instruction for adding together the content of the arithmetic register 4, the content of the memory 12 and the content of the carry and borrow flag 2. Here, the content of the memory 12 means data stated as operands on a program within the memory 12, data written in the ROM 12b or data temporarily stored in the RAM 12a. The content &#34;1&#34; of the carry and borrow flag 2 before the operation indicates that the operation data takes a carry from a lower-order position, i.e., takes a figure up one place, and the content &#34;0&#34; of the carry and borrow flag 2 before the operation indicates that the operation data does not take the carry from the lower-order position. The calculation result is stored in the arithmetic register 4. In the case that the calculation result exceeds the number of bits of the arithmetic register 4, the content of the carry and borrow flag 2 becomes &#34;1&#34; at the time of the completion of the operation. On the other hand, in the case that the calculation result is below the number of bits of the arithmetic register 4, the content of the carry and borrow flag 2 becomes &#34;0&#34; at the time of the completion of the operation. 
     FIG. 9 is an illustration for describing an ADD instruction. The ADD instruction is an instruction for adding together the content of the arithmetic register 4 and the content of the memory 12. The calculation result is stored in the arithmetic register 4. In the case that the calculation result exceeds the number of bits of the arithmetic register 4, the content of the carry and borrow flag 2 becomes &#34;1&#34; at the time of the completion of the operation. In the case that the calculation result is below the number of bits of the arithmetic register 4, the content of the carry and borrow flag 2 becomes &#34;0&#34; at the time of the completion of the operation. 
     FIG. 10 is an illustration for describing an SBC instruction. The SBC instruction is an instruction for subtracting the content of the memory 12 and the content of the carry and borrow flag 2 from the content of the arithmetic register 4. The content &#34;0&#34; of the carry and borrow flag 2 before the operation indicates that the operation data takes a digit borrow from a lower-order position, and the content &#34;1&#34; of the carry and borrow flag 2 before the operation indicates that the operation data does not take the borrow from the lower-order position. The calculation result is stored in the arithmetic register 4. In the case that the content of the memory 12 and the content of the carry and borrow flag 2 cannot be subtracted from the content of the arithmetic register 4, that is, when a borrow occurs in the calculation result, the content of the carry and borrow flag 2 becomes &#34;0&#34; at the time of the completion of the operation. On the other hand, in the case that the borrow does not occur in the calculation result, the content of the carry and borrow flag 2 becomes &#34;1&#34; at the time of the completion of the operation. 
     FIG. 11 is an illustration for describing an SUB instruction. The SUB instruction is an instruction for subtracting the content of the memory 12 from the content of the arithmetic register 4. The calculation result is stored in the arithmetic register 4. In the case that the content of the memory 12 and the content of the carry and borrow flag 2 cannot be subtracted from the content of the arithmetic register, that is, when a borrow occurs in the calculation result, the content of the carry and borrow flag 2 becomes &#34;0&#34; at the time of the completion of the operation. When the borrow does not occur in the calculation result, the content of the carry and borrow flag 2 becomes &#34;1&#34; at the time of the completion of the operation. 
     For example, in the case that the ADC instruction is executed in an immediate addressing mode where an operand (operator) is stated in a program, when an operation code (instruction code) on the program is read and inputted to the CPU 11, the CPU 11 causes the operand to be latched as immediate value operation data (for example, DATA1) in the data latch circuit 5. The DATA 1 of the data latch circuit 5 passes through an internal bus 6a of the CPU 11 to be inputted to the ALU 3, the data (for example, DATA2) of the arithmetic register 4 passes through an internal bus 6b of the CPU 11 to be inputted to the ALU 3, and the data (for example, C1) of the carry and borrow flag 2 passes through a data line 7 to be inputted to the ALU3. The DATA1, DATA2 and C1 are added together in the ALU 3 and the calculation result (SUM) is inputted through the internal bus 6a of the CPU 11 to the arithmetic register 4. At this time, the output of the data latch circuit 5 is set to OFF. Further, the carry (for example, C2) of the calculation result is inputted through a data line 9 to the carry and borrow flag 2. The ADC instruction is completed with the aforementioned procedure. 
     Similarly, in the case of executing the ADD instruction in the immediate addressing mode, in response to an operation code on the program being read to the CPU 1 1, the CPU 11 causes the operand to be latched as the immediate value operation data DATA1 in the data latch circuit 5. The DATA1 of the data latch circuit 5 is inputted through the internal bus 6a of the CPU 11 to the ALU 3 and the data DATA2 of the arithmetic register 4 is inputted through the internal bus 6b of the CPU 11 to the ALU3. At this time, the carry input of the least significant bit of the ALU 3 is fixed to &#34;0&#34;. The DATA 1 and the DATA 2 are added to each other in the ALU 3 and the calculation result SUM is inputted through the internal bus 6a of the CPU 11 to the arithmetic register 4. At this time, the output of the data latch circuit 5 is OFF. Further, the carry C2 of the calculation result is inputted through the data line 9 to the carry and borrow flag 2. The ADD instruction is completed with the aforementioned procedure. 
     Further, in the case of executing the SBC instruction in the immediate addressing mode, when an operation code on the program is read to the CPU 11, the CPU 1 1 causes the operand DATA1 to be latched as the immediate value in the data latch circuit 5. The DATA1 of the data latch circuit 5 is inputted through the internal bus 6a of the CPU 11 to the ALU 3 so as to be bit-inverted in the ALU 3 to become DATA1B. The data DATA2 of the arithmetic register 4 is inputted through the internal bus 6b of the CPU 11 to the ALU 3 and the data B1 of the carry and borrow flag 2 is inputted through the data line 7 to the ALU 3. The DATA1B, DATA2 and B1 are added together in the ALU 3, and the calculation result SUM is inputted through the internal bus 6a of the CPU 11. At this time, the output of the data latch circuit 5 is OFF. The SBC instruction is completed with the aforementioned procedure. 
     Still further, in the case of executing the SUB instruction in the immediate addressing mode, when an operation code on the program is read to the CPU 11, the CPU 11 causes the operand DATA1 to be latched as the immediate value in the data latch circuit 5. The DATA1 of the data latch circuit 5 is inputted through the internal bus 6a of the CPU 11 to the ALU 3 so as to be bit-inverted to be DATA1B in the ALU 3. The data DATA2 of the arithmetic register 4 is inputted through the internal bus 6b of the CPU 11 to the ALU 3. The data C1 of the carry and borrow flag 2 is inputted through the data line 7 to the ALU 3. At this time, the borrow input of the least significant bit of the ALU 3 is fixed to &#34;1&#34;. The DATA1B and DATA2 are added together in the ALU 3, and the calculation result SUM is inputted through the internal bus 6a of the CPU 11 to the arithmetic register 4. At this time, the output of the data latch circuit 5 is OFF. Further, the borrow B2 of the calculation result is inputted through the data line 9 to the carry and borrow flag 2. The SUB instruction is completed with the aforementioned procedure. 
     As described above, the difference between the ADC instruction and the ADD instruction or the difference between the SBC instruction and the SUB instruction relates to whether the content of the carry and borrow flag to be inputted to the ALU 3 is effective or invalid, while the microcomputer based on the conventional operation system performs one operation determined by one operation code. Thus, for supporting the ADC instruction and the ADD instruction, different operation codes are required. It is similar in the cases of supporting the SBC instruction and the SUB instruction. Accordingly, there is a problem that, for supporting the effective operation of the carry input or borrow input and the invalid operation of the carry input or borrow input in a plurality of addressing modes, the number of the operation codes is required to double as compared with the case of supporting one of the operations. 
     SUMMARY OF THE INVENTION 
     The present invention has been developed in order to eliminate the above-mentioned problem, and it is therefore an object of this invention to provide an operation system which is capable of executing, with the same operation code, the operation in which the carry input or borrow input is effective and the operation in which the carry input or borrow input is invalid. 
     An operation system according to this invention is provided with switching means (switching circuit 1) to change the content of a carry and borrow flag 2 to be inputted to an arithmetic and logic unit 3. In accordance with a control signal 10 inputted to the switching means, the operation in which a carry input or borrow input inputted to the arithmetic and logic unit 3 is effective and the operation in which the carry input or borrow input is invalid are switched from each other, thereby executing the operations with the same instruction. 
     In this invention, the content of the carry and borrow flag 2 is changed in accordance with the control signal 10 inputted to the switching means (switching circuit 1) so as to switch between the operation in which the carry input or borrow input to the arithmetic and logic unit is effective and the operation in which the carry input or borrow input is invalid. 
     The above and other objects, features, and advantages of the Invention will become more apparent from the following description when taken in conjunction with the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram showing an arrangement of a microcomputer based on an operation system according to a first embodiment-of the present invention; 
     FIG. 2 is a circuit diagram showing one example of switching circuits according to this embodiment; 
     FIG. 3 is a block diagram showing an arrangement of a microcomputer based on an operation system according to a second embodiment of this invention; 
     FIG. 4 is a block diagram showing an arrangement of a microcomputer based on an operation system according to a third embodiment of this invention; 
     FIG. 5 is a block diagram showing an arrangement of a microcomputer based on an operation system according to a fourth embodiment of this invention; 
     FIG. 6 is a block diagram showing an arrangement of a microcomputer based on an operation system according to a fifth embodiment of this invention; 
     FIG. 7 is a block diagram showing an arrangement of a microcomputer based on a conventional operation system; 
     FIG. 8 is an illustration for describing an ADC instruction; 
     FIG. 9 is an illustration for describing an ADD instruction; 
     FIG. 10 is an illustration for describing an SBC instruction; and 
     FIG. 11 is an illustration for describing an SUB instruction. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 1 is a block diagram showing an arrangement of a microcomputer comprising an operation system according to a first embodiment of this invention where parts corresponding to those in FIG. 7 are marked with the same references and the description thereof will be omitted. In FIG. 1, numeral 1 represents a switching circuit which acts as a switching means to change the content of a carry and borrow flag 2 to be inputted to an ALU 3. A circuit arrangement of this switching circuit 1 is illustrated in FIG. 2. In FIGS. 2 and 1, character A represents a control signal to the switching circuit 1, B designates an input from the carry and borrow flag 2, C denotes a carry-borrow input to the ALU 3, and SBC is a control signal of a CPU 1 which becomes &#34;1&#34; at the time of the execution of the SBC instruction. An OR gate 17 outputs &#34;1&#34; when either the output of a composite 15 or the output of an AND gate 16 is &#34;1&#34;. In the case that the control signal A is &#34;0 &#34;, the output of the AND gate 16 always becomes &#34;0&#34;. The composite gate 15 outputs &#34;0&#34; when the input B is &#34;0&#34; and outputs &#34;1&#34; when the input B is &#34;1&#34;. Thus, when the control signal A is &#34;0&#34;, the value of the input B becomes equal to the value of the input C. When the control signal A is &#34;1&#34;, the output of the composite gate 15 always becomes &#34;0&#34;, and the AND gate 16 outputs &#34;0&#34; since the SBC becomes &#34;0&#34; at the time of the execution of the ADC instruction, and outputs &#34;1&#34; since the SBC becomes &#34;1&#34; at the time of the SBC instruction. Accordingly, in the case that the control signal A is &#34;1&#34;, the output C becomes &#34;0&#34; at the time of the execution of the ADC instruction and becomes &#34;1&#34; at the time of the execution of the SBC instruction. 
     In the microcomputer having an arrangement illustrated in FIG. 1, in the case of executing the ADC instruction or SBC instruction in the state that the control signal 10 is &#34;0&#34;, since the output 7 of the carry and borrow flag 7 becomes equal to the output 8 of the switching circuit 1, as well as in the conventional microcomputer, the data of an arithmetic register 4, the data of a data latch circuit 5 and the content of the carry and borrow flag 2 are added together in the ALU 3. In the case of executing the ADC instruction in the state that the control signal 10 is &#34;1&#34;, since the output 8 of the switching circuit 1 becomes &#34;0&#34;, the execution result becomes the addition result (sum) of the data of the arithmetic register 4 and the data of the data latch circuit 5 so as to be equal to the execution result of the ADD instruction. Further, in the case of executing the SBC instruction in the state that the control signal 10 is &#34;1&#34;, since the output 8 of the switching circuit 1 becomes &#34;1&#34;, the execution result becomes a value obtained by subtracting the data of the data latch circuit 5 from the data of the arithmetic register 4, thus becoming equal to the execution result of the SUB instruction. 
     In a second embodiment of this invention, as illustrated in FIG. 3, the control signal 10 is arranged to be inputted from a switching flag 13a in which an address is allocated. When executing the ADC instruction or the SBC instruction in accordance with a program in the memory 12, the CPU 11 performs an instruction for writing &#34;0&#34; in the switching flag 13a before the execution of the ADC instruction or the SBC instruction and sets the input 10 of the switching circuit 1 to &#34;0&#34;, and on the other hand, when executing the ADD instruction or the SUB instruction, the CPU 11 performs an instruction for writing &#34;1&#34; in the switching flag 13a, thereby allowing an operation similar to the first embodiment. 
     In a third embodiment, as shown in FIG. 4, the control signal 10 for the switching operation of the switching circuit 1 is arranged to be inputted from a switching flag 13b for latching the input from an external terminal 14 at the time of the reset. Thus, if the input of the external terminal 14 at the time of the reset is set to &#34;0&#34;, after the cancellation of the reset the operation becomes similar to the operation in the ADC instruction or the SBC instruction. If the input of the external terminal 14 at the reset time is set to &#34;1&#34;, after the cancellation of the reset the operation becomes similar to the operation in the ADD instruction or the SUB instruction. 
     In a fourth embodiment, as shown in FIG. 5, the control signal 10 for the switching operation of the switching circuit 1 is arranged to be inputted from a switching flag 13c provided within the CPU 11. The switching flag 13c becomes &#34;1&#34; in response to a specific set instruction and becomes &#34;0&#34; in response to a clear instruction. This embodiment can offer an operation similar to the operation in the above-described second embodiment. 
     Further, in a fifth embodiment, as illustrated in FIG. 6, the control signal for the switching operation of the switching circuit 1 is arranged to be inputted from the external terminal 14. 
     Although in the above-described embodiments the switching between the ADC instruction and the ADD instruction and the switching between the SBC instruction and the SUB instruction are effected by the same control signal, it is appropriate to respectively perform the switching operation by different control signals. In addition, various design changes can be made without departing from the scopes of the claims for this invention. Moreover, in the abovedescribed embodiments, it is appropriate to use an accumulator, a general-use register or the like as the arithmetic register to store the operation data and the calculation results. 
     As described above, according to this invention, a switching means is provided which changes the content of the carry and borrow flag to be inputted to the arithmetic and logic unit so as to perform, in accordance with the control signal inputted to the switching means, the switching between the operation in which the carry input or borrow input to be inputted to the arithmetic and logic unit is effective and the operation in which the carry input or borrow input is invalid, whereby it is possible to perform the operations with the same instruction. Accordingly, it is possible to perform, with the same operation code (by changing the control signal), the operation in which the carry or borrow input is effective and the operation in which the carry or borrow input is invalid. That is, it is possible to perform different operations by one operation code, and hence it is possible to reduce the number of the operation codes. In addition, since it is not required to increase the operation codes, in a microcomputer or the like having the operation with carry or the operation with borrow, it is possible to increase the number of the operations by slight logic changes.