Nicron #10
05 декабря 1996 |
|
Programming - a course of study assembler Wlodek Black, continued.
Z80 (Continued). (C) WLODEK BLACK Logic team. Logical operations are always performed bitwise. Rassmarivayutsya operands as sets of 8 bits, without linking them to the whole byte. From This, incidentally, implies that the logical operations never transfer occurs. Indeed, the output of all logic operations flag C = 0. Logical "AND": AND. The truth table for AND: 1 AND 1 = 1 1 AND 0 = 0 0 AND 1 = 0 0 AND 0 = 0. In the mnemonic indicates only the second operand: AND E AND (IX +0) AND A. AND A team does not change the contents of the battery, but the effect on flags. This team had to figure out (by the flag Z), If A is equal to zero, as it is used to reset the flag C. For its intended purpose AND is used, for example, the so-called masking. AND% 00011111, for example, would leave unchanged the lowest 5 bits, and 3 senior will be reset to 0. Boolean "OR" - OR. The truth table for OR: 1 OR 1 = 1 1 OR 0 = 1 0 OR 1 = 1 0 OR 0 = 0. Examples of mnemonics: OR A OR (HL) OR 0A5H. OR A similar command on the use of that AND A. Which They use it - a matter of personal taste of the programmer. A logical "EXCLUSIVE OR" - XOR. XOR - a function that gives 1 only if both operands are different. The truth table for XOR: 1 XOR 1 = 0 1 XOR 0 = 1 0 XOR 1 = 1 0 XOR 0 = 0. It is easy to see that XOR over itself always gives 0. XOR A team effectively resets to zero the battery, and this has gained popularity among programmers. Another valuable property of XOR is widely used: two consecutive XOR with the same second operand gives the starting number. In the computer graphics used are extremely simple and effective way: to completely remove superimposed on the background image, it must be ... apply again. Both times, the logic XOR, of course. Team inversion battery. Inversion means bit-reversal bytes. All units in a byte will be zeros and all zeros - ones. Flags of the command is not touches. Mnemonic: CPL (from ComPLement - opposite). Addressing - Implicit to the battery. In conjunction with logical operators CPL can be regarded as a function of NOT - denial. Digression. Theoretically it is proved that anyone, even most complex algorithm can be reduced to a finite sequence of operations "AND" and "NOT". Operations on numbers in the decimal system. It should immediately declare: Decimal arithmetic is inefficient. Presence in the system processor commands at least some decimal arithmetic can be explained only "atavism," the 70-ies, when the scope of the microprocessor has only acquired its first vague shape. At present, the decimal system in the microprocessor systems used only at the stage input-output data that is, at the junction of the man-machine. All internal arithmetic in BASIC and other high-level languages, applied computational The program is taught in the binary system. Binary-decimal representation of numbers. The number in binary-decimal system is represented as a 4-bit groups, each of which placed a number from 0 to 9. In a byte, thus, fit 2 digits, and the maximum value is 99 bytes: 10011001BD = 99. BCD data conversion. Team DAA (Denary Adjust Accumulator) converts a number in the accumulator from the usual 8-bit representation in BCD form. For example, 66 in binary is equal to 01,000,010, and BCD - 01100110. To add two binary-decimal numbers, you need to put them in the usual way through the ADD or ADC, and then execute DAA. The result then will and BCD. Similarly, running and subtraction. DAA team automatically detects the previous action by the flag N (it's unverifiable software flag, so he did not meet our teams go on the condition) and is also suitable for addition, and subtraction. Due to the fact that the command to work properly DAA possible only at-one establishing the fact of the previous addition or subtraction, there are some difficulties for the case convert a number, not the result of arithmetic operations. Such is the case, particularly in the initial appeal to this when the original binary number is loaded into the register of memory and must be converted to BCD. If you just issue the command DAA, it is even doing the right transformation may incorrectly set the flags. DAA does not change the value of the flag tag subtracting N, and the wrong value of this flag can proceed further. To avoid trouble before the first use of DAA should act on the flag N, following the example, the addition of a dummy with zero: ADD A, 0. As you can see, BCD arithmetic, really ineffective. Byte is not fully used (99 instead of 255) Programming is cumbersome ... And finally, there is no command, feedback DAA. Teams for 16-bit arithmetic. In the role of 16-bit accumulator performs a pair HL (rarely - registers IX, IY). ADD HL, DE ADC HL, DE ADD IX, DE ADD IY, DE SBC HL, DE ADD HL, BC ADC HL, BC ADD IX, BC ADD IY, BC SBC HL, BC ADD HL, HL ADC HL, HL ADD IX, IX ADD IY, IY SBC HL, HL ADD HL, SP ADC HL, SP ADD IX, SP ADD IY, SP SBC HL, SP. No teams ADC for index registers. You can not add IX or IY with HL. No team SUB general and SBC - to IX, IY. Effect of instruction on flags: ADD HL, rr, ADD I *, rr - carry flag C; ADC - all flags; SBC - all the flags. Increment and decrement commands exist for all couples and index registers. INC HL; DEC IX, etc. Teams INC and DEC for 16-bit pair does not affect the flags. Typically, these commands are used to increment address pointer, or various counters, the impact on the flags in such situations would only disturbing factor. Multiplication and division. Teams MUL (multiple - multiply) and DIV (divise - split) can be used in programs running under DOS, allows you to set the current date. The only acceptable option date - 01 th of the 04-th month of any year. In other days of the correct execution of these commands is possible only after the N-th cup: DIV A, 3 - figure for three. Under repeated last set overflow flag P / V. At still over multiple repetitions may fail DRAM (So-called failures of memory). Further abuse of this construction could lead to a serious accident is - overheating of the processor to the level of white heat (so-called delirium tremens). But seriously, alas - multiplication and division in finished form no. Part of them, it happens, teams can replace the shift, but In the general case - the voluminous written procedures for the program implementation of multiplication and division. [To be continued].
Other articles:
Similar articles:
В этот день... 21 November