Changeset 631 in xtideuniversalbios for trunk/Assembly_Library
- Timestamp:
- Feb 1, 2025, 12:45:33 PM (12 hours ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Assembly_Library/Inc/Macros.inc
r602 r631 7 7 8 8 ;-------------------------------------------------------------------- 9 ; The long (two byte) form of PUSH. Supported by NEC V20/V30. 10 ; 11 ; LPUSH 12 ; Parameters: 13 ; %1: Any 16 bit general purpose register. 14 ; Returns: 15 ; Nothing 16 ; Corrupts registers: 17 ; Nothing 18 ;-------------------------------------------------------------------- 19 %macro LPUSH 1.nolist 20 %ifidni %1, ax 21 db 0FFh, 0F0h 22 %elifidni %1, cx 23 db 0FFh, 0F1h 24 %elifidni %1, dx 25 db 0FFh, 0F2h 26 %elifidni %1, bx 27 db 0FFh, 0F3h 28 %elifidni %1, sp 29 db 0FFh, 0F4h 30 %elifidni %1, bp 31 db 0FFh, 0F5h 32 %elifidni %1, si 33 db 0FFh, 0F6h 34 %elifidni %1, di 35 db 0FFh, 0F7h 36 %else 37 %error "Invalid parameter passed to LPUSH" 38 %endif 39 %endmacro 40 41 42 ;-------------------------------------------------------------------- 43 ; The long (two byte) form of POP. Not supported by NEC V20/V30. 44 ; NEC V20/V30 CPU:s will adjust SP but not actually move the contents 45 ; of the top WORD on the stack to the destination register. 46 ; 47 ; LPOP 48 ; Parameters: 49 ; %1: Any 16 bit general purpose register. 50 ; Returns: 51 ; Nothing 52 ; Corrupts registers: 53 ; Nothing 54 ;-------------------------------------------------------------------- 55 %macro LPOP 1.nolist 56 %ifidni %1, ax 57 db 8Fh, 0C0h 58 %elifidni %1, cx 59 db 8Fh, 0C1h 60 %elifidni %1, dx 61 db 8Fh, 0C2h 62 %elifidni %1, bx 63 db 8Fh, 0C3h 64 %elifidni %1, sp 65 db 8Fh, 0C4h 66 %elifidni %1, bp 67 db 8Fh, 0C5h 68 %elifidni %1, si 69 db 8Fh, 0C6h 70 %elifidni %1, di 71 db 8Fh, 0C7h 72 %else 73 %error "Invalid parameter passed to LPOP" 74 %endif 75 %endmacro 76 77 78 ;-------------------------------------------------------------------- 9 79 ; Skips the immediately following 1 byte instruction by using it 10 80 ; as an immediate value to a dummy instruction. … … 21 91 %macro SKIP1B 1.nolist 22 92 %ifidni %1, f 23 db 03Ch; Opcode byte for CMP AL, <immed>24 ;db 0A8h; Alt. version TEST AL, <immed>93 db 03Ch ; Opcode byte for CMP AL, <immed> 94 ;db 0A8h ; Alt. version TEST AL, <immed> 25 95 %elifidni %1, al 26 db 0B0h; Opcode byte for MOV AL, <immed>96 db 0B0h ; Opcode byte for MOV AL, <immed> 27 97 %elifidni %1, ah 28 db 0B4h; Opcode byte for MOV AH, <immed>98 db 0B4h ; Opcode byte for MOV AH, <immed> 29 99 %elifidni %1, bl 30 db 0B3h; Opcode byte for MOV BL, <immed>100 db 0B3h ; Opcode byte for MOV BL, <immed> 31 101 %elifidni %1, bh 32 db 0B7h; Opcode byte for MOV BH, <immed>102 db 0B7h ; Opcode byte for MOV BH, <immed> 33 103 %elifidni %1, cl 34 db 0B1h; Opcode byte for MOV CL, <immed>104 db 0B1h ; Opcode byte for MOV CL, <immed> 35 105 %elifidni %1, ch 36 db 0B5h; Opcode byte for MOV CH, <immed>106 db 0B5h ; Opcode byte for MOV CH, <immed> 37 107 %elifidni %1, dl 38 db 0B2h; Opcode byte for MOV DL, <immed>108 db 0B2h ; Opcode byte for MOV DL, <immed> 39 109 %elifidni %1, dh 40 db 0B6h; Opcode byte for MOV DH, <immed>110 db 0B6h ; Opcode byte for MOV DH, <immed> 41 111 %else 42 112 %error "Invalid parameter passed to SKIP1B" 43 113 %endif 44 114 %endmacro 115 45 116 46 117 ;-------------------------------------------------------------------- … … 59 130 %macro SKIP2B 1.nolist 60 131 %ifidni %1, f 61 db 03Dh; Opcode byte for CMP AX, <immed>62 ;db 0A9h; Alt. version TEST AX, <immed>132 db 03Dh ; Opcode byte for CMP AX, <immed> 133 ;db 0A9h ; Alt. version TEST AX, <immed> 63 134 %elifidni %1, ax 64 db 0B8h; Opcode byte for MOV AX, <immed>135 db 0B8h ; Opcode byte for MOV AX, <immed> 65 136 %elifidni %1, cx 66 db 0B9h; Opcode byte for MOV CX, <immed>137 db 0B9h ; Opcode byte for MOV CX, <immed> 67 138 %elifidni %1, dx 68 db 0BAh; Opcode byte for MOV DX, <immed>139 db 0BAh ; Opcode byte for MOV DX, <immed> 69 140 %elifidni %1, bx 70 db 0BBh; Opcode byte for MOV BX, <immed>141 db 0BBh ; Opcode byte for MOV BX, <immed> 71 142 %elifidni %1, sp 72 db 0BCh; Opcode byte for MOV SP, <immed>143 db 0BCh ; Opcode byte for MOV SP, <immed> 73 144 %elifidni %1, bp 74 db 0BDh; Opcode byte for MOV BP, <immed>145 db 0BDh ; Opcode byte for MOV BP, <immed> 75 146 %elifidni %1, si 76 db 0BEh; Opcode byte for MOV SI, <immed>147 db 0BEh ; Opcode byte for MOV SI, <immed> 77 148 %elifidni %1, di 78 db 0BFh; Opcode byte for MOV DI, <immed>149 db 0BFh ; Opcode byte for MOV DI, <immed> 79 150 %else 80 151 %error "Invalid parameter passed to SKIP2B"
Note:
See TracChangeset
for help on using the changeset viewer.