Topic : MC68030 - Instruction Assembler Syntax Author : Bjørn Ove Årthun/Jiri Kucik Version : mc68030.hyp 0.01 (29/02/96) Subject : Programming/Others Nodes : 120 Index Size : 2440 HCP-Version : 2 Compiled on : Atari @charset : atarist @lang : @default : @help : %main @options : +g -i -s +z @width : 75 View Ref-FileNAME CMP2 -- Compare register against upper and lower bounds (68020+) SYNOPSIS CMP2 <ea>,Rn FUNCTION Used to compare value of Rn (Dn or An) with two lower and upper bounds, which are stored in memory, at address given by <ea> (in two adjacent areas). Lower bound have to be stored before upper bound. Flags are set following to the result of comparison. If Rn is a data register Dn, and if operation is made on 8 or 16 bits, only the 8 or 16 bits of Dn are taken in count. In opposite, in the case of Rn as an address register and if a 16 bits operation is granted, the 32 bits of An are compared to bounds which are, them, extended on 32 bits by their signs. FORMAT <ea> ----------------------------------------========================= |15 |14 |13 |12 |11 |10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |---|---|---|---|---|-------|---|---|---|-----------|-----------| | 0 | 0 | 0 | 0 | 0 | SIZE | 0 | 1 | 1 | MODE | REGISTER | |---|-----------|---|-------|---|---|---|-----------|-----------| |D/A| REGISTER | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ----------------------------------------------------------------- REGISTER Register specifies the register Rn which contains the value to test. If D/A = 0: Rn = Dn If D/A = 1: Rn = An <ea> specifies bounds, addressing modes allowed are: --------------------------------- ------------------------------- |Addressing Mode|Mode| Register | |Addressing Mode|Mode|Register| |-------------------------------| |-----------------------------| | Dn | - | - | | Abs.W |111 | 000 | |-------------------------------| |-----------------------------| | An | - | - | | Abs.L |111 | 001 | |-------------------------------| |-----------------------------| | (An) |010 |Nã reg. An| | (d16,PC) |111 | 010 | |-------------------------------| |-----------------------------| | (An)+ | - | - | | (d8,PC,Xi) |111 | 011 | |-------------------------------| |-----------------------------| | -(An) | - | - | | (bd,PC,Xi) |111 | 011 | |-------------------------------| |-----------------------------| | (d16,An) |101 |Nã reg. An| |([bd,PC,Xi],od)|111 | 011 | |-------------------------------| |-----------------------------| | (d8,An,Xi) |110 |Nã reg. An| |([bd,PC],Xi,od)|111 | 011 | |-------------------------------| |-----------------------------| | (bd,An,Xi) |110 |Nã reg. An| | #data | - | - | |-------------------------------| ------------------------------- |([bd,An,Xi]od) |110 |Nã reg. An| |-------------------------------| |([bd,An],Xi,od)|110 |Nã reg. An| --------------------------------- SIZE 00->one Byte operation 01->one Word operation 10->one Long operation RESULT X - Not affected N - Undefined. Z - Set if Rn is equal to one of the two bounds. Cleared otherwise. V - Undefined. C - Set if Rn is out of bounds. Cleared otherwise.