compilation sous tasm, le code date de 95 donc il correspond au tableau mnemonique d'époque.
Source / Exemple :
Comment#
Mne.asm
Tableau des Mnemoniques et de l'encodage
Comment#
_Imm Equ 000
_dwmodregmrdep Equ 001
_RegImm16 Equ 002
_UseReg Equ 003
_ImmHex08 Equ 004
_ModSregRmDep_1 Equ 005
_MemAccu Equ 006
_AccuMem Equ 007
_CallImm Equ 008
_MkeCond Equ 009
_SetOpeSize Equ 010
_SetAdrSize Equ 011
_RegImm8 Equ 012
_RegReg8 Equ 013
_AccuImm Equ 014
_ImmHex16 Equ 015
_GroupeE Equ 016
_TestN_NE Equ 017
_OpListe2 Equ 018
_TestBWD Equ 019
_GroupeA Equ 020
_GroupeB Equ 021
_swmod010mrdepimm Equ 022
_Copro Equ 023
_GroupeC Equ 024
_GroupeD Equ 025
_Aaa Equ 000
_Aad Equ 001
_Aam Equ 002
_Aas Equ 003
_Adc Equ 004
_Add Equ 005
_And Equ 006
_Arpl Equ 007
_Bound Equ 008
_Bsf Equ 009
_Bsr Equ 010
_Bswap Equ 011
_Bt Equ 012
_Btc Equ 013
_Btr Equ 014
_Bts Equ 015
_Call Equ 016
_Cbw Equ 017
_Cqd Equ 018
_Clc Equ 019
_Cld Equ 020
_Cli Equ 021
_Clts Equ 022
_Cmc Equ 023
_Cmp Equ 024
_Cmps Equ 025
_CmpXchg Equ 026
_Cts Equ 027
_Cwd Equ 028
_Cwde Equ 029
_Daa Equ 030
_Das Equ 031
_Dec Equ 032
_Div Equ 033
_Enter Equ 034
_Esc Equ 035
_Hlt Equ 036
_Ibts Equ 037
_Idiv Equ 038
_Iimul Equ 039
_Imul Equ 040
_In Equ 041
_Inc Equ 042
_Ins Equ 043
_Int Equ 044
_Into Equ 045
_Invd Equ 046
_Invlpg Equ 047
_Iret Equ 048
_IretD Equ 049
_Jcond Equ 050
_Jcxz Equ 051
_Jecxz Equ 052
_Jmp Equ 053
_Lahf Equ 054
_Lar Equ 055
_Lds Equ 056
_Lea Equ 057
_Leave Equ 058
_Les Equ 059
_Lfs Equ 060
_Lgdt Equ 061
_Lgs Equ 062
_Lidt Equ 063
_Lldt Equ 064
_Lmsw Equ 065
_LoadAll Equ 066
_Lock Equ 067
_Lod Equ 068
_Loop Equ 069
_LoopE Equ 070
_LoopZ Equ 071
_LoopNe Equ 072
_LoopNz Equ 073
_Lsl Equ 074
_Lss Equ 075
_Ltr Equ 076
_Mov Equ 077
_Movs Equ 078
_MovSx Equ 079
_MovZx Equ 080
_Mul Equ 081
_Neg Equ 082
_Nop Equ 083
_Not Equ 084
_Or Equ 085
_Out Equ 086
_OutS Equ 087
_Pop Equ 088
_PopA Equ 089
_PopAd Equ 090
_PopF Equ 091
_PopFd Equ 092
_Push Equ 093
_PushA Equ 094
_PushF Equ 095
_PushFd Equ 096
_Rcl Equ 097
_Rcr Equ 098
_Rep Equ 099
_RepC Equ 100
_RepNc Equ 101
_RepE Equ 102
_RepZ Equ 103
_RepNe Equ 104
_RepNz Equ 105
_Ret Equ 106
_RetF Equ 107
_RetN Equ 108
_Rol Equ 109
_Ror Equ 110
_Sahf Equ 111
_Sal Equ 112
_Sar Equ 113
_Sbb Equ 114
_Sca Equ 115
_Seg Equ 116
_SetCond Equ 117
_SetAlc Equ 118
_Sgdt Equ 119
_Shl Equ 120
_Shld Equ 121
_Shr Equ 122
_Shrd Equ 123
_Sidt Equ 124
_Sldt Equ 125
_Smsw Equ 126
_Stc Equ 127
_Std Equ 128
_Sti Equ 129
_Sto Equ 130
_Str Equ 131
_Sub Equ 132
_Test Equ 133
_Verr Equ 134
_Verw Equ 135
_Wait Equ 136
_WbInvd Equ 137
_Xadd Equ 138
_Xbts Equ 139
_Xchg Equ 140
_Xlat Equ 141
_XlatB Equ 142
_Xor Equ 143
_Al Equ 144
_Cl Equ 145
_Dl Equ 146
_Bl Equ 147
_Ah Equ 148
_Ch Equ 149
_Dh Equ 150
_Bh Equ 151
_Ax Equ 152
_Cx Equ 153
_Dx Equ 154
_Bx Equ 155
_Sp Equ 156
_Bp Equ 157
_Si Equ 158
_Di Equ 159
_Eax Equ 160
_Ecx Equ 161
_Edx Equ 162
_Ebx Equ 163
_Esp Equ 164
_Ebp Equ 165
_Esi Equ 166
_Edi Equ 167
_Cs Equ 168
_Ds Equ 169
_Es Equ 170
_Fs Equ 171
_Gs Equ 172
_Ss Equ 173
_DsBxSi Equ 174
_DsBxDi Equ 175
_SsBpSi Equ 176
_SsBpDi Equ 177
_DsSi Equ 178
_DsDi Equ 179
_Dsdep16 Equ 180
_DsBx Equ 181
_DsBxSiDep8 Equ 182
_DsBxDiDep8 Equ 183
_SsBpSiDep8 Equ 184
_SsBpDiDep8 Equ 185
_DsSiDep8 Equ 186
_DsDiDep8 Equ 187
_SsBpDep8 Equ 188
_DsBxDep8 Equ 189
_DsBxSiDep16 Equ 190
_DsBxDiDep16 Equ 191
_SsBpSiDep16 Equ 192
_SsBpDiDep16 Equ 193
_DsSiDep16 Equ 194
_DsDiDep16 Equ 195
_SsBpDep16 Equ 196
_DsBxDep16 Equ 197
_DsEaxDep8 Equ 198
_DsEcxDep8 Equ 199
_DsEdxDep8 Equ 200
_DsEbxDep8 Equ 201
_SibDep8 Equ 202
_DsEbpDep8 Equ 203
_DsEsiDep8 Equ 204
_DsEdiDep8 Equ 205
_DsEaxDep32 Equ 206
_DsEcxDep32 Equ 207
_DsEdxDep32 Equ 208
_DsEbxDep32 Equ 209
_SibDep32 Equ 210
_DsEbpDep32 Equ 211
_DsEsiDep32 Equ 212
_DsEdiDep32 Equ 213
_DsEax Equ 214
_DsEcx Equ 215
_DsEdx Equ 216
_DsEbx Equ 217
_Sib Equ 218
_DsOfs32 Equ 219
_DsEsi Equ 220
_DsEdi Equ 221
_PushEs Equ 222
_PopEs Equ 223
_PushSs Equ 224
_PopSs Equ 225
_None Equ 226
_SegEs Equ 227
_SegSs Equ 228
_PushDs Equ 229
_PopDs Equ 230
_SegCs Equ 231
_SegDs Equ 232
_PushCs Equ 233
_SegFs Equ 234
_SegGs Equ 235
_CallF Equ 236
_Int3 Equ 237
_CsImm16 Equ 238
_JcondFirst Equ 255
Jumps
.386P
.387
Locals @@
StartC Segment Para Public Use16 'CODE'
Assume CS:StartC,DS:StartC,SS:StartC
Org 100h
StartHere:
Jmp Demarre
; 0 remplace un Mot 8b
; 1 remplace un Mot 16b
; 2 remplace un Mot 32b
; 16 Charactere d'affichage
; 1234567890123456
MneDisplay DB 'Aaa ' ; _Aaa Equ 000
DB 'Aad ' ; _Aad Equ 001
DB 'Aam ' ; _Aam Equ 002
DB 'Aas ' ; _Aas Equ 003
DB 'Adc ' ; _Adc Equ 004
DB 'Add ' ; _Add Equ 005
DB 'And ' ; _And Equ 006
DB 'Arpl ' ; _Arpl Equ 007
DB 'Bound ' ; _Bound Equ 008
DB 'Bsf ' ; _Bsf Equ 009
DB 'Bsr ' ; _Bsr Equ 010
DB 'Bswap ' ; _Bswap Equ 011
DB 'Bt ' ; _Bt Equ 012
DB 'Btc ' ; _Btc Equ 013
DB 'Btr ' ; _Btr Equ 014
DB 'Bts ' ; _Bts Equ 015
DB 'Call ' ; _Call Equ 016
DB 'Cbw ' ; _Cbw Equ 017
DB 'Cqd ' ; _Cqd Equ 018
DB 'Clc ' ; _Clc Equ 019
DB 'Cld ' ; _Cld Equ 020
DB 'Cli ' ; _Cli Equ 021
DB 'Clts ' ; _Clts Equ 022
DB 'Cmc ' ; _Cmc Equ 023
DB 'Cmp ' ; _Cmp Equ 024
DB 'Cmps ' ; _Cmps Equ 025
DB 'CmpXchg ' ; _CmpXchg Equ 026
DB 'Cts ' ; _Cts Equ 027
DB 'Cwd ' ; _Cwd Equ 028
DB 'Cwde ' ; _Cwde Equ 029
DB 'Daa ' ; _Daa Equ 030
DB 'Das ' ; _Das Equ 031
DB 'Dec ' ; _Dec Equ 032
DB 'Div ' ; _Div Equ 033
DB 'Enter ' ; _Enter Equ 034
DB 'Esc ' ; _Esc Equ 035
DB 'Hlt ' ; _Hlt Equ 036
DB 'Ibts ' ; _Ibts Equ 037
DB 'Idiv ' ; _Idiv Equ 038
DB 'Iimul ' ; _Iimul Equ 039
DB 'Imul ' ; _Imul Equ 040
DB 'In ' ; _In Equ 041
DB 'Inc ' ; _Inc Equ 042
DB 'Ins ' ; _Ins Equ 043
DB 'Int ' ; _Int Equ 044
DB 'Into ' ; _Into Equ 045
DB 'Invd ' ; _Invd Equ 046
DB 'Invlpg ' ; _Invlpg Equ 047
DB 'Iret ' ; _Iret Equ 048
DB 'IretD ' ; _IretD Equ 049
DB 'J ' ; _Jcond Equ 050
DB 'Jcxz ' ; _Jcxz Equ 051
DB 'Jecxz ' ; _Jecxz Equ 052
DB 'Jmp ' ; _Jmp Equ 053
DB 'Lahf ' ; _Lahf Equ 054
DB 'Lar ' ; _Lar Equ 055
DB 'Lds ' ; _Lds Equ 056
DB 'Lea ' ; _Lea Equ 057
DB 'Leave ' ; _Leave Equ 058
DB 'Les ' ; _Les Equ 059
DB 'Lfs ' ; _Lfs Equ 060
DB 'Lgdt ' ; _Lgdt Equ 061
DB 'Lgs ' ; _Lgs Equ 062
DB 'Lidt ' ; _Lidt Equ 063
DB 'Lldt ' ; _Lldt Equ 064
DB 'Lmsw ' ; _Lmsw Equ 065
DB 'LoadAll ' ; _LoadAll Equ 066
DB 'Lock ' ; _Lock Equ 067
DB 'Lods ' ; _Lod Equ 068
DB 'Loop ' ; _Loop Equ 069
DB 'LoopE ' ; _LoopE Equ 070
DB 'LoopZ ' ; _LoopZ Equ 071
DB 'LoopNe ' ; _LoopNe Equ 072
DB 'LoopNz ' ; _LoopNz Equ 073
DB 'Lsl ' ; _Lsl Equ 074
DB 'Lss ' ; _Lss Equ 075
DB 'Ltr ' ; _Ltr Equ 076
DB 'Mov ' ; _Mov Equ 077
DB 'Movs ' ; _Movs Equ 078
DB 'MovSx ' ; _MovSx Equ 079
DB 'MovZx ' ; _MovZx Equ 080
DB 'Mul ' ; _Mul Equ 081
DB 'Neg ' ; _Neg Equ 082
DB 'Nop ' ; _Nop Equ 083
DB 'Not ' ; _Not Equ 084
DB 'Or ' ; _Or Equ 085
DB 'Out ' ; _Out Equ 086
DB 'OutS ' ; _OutS Equ 087
DB 'Pop ' ; _Pop Equ 088
DB 'PopA ' ; _PopA Equ 089
DB 'PopAd ' ; _PopAd Equ 090
DB 'PopF ' ; _PopF Equ 091
DB 'PopFd ' ; _PopFd Equ 092
DB 'Push ' ; _Push Equ 093
DB 'PushA ' ; _PushA Equ 094
DB 'PushF ' ; _PushF Equ 095
DB 'PushFd ' ; _PushFd Equ 096
DB 'Rcl ' ; _Rcl Equ 097
DB 'Rcr ' ; _Rcr Equ 098
DB 'Rep ' ; _Rep Equ 099
DB 'RepC ' ; _RepC Equ 100
DB 'RepNc ' ; _RepNc Equ 101
DB 'RepE ' ; _RepE Equ 102
DB 'RepZ ' ; _RepZ Equ 103
DB 'RepNe ' ; _RepNe Equ 104
DB 'RepNz ' ; _RepNz Equ 105
DB 'Ret ' ; _Ret Equ 106
DB 'RetF ' ; _RetF Equ 107
DB 'RetN ' ; _RetN Equ 108
DB 'Rol ' ; _Rol Equ 109
DB 'Ror ' ; _Ror Equ 110
DB 'Sahf ' ; _Sahf Equ 111
DB 'Sal ' ; _Sal Equ 112
DB 'Sar ' ; _Sar Equ 113
DB 'Sbb ' ; _Sbb Equ 114
DB 'Scas ' ; _Sca Equ 115
DB 'Seg ' ; _Seg Equ 116
DB 'SetCond ' ; _SetCond Equ 117
DB 'SetAlc ' ; _SetAlc Equ 118
DB 'Sgdt ' ; _Sgdt Equ 119
DB 'Shl ' ; _Shl Equ 120
DB 'Shld ' ; _Shld Equ 121
DB 'Shr ' ; _Shr Equ 122
DB 'Shrd ' ; _Shrd Equ 123
DB 'Sidt ' ; _Sidt Equ 124
DB 'Sldt ' ; _Sldt Equ 125
DB 'Smsw ' ; _Smsw Equ 126
DB 'Stc ' ; _Stc Equ 127
DB 'Std ' ; _Std Equ 128
DB 'Sti ' ; _Sti Equ 129
DB 'Stos ' ; _Sto Equ 130
DB 'Str ' ; _Str Equ 131
DB 'Sub ' ; _Sub Equ 132
DB 'Test ' ; _Test Equ 133
DB 'Verr ' ; _Verr Equ 134
DB 'Verw ' ; _Verw Equ 135
DB 'Wait ' ; _Wait Equ 136
DB 'WbInvd ' ; _WbInvd Equ 137
DB 'Xadd ' ; _Xadd Equ 138
DB 'Xbts ' ; _Xbts Equ 139
DB 'Xchg ' ; _Xchg Equ 140
DB 'Xlat ' ; _Xlat Equ 141
DB 'XlatB ' ; _XlatB Equ 142
DB 'Xor ' ; _Xor Equ 143
DB 'Al ' ; _Al Equ 144
DB 'Cl ' ; _Cl Equ 145
DB 'Dl ' ; _Dl Equ 146
DB 'Bl ' ; _Bl Equ 147
DB 'Ah ' ; _Ah Equ 148
DB 'Ch ' ; _Ch Equ 149
DB 'Dh ' ; _Dh Equ 150
DB 'Bh ' ; _Bh Equ 151
DB 'Ax ' ; _Ax Equ 152
DB 'Cx ' ; _Cx Equ 153
DB 'Dx ' ; _Dx Equ 154
DB 'Bx ' ; _Bx Equ 155
DB 'Sp ' ; _Sp Equ 156
DB 'Bp ' ; _Bp Equ 157
DB 'Si ' ; _Si Equ 158
DB 'Di ' ; _Di Equ 159
DB 'Eax ' ; _Eax Equ 160
DB 'Ecx ' ; _Ecx Equ 161
DB 'Edx ' ; _Edx Equ 162
DB 'Ebx ' ; _Ebx Equ 163
DB 'Esp ' ; _Esp Equ 164
DB 'Ebp ' ; _Ebp Equ 165
DB 'Esi ' ; _Esi Equ 166
DB 'Edi ' ; _Edi Equ 167
DB 'Cs ' ; _Cs Equ 168
DB 'Ds ' ; _Ds Equ 169
DB 'Es ' ; _Es Equ 170
DB 'Fs ' ; _Fs Equ 171
DB 'Gs ' ; _Gs Equ 172
DB 'Ss ' ; _Ss Equ 173
DB 'Ds:[Bx+Si] ' ; _DsBxSi Equ 174
DB 'Ds:[Bx+Di] ' ; _DsBxDi Equ 175
DB 'Ss:[Bp+Si] ' ; _SsBpSi Equ 176
DB 'Ss:[Bp+Di] ' ; _SsBpDi Equ 177
DB 'Ds:[Si] ' ; _DsSi Equ 178
DB 'Ds:[Di] ' ; _DsDi Equ 179
DB 'Ds:[1] ' ; _Dsdep16 Equ 180
DB 'Ds:[Bx] ' ; _DsBx Equ 181
DB 'Ds:[Bx+Si+0] ' ; _DsBxSiDep8 Equ 182
DB 'Ds:[Bx+Di+0] ' ; _DsBxDiDep8 Equ 183
DB 'Ss:[Bp+Si+0] ' ; _SsBpSiDep8 Equ 184
DB 'Ss:[Bp+Di+0] ' ; _SsBpDiDep8 Equ 185
DB 'Ds:[Si+0] ' ; _DsSiDep8 Equ 186
DB 'Ds:[Di+0] ' ; _DsDiDep8 Equ 187
DB 'Ss:[Bp+0] ' ; _SsBpDep8 Equ 188
DB 'Ds:[Bx+0] ' ; _DsBxDep8 Equ 189
DB 'Ds:[Bx+Si+1] ' ; _DsBxSiDep16 Equ 190
DB 'Ds:[Bx+Di+1] ' ; _DsBxDiDep16 Equ 191
DB 'Ss:[Bp+Si+1] ' ; _SsBpSiDep16 Equ 192
DB 'Ss:[Bp+Di+1] ' ; _SsBpDiDep16 Equ 193
DB 'Ds:[Si+1] ' ; _DsSiDep16 Equ 194
DB 'Ds:[Di+1] ' ; _DsDiDep16 Equ 195
DB 'Ss:[Bp+1] ' ; _SsBpDep16 Equ 196
DB 'Ds:[Bx+1] ' ; _DsBxDep16 Equ 197
Db 'Ds:[Eax+0] ' ; _DsEaxDep8 Equ 198
Db 'Ds:[Ecx+0] ' ; _DsEcxDep8 Equ 199
Db 'Ds:[Edx+0] ' ; _DsEdxDep8 Equ 200
Db 'Ds:[Ebx+0] ' ; _DsEbxDep8 Equ 201
Db '[4+0] ' ; _SibDep8 Equ 202
Db 'Ds:[Ebp+0] ' ; _DsEbpDep8 Equ 203
Db 'Ds:[Esi+0] ' ; _DsEsiDep8 Equ 204
Db 'Ds:[Edi+0] ' ; _DsEdiDep8 Equ 205
Db 'Ds:[Eax+2] ' ; _DsEaxDep32 Equ 206
Db 'Ds:[Ecx+2] ' ; _DsEcxDep32 Equ 207
Db 'Ds:[Edx+2] ' ; _DsEdxDep32 Equ 208
Db 'Ds:[Ebx+2] ' ; _DsEbxDep32 Equ 209
Db '[4+2] ' ; _SibDep32 Equ 210
Db 'Ds:[Ebp+2] ' ; _DsEbpDep32 Equ 211
Db 'Ds:[Esi+2] ' ; _DsEsiDep32 Equ 212
Db 'Ds:[Edi+2] ' ; _DsEdiDep32 Equ 213
Db 'Ds:[Eax] ' ; _DsEax Equ 214
Db 'Ds:[Ecx] ' ; _DsEcx Equ 215
Db 'Ds:[Edx] ' ; _DsEdx Equ 216
Db 'Ds:[Ebx] ' ; _DsEbx Equ 217
Db '[4] ' ; _Sib Equ 218
Db 'Ds:[2] ' ; _DsOfs32 Equ 219
Db 'Ds:[Esi] ' ; _DsEsi Equ 220
Db 'Ds:[Edi] ' ; _DsEdi Equ 221
Db 'Push_Es ' ; _PushEs Equ 222
Db 'Pop__Es ' ; _PopEs Equ 223
Db 'Push_Ss ' ; _PushSs Equ 224
Db 'Pop__Ss ' ; _PopSs Equ 225
Db ' ' ; _None Equ 226
Db 'Seg__Es ' ; _SegEs Equ 227
Db 'Seg__Ss ' ; _SegSs Equ 228
Db 'Push_Ds ' ; _PushDs Equ 229
Db 'Pop__Ds ' ; _PopDs Equ 230
Db 'Seg__Cs ' ; _SegCs Equ 231
Db 'Seg__Ds ' ; _SegDs Equ 232
Db 'Push_Cs ' ; _PushCs Equ 233
Db 'Seg__Fs ' ; _SegFs Equ 234
Db 'Seg__Gs ' ; _SegGs Equ 235
DB 'Call_Far_Ptr ' ; _CallF Equ 236
DB 'Int___3 ' ; _Int3 Equ 237
DB 'Cs:[1] ' ; _CsImm16 Equ 238
DB ' ' ; Equ 239
DB ' ' ; Equ 240
Db ' ' ; Equ 241
Db ' ' ; Equ 242
Db ' ' ; Equ 243
Db ' ' ; Equ 244
Db ' ' ; Equ 245
DB ' ' ; Equ 246
DB ' ' ; Equ 247
DB ' ' ; Equ 248
DB ' ' ; Equ 249
DB ' ' ; Equ 250
Db ' ' ; Equ 251
Db ' ' ; Equ 252
Db ' ' ; Equ 253
Db ' ' ; Equ 254
Db 'O ' ; _JcondFirst Equ 255
Db 'NO ' ; ; Table a Base 255
Db 'C ' ; ; Table a Base 255
Db 'NC ' ; ; Table a Base 255
Db 'Z ' ; ; Table a Base 255
Db 'NZ ' ; ; Table a Base 255
Db 'NA ' ; ; Table a Base 255
Db 'A ' ; ; Table a Base 255
Db 'S ' ; ; Table a Base 255
Db 'NS ' ; ; Table a Base 255
Db 'P ' ; ; Table a Base 255
Db 'NP ' ; ; Table a Base 255
Db 'L ' ; ; Table a Base 255
Db 'NL ' ; ; Table a Base 255
Db 'LE ' ; ; Table a Base 255
Db 'NLE ' ; ; Table a Base 255
Plug DB '0123456789ABCDEF' ; Base d'affichage Hexa
ChampReg_Head Dw Offset ChampReg ; W = 0, Ope = 0
Dw Offset ChampReg1 ; W = 0, Ope = 1
Dw Offset ChampReg ; W = 1, Ope = 0
Dw Offset ChampReg2 ; W = 1, Ope = 1
ChampReg Db _Al,_Cl,_Dl,_Bl,_Ah,_Ch,_Dh,_Bh
ChampReg1 Db _Ax,_Cx,_Dx,_Bx,_Sp,_Bp,_Si,_Di
ChampReg2 Db _Eax,_Ecx,_Edx,_Ebx,_Esp,_Ebp,_Esi,_Edi
Even
Champ16ModRm_Head Dw Offset Champ16ModRm00 ; w=0,mod=00 rm
Dw Offset Champ16ModRm01 ; w=0,mod=01 rm
Dw Offset Champ16ModRm10 ; w=0,mod=10 rm
Dw Offset Champ16ModRm110 ; w=0,mod=11 rm
Dw Offset Champ16ModRm00 ; w=1,mod=00 rm
Dw Offset Champ16ModRm01 ; w=1,mod=01 rm
Dw Offset Champ16ModRm10 ; w=1,mod=10 rm
Dw Offset Champ16ModRm111 ; w=1,mod=11 rm
Champ16ModRM00 Db _DsBxSi,_DsBxDi,_SsBpSi,_SsBpDi
Db _DsSi,_DsDi,_Dsdep16,_DsBx
Champ16ModRM01 Db _DsBxSiDep8,_DsBxDiDep8,_SsBpSiDep8,_SsBpDiDep8
Db _DsSiDep8,_DsDiDep8,_SsBpDep8,_DsBxDep8
Champ16ModRM10 Db _DsBxSiDep16,_DsBxDiDep16,_SsBpSiDep16,_SsBpDiDep16
Db _DsSiDep16,_DsDiDep16,_SsBpDep16,_DsBxDep16
Champ16ModRM110 Db _Al,_Cl,_Dl,_Bl,_Ah,_Ch,_Dh,_Bh
Champ16ModRM111 Db _Ax,_Cx,_Dx,_Bx,_Sp,_Bp,_Si,_Di
SregTable Db _Es,_Cs,_Ss,_Ds,_Fs,_Gs,_None
Champ32ModRm_Head Dw 100b ,Offset Champ32ModRm00
Dw 101b ,Offset Champ32ModRm01
Dw 110b ,Offset Champ32ModRm10
Dw 011b ,Offset Champ32ModRm110
Dw 111b ,Offset Champ32ModRm111
Dw -1 ,-1
Champ32ModRm00 Db _DsEax
Db _DsEcx
Db _DsEdx
Db _DsEbx
Db _Sib
Db _DsOfs32
Db _DsEsi
Db _DsEdi
Champ32ModRm01 Db 000b,_DsEaxDep8
Db 001b,_DsEcxDep8
Db 010b,_DsEdxDep8
Db 011b,_DsEbxDep8
Db 100b,_SibDep8
Db 101b,_DsEbpDep8
Db 110b,_DsEsiDep8
Db 111b,_DsEdiDep8
Champ32ModRm10 Db 000b,_DsEaxDep32
Db 001b,_DsEcxDep32
Db 010b,_DsEdxDep32
Db 011b,_DsEbxDep32
Db 100b,_SibDep32
Db 101b,_DsEbpDep32
Db 110b,_DsEsiDep32
Db 111b,_DsEdiDep32
Champ32ModRM110 Db 000b,_Al
Db 001b,_Cl
Db 010b,_Dl
Db 011b,_Bl
Db 100b,_Ah
Db 101b,_Ch
Db 110b,_Dh
Db 111b,_Bh
Champ32ModRM111 Db 000b,_Eax
Db 001b,_Ecx
Db 010b,_Edx
Db 011b,_Ebx
Db 100b,_Esp
Db 101b,_Ebp
Db 110b,_Esi
Db 111b,_Edi
; 00 -> 07
OpListe1 DB _Add , _dwmodregmrdep
DB _Add , _dwmodregmrdep
DB _Add , _dwmodregmrdep
DB _Add , _dwmodregmrdep
DB _Add , _AccuImm
DB _Add , _AccuImm
DB _PushEs , _Imm
DB _PopEs , _Imm
; 08 -> 0F
DB _Or , _dwmodregmrdep
DB _Or , _dwmodregmrdep
DB _Or , _dwmodregmrdep
DB _Or , _dwmodregmrdep
DB _Or , _AccuImm
DB _Or , _AccuImm
DB _PushCs , _Imm
DB _None , _OpListe2
; 10 -> 17
DB _Adc , _dwmodregmrdep
DB _Adc , _dwmodregmrdep
DB _Adc , _dwmodregmrdep
DB _Adc , _dwmodregmrdep
DB _Adc , _AccuImm
DB _Adc , _AccuImm
DB _PushSs , _imm
DB _PopSs , _imm
; 18 -> 1F
DB _Sbb , _dwmodregmrdep
DB _Sbb , _dwmodregmrdep
DB _Sbb , _dwmodregmrdep
DB _Sbb , _dwmodregmrdep
DB _Sbb , _AccuImm
DB _Sbb , _AccuImm
DB _PushDs , _imm
DB _PopDs , _imm
; 20 -> 27
DB _And , _dwmodregmrdep
DB _And , _dwmodregmrdep ; hum hum
DB _And , _dwmodregmrdep
DB _And , _dwmodregmrdep
DB _And , _AccuImm
DB _And , _AccuImm
DB _SegEs , _imm
DB _Daa , _imm
; 28 -> 2F
DB _Sub , _dwmodregmrdep
DB _Sub , _dwmodregmrdep ; hum hum
DB _Sub , _dwmodregmrdep
DB _Sub , _dwmodregmrdep
DB _Sub , _AccuImm
DB _Sub , _AccuImm
DB _SegCs , _imm
DB _Das , _imm
; 30 -> 37
DB _Xor , _dwmodregmrdep
DB _Xor , _dwmodregmrdep
DB _Xor , _dwmodregmrdep
DB _Xor , _dwmodregmrdep
DB _Xor , _AccuImm ;_dwmodregmrdep
DB _Xor , _AccuImm ;_dwmodregmrdep
DB _SegSs , _imm
DB _Aaa , _imm
; 38 -> 3F
DB _Cmp , _dwmodregmrdep
DB _Cmp , _dwmodregmrdep
DB _Cmp , _dwmodregmrdep
DB _Cmp , _dwmodregmrdep
DB _Cmp , _AccuImm ;
DB _Cmp , _AccuImm ;
DB _SegDs , _imm
DB _Aas , _imm
; 40 -> 47
Db _Inc , _UseReg
Db _Inc , _UseReg
Db _Inc , _UseReg
Db _Inc , _UseReg
Db _Inc , _UseReg
Db _Inc , _UseReg
Db _Inc , _UseReg
Db _Inc , _UseReg
; 48 -> 4F
Db _Dec , _UseReg
Db _Dec , _UseReg
Db _Dec , _UseReg
Db _Dec , _UseReg
Db _Dec , _UseReg
Db _Dec , _UseReg
Db _Dec , _UseReg
Db _Dec , _UseReg
; 50 -> 57
Db _Push , _UseReg
Db _Push , _UseReg
Db _Push , _UseReg
Db _Push , _UseReg
Db _Push , _UseReg
Db _Push , _UseReg
Db _Push , _UseReg
Db _Push , _UseReg
; 58 -> 5F
Db _Pop , _UseReg
Db _Pop , _UseReg
Db _Pop , _UseReg
Db _Pop , _UseReg
Db _Pop , _UseReg
Db _Pop , _UseReg
Db _Pop , _UseReg
Db _Pop , _UseReg
; 60 -> 67
Db _PushA , _Imm
Db _PopA , _Imm
Db _Bound , _Imm ; pas vrais ca
Db _Arpl , _Imm
Db _SegFs , _Imm
Db _SegGs , _Imm
Db _None , _SetOpeSize
Db _None , _SetAdrSize
; 68 -> 6F
Db _Push , _Imm ; pas vrais ca
Db _Imul , _Imm
Db _Push , _Imm
Db _Imul , _Imm
Db _Ins , _TestBWD
Db _Ins , _TestBWD
Db _Out , _TestBWD
Db _Out , _TestBWD
; 70 -> 77
Db _Jcond , _MkeCond ; Operaionnel sauf 32b
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
; 78 -> 7F
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
Db _Jcond , _MkeCond
; 80 -> 87
Db _None , _GroupeA
Db _None , _GroupeA
Db _None , _GroupeA
Db _None , _GroupeA
Db _Test , _Imm
Db _Test , _Imm
Db _Xchg , _Imm
Db _Xchg , _Imm
; 88 -> 8F
Db _Mov , _Imm ; Reg/Mem,Reg/Mem ; 88
Db _Mov , _Imm ; ; 89
Db _Mov , _RegReg8 ; ; 8A
Db _Mov , _Imm ; ; 8B
Db _Mov , _ModSregRmDep_1 ; Reg/mem,Sreg ; 8C
Db _Lea , _Imm ; 8D
Db _Mov , _Imm ; 8E
Db _Pop , _Imm ; 8F
; 90 -> 97
Db _Xchg , _UseReg
Db _Xchg , _UseReg
Db _Xchg , _UseReg
Db _Xchg , _UseReg
Db _Xchg , _UseReg
Db _Xchg , _UseReg
Db _Xchg , _UseReg
Db _Xchg , _UseReg
; 98 -> 9F
Db _Cbw , _Imm
Db _Cwd , _Imm
Db _CallF , _Imm
Db _Wait , _Imm
Db _PushF , _Imm
Db _PopF , _Imm
Db _Sahf , _Imm
Db _Lahf , _Imm
; A0 -> A7
Db _Mov , _AccuMem ; 00 AccuMem
Db _Mov , _AccuMem ; 01
Db _Mov , _MemAccu ; 10 MemAccu
Db _Mov , _MemAccu ; 11
Db _Mov , _TestBWD
Db _Mov , _TestBWD
Db _Cmp , _TestBWD
Db _Cmp , _TestBWD
; A8 -> AF
Db _Test , _Imm
Db _Test , _Imm
Db _Sto , _TestBWD
Db _Sto , _TestBWD
Db _Lod , _TestBWD
Db _Lod , _TestBWD
Db _Sca , _TestBWD
Db _Sca , _TestBWD
; B0 -> B7
Db _Mov , _RegImm8
Db _Mov , _RegImm8
Db _Mov , _RegImm8
Db _Mov , _RegImm8
Db _Mov , _RegImm8
Db _Mov , _RegImm8
Db _Mov , _RegImm8
Db _Mov , _RegImm8
; B8 -> BF
Db _Mov , _RegImm16
Db _Mov , _RegImm16
Db _Mov , _RegImm16
Db _Mov , _RegImm16
Db _Mov , _RegImm16
Db _Mov , _RegImm16
Db _Mov , _RegImm16
Db _Mov , _RegImm16
; C0 -> C7
Db _None , _GroupeB
Db _None , _GroupeB
Db _RetN , _Imm
Db _RetN , _Imm
Db _Les , _Imm
Db _Lds , _Imm
Db _Mov , _Imm
Db _Mov , _Imm
; C8 -> CF
Db _Enter , _Imm
Db _Leave , _Imm
Db _RetF , _Imm
Db _RetF , _Imm
Db _Int3 , _Imm
Db _Int , _ImmHex08
Db _Into , _Imm
Db _Iret , _Imm
; D0 -> D7
db _None , _GroupeB
db _None , _GroupeB
db _None , _GroupeB
db _None , _GroupeB
Db _Aam , _Imm
Db _Aad , _Imm
Db _SetAlc, _Imm
Db _Xlat , _Imm
; D8 -> DF
Db _None , _Copro
Db _None , _Copro
Db _None , _Copro
Db _None , _Copro
Db _None , _Copro
Db _None , _Copro
Db _None , _Copro
Db _None , _Copro
; E0 -> E7
Db _Loop , _TestN_NE
Db _Loop , _TestN_NE
Db _Loop , _Imm
Db _JCXZ , _Imm
Db _In , _Imm
Db _In , _Imm
Db _Out , _Imm
Db _Out , _Imm
; E8 -> EF
Db _Call , _CallImm
Db _Jmp , _Imm
Db _Jmp , _Imm
Db _Jmp , _Imm
Db _In , _Imm
Db _In , _Imm
Db _Out , _Imm
Db _Out , _Imm
; F0 -> F7
Db _Lock , _Imm
Db _Lock , _Imm
Db _Rep , _Imm
Db _Rep , _Imm
Db _Hlt , _Imm
Db _Cmc , _Imm
Db _None , _GroupeC
; F8 -> FF
Db _Clc , _Imm
Db _Stc , _Imm
Db _Cli , _Imm
Db _Sti , _Imm
Db _Cld , _Imm
Db _Std , _Imm
Db _None , _GroupeD
Db _None , _GroupeE
Even
OpFunc Dw Offset ImmResult
Dw Offset DwmodregMrDep
Dw Offset RegImm16
Dw Offset Usereg1632 ; Pas ca normalement
Dw Offset ImmH08
Dw Offset RegMemSreg
Dw Offset MemAccu
Dw Offset AccuMem
Dw Offset CallImm
Dw Offset MkeCondImm8
Dw Offset SetOpeSize
Dw Offset SetAdrSize
Dw Offset RegImm08
Dw Offset RegReg08
Dw Offset AccuImm
ReadSeg DW 0
ReadOfs DW 0
ReadData08 DB 0 ; Lecture d'octet
ReadData16 DW 0
ReadData32 DD 0
Val_Sreg DB 0
Val_D DB 0
Val_W DB 0
Val_Mod DB 0
Val_mr DB 0
Val_Dep DB 0
Val_OpeSize DB 0
Val_AdrSize DB 0
SetOpeSize:
Sub Word Ptr CurrentXY,2
Mov Byte Ptr Val_OpeSize,1
RetN
SetAdrSize:
Sub Word Ptr CurrentXY,2
Mov Byte Ptr Val_AdrSize,1
RetN
MkeCondImm8: ; Identitication d'une Condition de Saut Court si verifier
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[ReadData08]
And Al,0Fh
Mov Bx,_JcondFirst
Add Ax,Bx
Sub CurrentXy,2
Mov Cx,0000Fh
Call Xdisplay
Call ReadOne
Mov Ax,ReadOfs
Xor Bx,Bx
Mov Bl,ReadData08
Add Ax,Bx
Mov ReadData16,Ax
Mov Cx,0A00Fh
Call Hex16
RetN
ImmResult: ; Operande a traitement Immediat
RetN
dwmodregmrdep: ; traitement Specifique
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[ReadData08] ;
And Al,1
Mov Byte Ptr Val_w,Al
Mov Al,Byte Ptr Cs:[ReadData08] ;
And Al,2
Shr Ax,1
Mov Byte Ptr Val_d,Al
Call ReadOne
Cmp Val_d,1
Je DwRegModRm08
DwModRmReg08:
Xor Ax,Ax
Mov Al,Byte Ptr [ReadData08]
And Al,11000000b ; Lecture Champs Mod
Shr Ax,6 ;
Mov Bx,Offset Champ16ModRm_Head
Shl Ax,1
Add Bx,Ax
Xor Ax,Ax
Mov Al,Byte Ptr Cs:Val_W
Shl Ax,3
Add Bx,Ax
Mov Bx,Word Ptr Cs:[Bx]
Xor Ax,Ax
Mov Al,Byte Ptr [ReadData08]
And Al,111b
Add Bx,Ax
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[Bx]
Mov Cx,000Eh
Call Xdisplay
Mov Cx,000Bh
Call Virgule
Xor Ax,Ax
Mov Bx,Offset ChampReg_Head
Mov Al,Byte Ptr Val_w
Shl Ax,1
Add Al,Byte Ptr Val_OpeSize
Shl Ax,1
Add Bx,Ax
Mov Bx,Word Ptr Cs:[Bx]
Xor Ax,Ax
Mov Al,Byte Ptr [ReadData08]
And Al,0111000b
Shr Ax,3
Add Bx,Ax
Mov Al,Byte Ptr Cs:[BX]
Mov Cx,0A00Eh
Call Xdisplay
RetN
DwRegModRm08:
RetN
Comment#
DwModOpe16_:
RetN
DwModOpe32:
RetN
Comment#
CallImm:
Cmp Val_OpeSize,1
Je CallImm32
CallImm16:
Mov Ax,_CsImm16
Mov Cx,0A00Fh
Call XdisplayAdr
Retn
CallImm32:
Retn
RegReg08:
Call ReadOne
Xor Ax,Ax ; Traitement reg = Op1
Mov Al,Byte Ptr Cs:[ReadData08]
And Al,0111000b
Shr Al,3
Mov Bx,Offset ChampReg
Add Bx,Ax
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[Bx]
Mov Cx,000Eh
Call Xdisplay
Mov Cx,000Bh
Call Virgule
Xor Ax,Ax ; Traitement Mod+R/m = Op2
Mov Al,Byte Ptr Cs:[ReadData08]
And Al,0111b ; Recuperation de Mod
Mov Bx,Offset Champ16ModRm110
Add Bx,Ax
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[Bx]
Mov Cx,0A00Eh
Call Xdisplay
RetN
UseReg1632:
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[ReadData08]
And Al,0111b
Cmp Val_OpeSize,1
Je UseReg32
UseReg16:
Mov Bx,Offset ChampReg1
Add Bx,Ax
Mov Al,Cs:[Bx]
Mov Cx,0A00Bh
Call Xdisplay
RetN
UseReg32:
Mov Bx,Offset ChampReg2
Add Bx,Ax
Mov Al,Cs:[Bx]
Mov Cx,0A00Bh
Call Xdisplay
RetN
MemAccu:
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[ReadData08]
And Al,1
Cmp Al,1
Je MemAccu1632
; Operande 8 Bit
; ? Non Traiter
MemAccu1632:
Cmp Val_OpeSize,1
Je MemAccu32
MemAccu16: ; Implicite Ds:[1]
Mov Ax,_Dsdep16
Mov Cx,000Eh
Call Xdisplay
Mov Cx,000Fh
Call Virgule
Mov Ax,_Ax
Mov Cx,0A00Bh
Call Xdisplay
RetN
MemAccu32:
RetN
AccuMem:
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[ReadData08]
And Al,1
Cmp Al,1
Je AccuMem1632
; Operande 8 Bit
; ? Non Traiter
Mov Ax,_Al
Mov Cx,000Eh
Call Xdisplay
Mov CX,000Fh
Call Virgule
Call ImmH08
RetN
AccuMem1632:
Cmp Val_OpeSize,1
Je MemAccu32
AccuMem16: ; Implicite Ds:[1]
Mov Ax,_Ax
Mov Cx,000Eh
Call Xdisplay
Mov Cx,000Fh
Call Virgule
Mov Ax,_Dsdep16
Mov Cx,0A00Bh
Call Xdisplay
RetN
AccuMem32:
RetN
AccuImm:
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[ReadData08]
And Al,1
Cmp Al,1
Je AccuImm1632
Mov Ax,_Al
Mov Cx,000Eh
Call Xdisplay
Mov CX,000Fh
Call Virgule
Call ImmH08
RetN
AccuImm1632:
Cmp Val_OpeSize,1
Je AccuImm32
AccuImm16:
Mov Ax,_Ax
Mov Cx,000Eh
Call Xdisplay
Mov Cx,000Fh
Call Virgule
Call ImmH16
RetN
AccuImm32:
RetN
RegMemSreg:
Call ReadOne
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[ReadData08]
; voir suivant mode 16,32b
And AL,11000000b
Shr Al,6
Cmp Al,3
Je RegMemSreg_Ope32
RegMemSreg_Ope16:
Shl Ax,1
Mov Bx,Ax
Add Bx,Offset Champ16ModRm_Head
Mov Bx,Word Ptr Cs:[Bx]
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[ReadData08]
And Ax,00111000b
Shr Ax,3
Mov Val_Sreg,Al
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[ReadData08]
And Ax,0111b
Add Bx,Ax
Mov Al,Byte Ptr Cs:[Bx]
Mov Cx,000Eh
Call Xdisplay
Mov Cx,000Fh
Call Virgule
Mov Bx,Offset SregTable
Xor Ax,Ax
Mov Al,Val_Sreg
Add Bx,Ax
Mov Al,Cs:[Bx]
Mov Cx,0A00Bh
Call Xdisplay
retN
RegMemSreg_Ope32:
Cmp Val_OpeSize,0
Jne RegMemSreg_Ope16
RetN
ImmH08: ; Affichage D'hexa 08
Call ReadOne ; Lecture Nouvel Operande
Mov Cx,0A00Fh ;
Call Hex08
RetN
ImmH16: ; Affichage D'hexa 08
Call Read16 ; Lecture Nouvel Operande
Mov Cx,0A00Fh ;
Call Hex16
RetN
RegImm16: ; Recherche Registre , Affichage Immediat 16 Ou Immediat 32
Cmp Val_OpeSize,1
Je RegImm32
Mov Bl,ReadData08
And Bx,07
Add Bx,Offset ChampReg1
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[Bx]
Mov Cx,000Eh
Call XDisplay
Call Read16
Mov Cx,0000Bh
Call Virgule
Mov Cx,0A00Fh
Call Hex16
RetN
RegImm32:
Mov Bl,ReadData08
And Bx,07
Add Bx,Offset ChampReg2
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[Bx]
Mov Cx,000Eh
Call XDisplay
Call Read32
Mov Cx,0000Bh
Call Virgule
Mov Cx,0A00Fh
Call Hex32
RetN
RegImm08: ; Recherche Registre , Affichage Immediat 16 Ou Immediat 32
Cmp Val_OpeSize,1
Je RegImm0832
Mov Bl,ReadData08
And Bx,07
Add Bx,Offset ChampReg
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[Bx]
Mov Cx,000Eh
Call XDisplay
Call ReadOne
Mov Cx,0000Bh
Call Virgule
Mov Cx,0A00Fh
Call Hex08
RetN
RegImm0832:
Mov Bl,ReadData08
And Bx,07
Add Bx,Offset ChampReg2
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[Bx]
Mov Cx,000Eh
Call XDisplay
Call Read32
Mov Cx,0000Bh
Call Virgule
Mov Cx,0A00Fh
Call Hex32
RetN
XdisplayAdr: ; Ax = Mne Num
Mov Bx,Ax
Shl Bx,4 ; Bx Contient L'offset
Mov Di,Word Ptr Cs:WhereXY
Cmp Di,Word Ptr Cs:CurrentXY
JG XdisplayAdrCurrentGoal
Mov Di,Word Ptr Cs:CurrentXY
Add Di,2
XdisplayAdrCurrentGoal:
Mov Si,Bx
Add Si,Offset MneDisplay
Mov Bx,0B800h
Mov Es,Bx
Mov Ah,Cl
XdisplayAdrLoop:
Lodsb
Cmp Al,' '
Je XdisplayAdrDone
Cmp Al,'1'
Je DisplayAdrImm16
Cmp Al,'2'
Je DisplayAdrImm32
Stosw
Jmp XdisplayAdrLoop
XdisplayAdrDone:
Mov Cl,Ch
Xor Ch,Ch
Mov Word Ptr Cs:[CurrentXY],Di
Add Word Ptr Cs:WhereXY,Cx
Cmp Cx,0
Jg VideValXdisplayAdr
RetN
VideValXdisplayAdr:
Call Clear_Val
RetN
DisplayAdrImm32:
Jmp XdisplayAdrLoop
DisplayAdrImm16:
Push Cx
Push Ax
Sub Di,2
Mov Word Ptr Cs:[CurrentXY],Di
Call Read16
Mov Ax,ReadData16
Add Ax,ReadOfs
Mov ReadData16,Ax
Mov Cx,000Fh
Call Hex16
Pop Ax
Pop Cx
Jmp XdisplayAdrLoop
WhereXY DW 00000h
CurrentXY DW 0FFFFh
Xdisplay: ; Ax = Mne Num
Mov Bx,Ax
Shl Bx,4 ; Bx Contient L'offset
Mov Di,Word Ptr Cs:WhereXY
Cmp Di,Word Ptr Cs:CurrentXY
JG XdisplayCurrentGoal
Mov Di,Word Ptr Cs:CurrentXY
Add Di,2
XdisplayCurrentGoal:
Mov Si,Bx
Add Si,Offset MneDisplay
Mov Bx,0B800h
Mov Es,Bx
Mov Ah,Cl
XdisplayLoop:
Lodsb
Cmp Al,' '
Je XdisplayDone
Cmp Al,'0'
Je DisplayImm08
Cmp Al,'1'
Je DisplayImm16
Cmp Al,'2'
Je DisplayImm32
Stosw
Jmp XdisplayLoop
XdisplayDone:
Mov Cl,Ch
Xor Ch,Ch
Mov Word Ptr Cs:[CurrentXY],Di
Add Word Ptr Cs:WhereXY,Cx
Cmp Cx,0
Jg VideValXdisplay
RetN
VideValXdisplay:
Call Clear_Val
RetN
RetN
DisplayImm32:
DisplayImm16:
Push Cx
Push Ax
Sub Di,2
Mov Word Ptr Cs:[CurrentXY],Di
Call Read16
Mov Cx,000Fh
Call Hex16
Pop Ax
Pop Cx
Jmp XdisplayLoop
DisplayImm08:
RetN
Hex08:
Mov Di,Word Ptr Cs:WhereXY
Cmp Di,Word Ptr Cs:CurrentXY
JG Hex08CurrentGoal
Mov Di,Word Ptr Cs:CurrentXY
Add Di,2
Hex08CurrentGoal:
Mov Bx,0B800h
Mov Es,Bx
Mov Ah,Cl
Mov Bl,Byte Ptr Cs:[ReadData08]
And Bx,0F0h
Shr Bl,4
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bl,Byte Ptr Cs:[ReadData08]
And Bx,0Fh
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Cl,Ch
Xor Ch,Ch
Mov Word Ptr Cs:[CurrentXY],Di
Add Word Ptr Cs:WhereXY,Cx
Cmp Cx,0
Jg VideVal08
RetN
VideVal08:
Call Clear_Val
RetN
Hex16:
Mov Di,Word Ptr Cs:WhereXY
Cmp Di,Word Ptr Cs:CurrentXY
JG Hex16CurrentGoal
Mov Di,Word Ptr Cs:CurrentXY
Add Di,2
Hex16CurrentGoal:
Mov Bx,0B800h
Mov Es,Bx
Mov Ah,Cl
Mov Bx,Word Ptr Cs:[ReadData16]
Mov Bl,Bh
And Bx,0F0h
Shr Bl,4
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData16]
Mov Bl,Bh
And Bx,0Fh
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData16]
And Bx,0F0h
Shr Bl,4
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData16]
And Bx,0Fh
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Cl,Ch
Xor Ch,Ch
Mov Word Ptr Cs:[CurrentXY],Di
Add Word Ptr Cs:WhereXY,Cx
Cmp Cx,0
Jg VideVal16
RetN
VideVal16:
Call Clear_Val
RetN
Hex32:
Mov Di,Word Ptr Cs:WhereXY
Cmp Di,Word Ptr Cs:CurrentXY
JG Hex16CurrentGoal
Mov Di,Word Ptr Cs:CurrentXY
Add Di,2
Hex32CurrentGoal:
Mov Bx,0B800h
Mov Es,Bx
Mov Ah,Cl
Mov Bx,Word Ptr Cs:[ReadData32]
Mov Bl,Bh
And Bx,0F0h
Shr Bl,4
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData32]
Mov Bl,Bh
And Bx,0Fh
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData32]
And Bx,0F0h
Shr Bl,4
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData32]
And Bx,0Fh
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData32]+[2]
Mov Bl,Bh
And Bx,0F0h
Shr Bl,4
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData32]+[2]
Mov Bl,Bh
And Bx,0Fh
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData32]+[2]
And Bx,0F0h
Shr Bl,4
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Bx,Word Ptr Cs:[ReadData32]+[2]
And Bx,0Fh
Mov Al,Byte Ptr Cs:[Plug][Bx]
StosW ; Affichage
Mov Cl,Ch
Xor Ch,Ch
Mov Word Ptr Cs:[CurrentXY],Di
Add Word Ptr Cs:WhereXY,Cx
Cmp Cx,0
Jg VideVal32
RetN
VideVal32:
Call Clear_Val
RetN
Virgule:
Mov Bx,0B800h
Mov Es,Bx
Mov Di,CurrentXY
Mov Ah,Cl
Mov Al,','
Stosw
Mov Word Ptr Cs:[CurrentXY],Di
RetN
ReadOne: ; Lecture Standart d'un Octet
Push Es ;
Push Di ;
Push Ax ;
Mov Di,Word Ptr ReadSeg ;
Mov Es,Di ;
Mov Di,Word Ptr ReadOfs ;
Mov Al,Byte Ptr Es:[Di] ;
Mov Byte Ptr ReadData08,Al ; Stockage Dans ReadData08
Inc Di
Mov Word Ptr ReadOfs,Di
Pop Ax ;
Pop Di ;
Pop Es ;
RetN ;
Read16: ; Lecture Standart deux Octets
Push Es ;
Push Di ;
Push Ax
Mov Di,Word Ptr ReadSeg ;
Mov Es,Di ;
Mov Di,Word Ptr ReadOfs ;
Mov Ax,Word Ptr Es:[Di] ;
Mov Word Ptr ReadData16,Ax ; Stockage Dans ReadData16
Add Di,2
Mov Word Ptr ReadOfs,Di
Pop Ax
Pop Di ;
Pop Es ;
RetN ;
Read32: ; Lecture Standart deux Octets
Push Es ;
Push Di ;
Push Ax
Mov Di,Word Ptr ReadSeg ;
Mov Es,Di ;
Mov Di,Word Ptr ReadOfs ;
Mov Ax,Word Ptr Es:[Di] ;
Mov Word Ptr [ReadData32]+[2],Ax ; Stockage Dans ReadData16
Add Di,2
Mov Ax,Word Ptr Es:[Di] ;
Mov Word Ptr [ReadData32],Ax ; Stockage Dans ReadData16
Add Di,2
Mov Word Ptr ReadOfs,Di
Pop Ax
Pop Di ;
Pop Es ;
RetN ;
SeekList:
Xor bx,bx ; Mise En Clair de L'opcode
Mov bl,Byte Ptr ReadData08 ;
Shl bx,1 ; * 2 ;
Add bx,Offset OpListe1 ;
Mov Al,Byte Ptr Cs:[bx] ;
Xor Ah,Ah ;
Mov Cx,0000Bh ;
Call Xdisplay ;
Push Ds
Pop Es
Xor bx,bx ; Lancement de la routine
Mov bl,Byte Ptr ReadData08 ; Associe a L'opcode en Question
Shl bx,1 ; * 2 ;
Add bx,Offset OpListe1 ; OpListe1 Base de travail
Mov Al,Byte Ptr Cs:[bx][1] ;
Xor Ah,Ah ;
; Dans Ax L'index de Fonction
Mov Bx,Ax
Shl Bx,1
Add Bx,Offset OpFunc
Mov Ax,Word Ptr CS:[Bx]
Call Word Ptr Cs:[Bx]
RetN
Clear_Val:
Mov Word Ptr ReadData16,0
Mov Dword Ptr ReadData32,0
Mov Byte Ptr Val_Sreg,0
Mov Byte Ptr Val_D,0
Mov Byte Ptr Val_W,0
Mov Byte Ptr Val_Mod,0
Mov Byte Ptr Val_mr,0
Mov Byte Ptr Val_Dep,0
Mov Byte Ptr Val_OpeSize,0
Mov Byte Ptr Val_AdrSize,0
RetN
Demarre:
Comment#
Mov Al , Cl
Mov Eax,012345678h
Mov Ebx,03h
Mov Al ,12h
Dec Eax
Comment#
And Al,16
And Ax,160*23
Cmp Al,16
Cmp Ax,160*23
Cmp Byte Ptr [Bx][Val_w],Dl
Mov Ax,03h
Int 10h
Mov Word Ptr ReadSeg,Cs
Mov Ax,Offset Demarre
Mov Word Ptr ReadOfs,Ax
Call Clear_Val
Lire: ; Effectue la lecture
Call ReadOne ; d'une page
Call SeekList ; soit 23 Lignes de Texte
Mov Ax,Word Ptr WhereXy ;
Cmp Ax,160*23 ;
Jle Lire ;
Mov Ax,0200h
Mov Bx,0000h
Mov Dx,1700h
Int 10h
Int 20h;
EndS
End StartHere
Conclusion :
le code affiché correspond au label
Demarre:
And Al,16
And Ax,160*23
Cmp Al,16
Cmp Ax,160*23
Cmp Byte Ptr [Bx][Val_w],Dl
Mov Ax,03h
Int 10h
Mov Word Ptr ReadSeg,Cs
Mov Ax,Offset Demarre
Mov Word Ptr ReadOfs,Ax
ect...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.