📄 lde.asm
字号:
dd C_ERROR ; 0E
dd C_ERROR ; 0F
dd C_ERROR ; 10
dd C_ERROR ; 11
dd C_ERROR ; 12
dd C_ERROR ; 13
dd C_ERROR ; 14
dd C_ERROR ; 15
dd C_ERROR ; 16
dd C_ERROR ; 17
dd C_ERROR ; 18
dd C_ERROR ; 19
dd C_ERROR ; 1A
dd C_ERROR ; 1B
dd C_ERROR ; 1C
dd C_ERROR ; 1D
dd C_ERROR ; 1E
dd C_ERROR ; 1F
dd C_ERROR ; 20
dd C_ERROR ; 21
dd C_ERROR ; 22
dd C_ERROR ; 23
dd C_ERROR ; 24
dd C_ERROR ; 25
dd C_ERROR ; 26
dd C_ERROR ; 27
dd C_ERROR ; 28
dd C_ERROR ; 29
dd C_ERROR ; 2A
dd C_ERROR ; 2B
dd C_ERROR ; 2C
dd C_ERROR ; 2D
dd C_ERROR ; 2E
dd C_ERROR ; 2F
dd C_ERROR ; 30
dd C_ERROR ; 31
dd C_ERROR ; 32
dd C_ERROR ; 33
dd C_ERROR ; 34
dd C_ERROR ; 35
dd C_ERROR ; 36
dd C_ERROR ; 37
dd C_ERROR ; 38
dd C_ERROR ; 39
dd C_ERROR ; 3A
dd C_ERROR ; 3B
dd C_ERROR ; 3C
dd C_ERROR ; 3D
dd C_ERROR ; 3E
dd C_ERROR ; 3F
dd C_ERROR ; 40
dd C_ERROR ; 41
dd C_ERROR ; 42
dd C_ERROR ; 43
dd C_ERROR ; 44
dd C_ERROR ; 45
dd C_ERROR ; 46
dd C_ERROR ; 47
dd C_ERROR ; 48
dd C_ERROR ; 49
dd C_ERROR ; 4A
dd C_ERROR ; 4B
dd C_ERROR ; 4C
dd C_ERROR ; 4D
dd C_ERROR ; 4E
dd C_ERROR ; 4F
dd C_ERROR ; 50
dd C_ERROR ; 51
dd C_ERROR ; 52
dd C_ERROR ; 53
dd C_ERROR ; 54
dd C_ERROR ; 55
dd C_ERROR ; 56
dd C_ERROR ; 57
dd C_ERROR ; 58
dd C_ERROR ; 59
dd C_ERROR ; 5A
dd C_ERROR ; 5B
dd C_ERROR ; 5C
dd C_ERROR ; 5D
dd C_ERROR ; 5E
dd C_ERROR ; 5F
dd C_ERROR ; 60
dd C_ERROR ; 61
dd C_ERROR ; 62
dd C_ERROR ; 63
dd C_ERROR ; 64
dd C_ERROR ; 65
dd C_ERROR ; 66
dd C_ERROR ; 67
dd C_ERROR ; 68
dd C_ERROR ; 69
dd C_ERROR ; 6A
dd C_ERROR ; 6B
dd C_ERROR ; 6C
dd C_ERROR ; 6D
dd C_ERROR ; 6E
dd C_ERROR ; 6F
dd C_ERROR ; 70
dd C_ERROR ; 71
dd C_ERROR ; 72
dd C_ERROR ; 73
dd C_ERROR ; 74
dd C_ERROR ; 75
dd C_ERROR ; 76
dd C_ERROR ; 77
dd C_ERROR ; 78
dd C_ERROR ; 79
dd C_ERROR ; 7A
dd C_ERROR ; 7B
dd C_ERROR ; 7C
dd C_ERROR ; 7D
dd C_ERROR ; 7E
dd C_ERROR ; 7F
dd C_DATA66+C_REL ; 80
dd C_DATA66+C_REL ; 81
dd C_DATA66+C_REL ; 82
dd C_DATA66+C_REL ; 83
dd C_DATA66+C_REL ; 84
dd C_DATA66+C_REL ; 85
dd C_DATA66+C_REL ; 86
dd C_DATA66+C_REL ; 87
dd C_DATA66+C_REL ; 88
dd C_DATA66+C_REL ; 89
dd C_DATA66+C_REL ; 8A
dd C_DATA66+C_REL ; 8B
dd C_DATA66+C_REL ; 8C
dd C_DATA66+C_REL ; 8D
dd C_DATA66+C_REL ; 8E
dd C_DATA66+C_REL ; 8F
dd C_MODRM ; 90
dd C_MODRM ; 91
dd C_MODRM ; 92
dd C_MODRM ; 93
dd C_MODRM ; 94
dd C_MODRM ; 95
dd C_MODRM ; 96
dd C_MODRM ; 97
dd C_MODRM ; 98
dd C_MODRM ; 99
dd C_MODRM ; 9A
dd C_MODRM ; 9B
dd C_MODRM ; 9C
dd C_MODRM ; 9D
dd C_MODRM ; 9E
dd C_MODRM ; 9F
dd 0 ; A0
dd 0 ; A1
dd 0 ; A2
dd C_MODRM ; A3
dd C_MODRM+C_DATA1 ; A4
dd C_MODRM ; A5
dd C_ERROR ; A6
dd C_ERROR ; A7
dd 0 ; A8
dd 0 ; A9
dd 0 ; AA
dd C_MODRM ; AB
dd C_MODRM+C_DATA1 ; AC
dd C_MODRM ; AD
dd C_ERROR ; AE
dd C_MODRM ; AF
dd C_MODRM ; B0
dd C_MODRM ; B1
dd C_MODRM ; B2
dd C_MODRM ; B3
dd C_MODRM ; B4
dd C_MODRM ; B5
dd C_MODRM ; B6
dd C_MODRM ; B7
dd C_ERROR ; B8
dd C_ERROR ; B9
dd C_MODRM+C_DATA1 ; BA
dd C_MODRM ; BB
dd C_MODRM ; BC
dd C_MODRM ; BD
dd C_MODRM ; BE
dd C_MODRM ; BF
dd C_MODRM ; C0
dd C_MODRM ; C1
dd C_ERROR ; C2
dd C_ERROR ; C3
dd C_ERROR ; C4
dd C_ERROR ; C5
dd C_ERROR ; C6
dd C_ERROR ; C7
dd 0 ; C8
dd 0 ; C9
dd 0 ; CA
dd 0 ; CB
dd 0 ; CC
dd 0 ; CD
dd 0 ; CE
dd 0 ; CF
dd C_ERROR ; D0
dd C_ERROR ; D1
dd C_ERROR ; D2
dd C_ERROR ; D3
dd C_ERROR ; D4
dd C_ERROR ; D5
dd C_ERROR ; D6
dd C_ERROR ; D7
dd C_ERROR ; D8
dd C_ERROR ; D9
dd C_ERROR ; DA
dd C_ERROR ; DB
dd C_ERROR ; DC
dd C_ERROR ; DD
dd C_ERROR ; DE
dd C_ERROR ; DF
dd C_ERROR ; E0
dd C_ERROR ; E1
dd C_ERROR ; E2
dd C_ERROR ; E3
dd C_ERROR ; E4
dd C_ERROR ; E5
dd C_ERROR ; E6
dd C_ERROR ; E7
dd C_ERROR ; E8
dd C_ERROR ; E9
dd C_ERROR ; EA
dd C_ERROR ; EB
dd C_ERROR ; EC
dd C_ERROR ; ED
dd C_ERROR ; EE
dd C_ERROR ; EF
dd C_ERROR ; F0
dd C_ERROR ; F1
dd C_ERROR ; F2
dd C_ERROR ; F3
dd C_ERROR ; F4
dd C_ERROR ; F5
dd C_ERROR ; F6
dd C_ERROR ; F7
dd C_ERROR ; F8
dd C_ERROR ; F9
dd C_ERROR ; FA
dd C_ERROR ; FB
dd C_ERROR ; FC
dd C_ERROR ; FD
dd C_ERROR ; FE
dd C_ERROR ; FF
;; ----------------------------------------
;; code segment
;; ----------------------------------------
.code
Start:
disasm proc uses ebx ecx edx esi edi opcode0 : LPVOID, diza : LPVOID
;; This stuff is used to get instructino length and parse it into
;; prefix, opcode, modregr/m, address, immediate, etc.
;; failed:eax = 0
LOCAL flag : DWORD
LOCAL mod_i : BYTE
LOCAL rm_i : BYTE
;; esi -> opcode
;; edi -> diza
;; edx -> lde32_table
;; al -> c
;; ebx -> t
;; ecx -> tmp variable
mov esi, opcode0
;; memset(diza, 0x00, sizeof(DISASM_STRUCT));
mov edi, diza
mov ecx, sizeof DISASM_STRUCT
xor eax, eax
cld
rep stosb
mov edi, diza
assume edi : ptr DISASM_STRUCT
mov al, 04h
mov byte ptr [edi].disasm_defaddr, al
mov byte ptr [edi].disasm_defdata, al
mov ax, word ptr [esi]
test ax, ax
jz FailedExit
sub ax, 0FFFFh
jz FailedExit
;; start handle prefix
xor eax, eax
mov flag, eax
lea edx, lde32_table
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -