43 lines
1.1 KiB
Plaintext
43 lines
1.1 KiB
Plaintext
Steps:
|
|
|
|
Pointer Database Correction
|
|
Initialize Registers
|
|
|
|
| Loop: BX < Pointer DB End
|
|
| AL = 0x0
|
|
| * Next Field (Pointer)
|
|
AL < 0x2
|
|
Zero DH, Increment BX, Move [BX] to DL, Decrement BX
|
|
Add Displacement (CX) to DX
|
|
Decrement AL, Add AL to Displacement
|
|
Convert Byte-To-Word
|
|
Range Database Check
|
|
Initialize Registers
|
|
Move BX to DX
|
|
Move Range DB Start to BX
|
|
Loop: BX < Range DB End
|
|
Type not 0x2
|
|
* Next Field (Range)
|
|
Add Displacement End to Displacement Value in CX
|
|
Range End > CX
|
|
Range Start < CX
|
|
Subtract Displacement End from Displacement Value in CX
|
|
Add Range End to
|
|
Next Field (Range)
|
|
Finished
|
|
* Initialize Registers
|
|
No
|
|
* Next Field (Pointer)
|
|
0x3, 0x4
|
|
Subtract Type-0x3 from Displacement
|
|
Word-To-Byte Check
|
|
Yes
|
|
Convert Word-To-Byte
|
|
* Initialize Registers
|
|
No
|
|
* Next Field (Pointer)
|
|
| Next Field (Pointer)
|
|
Finished! Perform Changes
|
|
|
|
|