Optron #30
03 сентября 1999 |
|
Likbez - Assembler view from afar: What shift?
Assembler - a view from afar Continued. Beginning at | | 20, 21, 24, 25, 28, 29 {} Infarh, 1999 Teams shift What is the shift? The meaning of the shift is that all the bits in a byte, without changing its position relative to each other, move left or right. A zavsimosti in the type of command bits, leaving the edge of the "byte may appear on the opposite side (cyclic shifts) or lost in the abyss (the shifts are simple or noncyclic). Example. Applicable to the number of % 01100010 cyclic shift to the right. The result will be the number of % 00110001 And using a simple shift to the left, we obtain % 1100010? The "?" means that the bits received state, know in advance, and depending the type of team, state flags, etc. Teams shift battery There are four teams offset bits the battery: RLCA RLA RRCA RRA The second letter is eloquent testimony to the shear direction. Teams "RLCA" and "RLA" shift the contents of the "A" left, "RRCA" and "RRA" - right. And if mnemonics is a letter "C", then this indicates participation in the operation carry flag CY. For greater clarity, we illustrate the execution of such commands. CY <7 6 5 4 3 2 1 0 < As seen from privedennoy scheme, under the "RLCA" is a cyclic shift bits of battery left. Bits occupying the leftmost position (D7), goes to the place of the extreme right (D0) and copied to the carry flag "CY", and other bits are simply shifted to the left. It can be successfully applied to inspect the contents extreme bits: LD A,% 10011010 RLCA JR C, MET ... MET The above code fragment is quite suitable for use. Naturally, load "A" is not so obvious, otherwise what's the point in checking? But the point is that if a bit older battery will "1", the processor will make the transition to the label "MET", thereby denying the performance fragment of the program's designated in our example of an ellipsis. And now - the team "RLA": CY <7 6 5 4 3 2 1 0 < Here is a cyclical Swig battery right. Unlike "RLCA" here carry flag is also involved in the work providing its content as More than one bit for the shift. Example. If the "A" is the number of % 01101010, and the carry flag is set, then after the execution of "RLA" to "A" will find the number of % 11010101, and the flag "CY" will be thrown down. But shifts in the opposite direction: > 7 6 5 4 3 2 1 0> CY > 7 6 5 4 3 2 1 0> CY As you can see, the commands "RRCA" and "RRA" completely identical to the previously considered for except the shear direction. Command shift registers general-purpose We have considered the action to the battery. But all the other registers as "not remain disadvantaged in this regard. Even Conversely, the commands for them even more. There are, for example, a group of commands: RLC s RL s RRC s RR s They "s" stands for "(HL)", "(IX + d)", "(IY + d)" or one of the registers: "A", "B", "C", "D", "E", "H", "L" In all other respects are similar to those Komad that relate to "A": "RLC s", "RL s" perform shift "s" to the left, "RRC s", "RR s" - Right. Carry Flag is involved in an operation the same way. We now consider the "SLA s" and "SRL s": CY <7 6 5 4 3 2 1 0 <0 0> 7 6 5 4 3 2 1 0> CY These commands are very common, because In addition to the shift to the left or right they fill the vacated seat znacheiem zero, therefore, can regarded as multiplication and division by two, respectively. And finally, the command "SRA s": > 7 6 5 4 3 2 1 0> CY It can be considered as an operation "division by two with a sign." In the shift involved only 7 LSBs, and the senior remains unchanged. But do not think that's all! There is more ... Shift nibbles He performed on "RLD" and "RRD". These commands are not used very often. Be Maybe you do not have access him. But, nonetheless, consider them all as necessary. Thus, the scheme: v 7 ... 4 3 ... ... 4 0 7 3 ... 0 ^ ^ A (HL) v 7 ... 4 3 ... ... 4 0 7 3 ... 0 ^ ^ A (HL) As you can see in the work involved at the same time as "A", and "(HL)". Exchange between them takes place in groups of 4 bits, and senior 4-bit accumulator remain izmneny. Example. If the battery contains a byte % 11010010, and the address "HL" is stored bytes % 01111001, after the execution of a command "RLD" in the battery will be the number of % 11010111, and "HL" will address byte % 10010010 Team "RRD" is the same, Except, of course, shift direction, As can be seen in the diagram. And, of course, consider such an important part of any assembly instructions, how ... Effect of shift commands to the flags Mnemonic Flags operation C Z P / V S N H RL s x x P x 0 0 RR s x x P x 0 0 RLC s x x P x 0 0 RRC s x x P x 0 0 RLA x. . . 0 0 RRA x. . . 0 0 RLCA x. . . 0 0 RRCA x. . . 0 0 RLD. x P x 0 0 RRD. x P x 0 0 That's all the influence! All the notation in the table should be You know from past lessons. The only new sign - "s", but about it was mentioned above. To be continued ...
Other articles:
Similar articles:
В этот день... 21 November