opcode-projects/80286/BIOS/Unsorted/txt/Offset Calculator Piece Ref...

140 lines
3.4 KiB
Plaintext

Word Register Reference
AX - DB Value
BX - DB Position
CX - Displacement Value/DB Value
DX - Displacement Value/DB Position Backup
Byte Register Reference
AL - DB Type Byte
Other Registers Unused
Operational Data Reference
Bytes Description
2 Pointer DB Start
2 Pointer DB End
2 Pointer DB Position
1 Pointer Type
2 Pointer Data
2 Range DB Start
2 Range DB End
2 Range DB Poisition
1 Range Type
2 Range Start
2 Range End
2 Displacement Start
2 Displacement End
2 Displacement Value
Pointer Type Byte Specification A
0x0, 0x6-FF - Empty Word
0x1 - Byte Relative
0x2 - Word Relative
0x3 - Word Absolute
0x4 - Byte Relative to Word Relative (B2W)
0x5 - Word Relative to Byte Relative (W2B)
Range Type Byte Specification A
Range : Consists of Start Word Pointer, End Word Pointer
0x0 - 0x3-FF - Empty DoubleWord
0x1 - Inactive Range
0x2 - Active Range
Pointer Calculation Procedure Specification A
0x: Omit Data Here (0 Bytes)
Jump Description
Aa Limit Check
CMP Pointer DB Position with Pointer DB End
JGE Exit
(Ba) JMP/0x Read Type
Ba Read Type
MOV [BX] → AL
Read Pointer Data
INC BX
MOV [BX] → CX
Check Displacement
CMP CX ⇄ Displacement Start
(Ca) JB Check Type Zero
CMP CX ⇄ Displacement End
(Ca) JA Check Type Zero
JMP/0x Add Displacement
Add Displacement
ADD Displacement → CX
(Ca) JMP/0x Check Type Zero
Ca Check Type Zero
CMP AL ⇄ 0x0
(?a/?b) JA Next Field
(Da/Db) JMP/0x Check Type Empty (Pointer/Range)
Da Check Type Empty (Pointer)
CMP AL ⇄ 0x5
(?a) JA Next Field (Pointer)
(Ea) JMP/0x Check Type 0x1 (Pointer)
Db Check Type Empty (Range)
CMP AL ⇄ 0x2
(?a) JA Next Field (Range)
(Eb) JMP/0x Check Type 0x1 (Range)
Ea Check Type 0x1 (Pointer)
CMP AL ⇄ 0x1
(?a) JE Check Convert 0x1 (Pointer)
(?a) JMP/0x Check Type 0x2 (Pointer)
Fa Check Type 0x1 (Range)
CMP AL ⇄ 0x1
(?a) JE Check Convert 0x1 (Range)
(?a) JMP/0x Check Type 0x3 (Range)
Eb Check Type 0x2 (Pointer)
CMP AL ⇄ 0x2
(?a) JE Check Convert 0x2 (Pointer)
(?a) JMP/0x Check Type 0x3 (Pointer)
Fb Check Type 0x2 (Range)
CMP AL ⇄ 0x2
(?a) JE Check Convert 0x2 (Range)
(?a) JMP/0x Check Type 0x3 (Range)
Gb Next Field (Range)
ADD BX + 0x4
(Aa) JMP/0x Limit Check
Ec Check Type 0x3 (Pointer)
CMP AL ⇄ 0x3
(?a) JE Check Convert 0x3 (Pointer)
(?a) JMP/0x Check Type 0x4 (Pointer)
Ed Check Type 0x4 (Pointer)
CMP AL ⇄ 0x4
(?a) JE Check Convert 0x4 (Pointer)
(?a) JMP/0x Check Type 0x5 (Pointer)
Ee Check Type 0x5 (Pointer)
CMP AL ⇄ 0x5
(?a) JE Check Convert 0x5 (Pointer)
(?a) JMP/0x Next Field (Pointer)
Ga Next Field (Pointer)
ADD BX + 0x2
(Aa) JMP/0x Limit Check