📄 fxemu2c.asm
字号:
seto byte[SfxOverflow]
setc byte[SfxCarry]
xor byte[SfxCarry],1
mov [SfxSignZero],eax
CLRFLAGS
inc ebp ; Increase program counter
FXReturn
NEWSYM FxOpd70 ; MERGE R7 as upper byte, R8 as lower byte (used for texture-mapping) */
; V
xor eax,eax
FETCHPIPE
mov ah,byte [SfxR7+1]
mov al,byte [SfxR8+1]
inc ebp
mov [edi],eax ; Write Destination
mov dword[SfxSignZero],0001h
test eax,0F0F0h
jz .nozero
mov dword[SfxSignZero],0000h
.nozero
test eax,08080h
jz .nosign
or dword [SfxSignZero],80000h
.nosign
mov dword [SfxOverflow],1
test ax,0c0c0h
jnz .Overflow
mov dword [SfxOverflow],0
.Overflow
mov dword [SfxCarry],1
test ax,0e0e0h
jnz .Carry
mov dword [SfxCarry],0
.Carry
CLRFLAGS
FXReturn
NEWSYM FxOpd71 ; AND RN register & register
ANDRNc 1
NEWSYM FxOpd72 ; AND RN register & register
ANDRNc 2
NEWSYM FxOpd73 ; AND RN register & register
ANDRNc 3
NEWSYM FxOpd74 ; AND RN register & register
ANDRNc 4
NEWSYM FxOpd75 ; AND RN register & register
ANDRNc 5
NEWSYM FxOpd76 ; AND RN register & register
ANDRNc 6
NEWSYM FxOpd77 ; AND RN register & register
ANDRNc 7
NEWSYM FxOpd78 ; AND RN register & register
ANDRNc 8
NEWSYM FxOpd79 ; AND RN register & register
ANDRNc 9
NEWSYM FxOpd7A ; AND RN register & register
ANDRNc 10
NEWSYM FxOpd7B ; AND RN register & register
ANDRNc 11
NEWSYM FxOpd7C ; AND RN register & register
ANDRNc 12
NEWSYM FxOpd7D ; AND RN register & register
ANDRNc 13
NEWSYM FxOpd7E ; AND RN register & register
ANDRNc 14
NEWSYM FxOpd7F ; AND RN register & register
FETCHPIPE
mov eax,[esi] ; Read Source
mov ebx,ebp
sub ebx,[SfxCPB]
and eax,ebx
inc ebp
mov dword [SfxSignZero],eax
mov [edi],eax ; Write Destination
CLRFLAGS
FXReturn
NEWSYM FxOpd71A1 ; BIC RN register & ~register
BICRNc 1
NEWSYM FxOpd72A1 ; BIC RN register & ~register
BICRNc 2
NEWSYM FxOpd73A1 ; BIC RN register & ~register
BICRNc 3
NEWSYM FxOpd74A1 ; BIC RN register & ~register
BICRNc 4
NEWSYM FxOpd75A1 ; BIC RN register & ~register
BICRNc 5
NEWSYM FxOpd76A1 ; BIC RN register & ~register
BICRNc 6
NEWSYM FxOpd77A1 ; BIC RN register & ~register
BICRNc 7
NEWSYM FxOpd78A1 ; BIC RN register & ~register
BICRNc 8
NEWSYM FxOpd79A1 ; BIC RN register & ~register
BICRNc 9
NEWSYM FxOpd7AA1 ; BIC RN register & ~register
BICRNc 10
NEWSYM FxOpd7BA1 ; BIC RN register & ~register
BICRNc 11
NEWSYM FxOpd7CA1 ; BIC RN register & ~register
BICRNc 12
NEWSYM FxOpd7DA1 ; BIC RN register & ~register
BICRNc 13
NEWSYM FxOpd7EA1 ; BIC RN register & ~register
BICRNc 14
NEWSYM FxOpd7FA1 ; BIC RN register & ~register
FETCHPIPE
mov ebx,ebp
sub ebx,[SfxCPB]
mov eax,[esi] ; Read Source
xor ebx,0FFFFh
and eax,ebx
inc ebp
mov dword [SfxSignZero],eax
mov [edi],eax ; Write Destination
CLRFLAGS
FXReturn
NEWSYM FxOpd71A2 ; ANDIRNc and #n - register & immediate
ANDIRNc 1
NEWSYM FxOpd72A2 ; ANDIRNc and #n - register & immediate
ANDIRNc 2
NEWSYM FxOpd73A2 ; ANDIRNc and #n - register & immediate
ANDIRNc 3
NEWSYM FxOpd74A2 ; ANDIRNc and #n - register & immediate
ANDIRNc 4
NEWSYM FxOpd75A2 ; ANDIRNc and #n - register & immediate
ANDIRNc 5
NEWSYM FxOpd76A2 ; ANDIRNc and #n - register & immediate
ANDIRNc 6
NEWSYM FxOpd77A2 ; ANDIRNc and #n - register & immediate
ANDIRNc 7
NEWSYM FxOpd78A2 ; ANDIRNc and #n - register & immediate
ANDIRNc 8
NEWSYM FxOpd79A2 ; ANDIRNc and #n - register & immediate
ANDIRNc 9
NEWSYM FxOpd7AA2 ; ANDIRNc and #n - register & immediate
ANDIRNc 10
NEWSYM FxOpd7BA2 ; ANDIRNc and #n - register & immediate
ANDIRNc 11
NEWSYM FxOpd7CA2 ; ANDIRNc and #n - register & immediate
ANDIRNc 12
NEWSYM FxOpd7DA2 ; ANDIRNc and #n - register & immediate
ANDIRNc 13
NEWSYM FxOpd7EA2 ; ANDIRNc and #n - register & immediate
ANDIRNc 14
NEWSYM FxOpd7FA2 ; ANDIRNc and #n - register & immediate
ANDIRNc 15
NEWSYM FxOpd71A3 ; BICIRNc register & ~immediate
BICIRNc 1 ^ 0FFFFh
NEWSYM FxOpd72A3 ; BICIRNc register & ~immediate
BICIRNc 2 ^ 0FFFFh
NEWSYM FxOpd73A3 ; BICIRNc register & ~immediate
BICIRNc 3 ^ 0FFFFh
NEWSYM FxOpd74A3 ; BICIRNc register & ~immediate
BICIRNc 4 ^ 0FFFFh
NEWSYM FxOpd75A3 ; BICIRNc register & ~immediate
BICIRNc 5 ^ 0FFFFh
NEWSYM FxOpd76A3 ; BICIRNc register & ~immediate
BICIRNc 6 ^ 0FFFFh
NEWSYM FxOpd77A3 ; BICIRNc register & ~immediate
BICIRNc 7 ^ 0FFFFh
NEWSYM FxOpd78A3 ; BICIRNc register & ~immediate
BICIRNc 8 ^ 0FFFFh
NEWSYM FxOpd79A3 ; BICIRNc register & ~immediate
BICIRNc 9 ^ 0FFFFh
NEWSYM FxOpd7AA3 ; BICIRNc register & ~immediate
BICIRNc 10 ^ 0FFFFh
NEWSYM FxOpd7BA3 ; BICIRNc register & ~immediate
BICIRNc 11 ^ 0FFFFh
NEWSYM FxOpd7CA3 ; BICIRNc register & ~immediate
BICIRNc 12 ^ 0FFFFh
NEWSYM FxOpd7DA3 ; BICIRNc register & ~immediate
BICIRNc 13 ^ 0FFFFh
NEWSYM FxOpd7EA3 ; BICIRNc register & ~immediate
BICIRNc 14 ^ 0FFFFh
NEWSYM FxOpd7FA3 ; BICIRNc register & ~immediate
BICIRNc 15 ^ 0FFFFh
NEWSYM FxOpd80 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 0
NEWSYM FxOpd81 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 1
NEWSYM FxOpd82 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 2
NEWSYM FxOpd83 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 3
NEWSYM FxOpd84 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 4
NEWSYM FxOpd85 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 5
NEWSYM FxOpd86 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 6
NEWSYM FxOpd87 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 7
NEWSYM FxOpd88 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 8
NEWSYM FxOpd89 ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 9
NEWSYM FxOpd8A ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 10
NEWSYM FxOpd8B ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 11
NEWSYM FxOpd8C ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 12
NEWSYM FxOpd8D ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 13
NEWSYM FxOpd8E ; MULTRNc 8 bit to 16 bit signed multiply, register * register
MULTRNc 14
NEWSYM FxOpd8F ; MULTRNc 8 bit to 16 bit signed multiply, register * register
FETCHPIPE
mov ebx,ebp
mov al,byte [esi] ; Read Source
sub ebx,[SfxCPB]
imul bl
inc ebp
and eax,0FFFFh
mov [SfxSignZero],eax
mov [edi],eax ; Write Destination
CLRFLAGS
FXReturn
NEWSYM FxOpd80A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 0
NEWSYM FxOpd81A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 1
NEWSYM FxOpd82A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 2
NEWSYM FxOpd83A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 3
NEWSYM FxOpd84A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 4
NEWSYM FxOpd85A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 5
NEWSYM FxOpd86A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 6
NEWSYM FxOpd87A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 7
NEWSYM FxOpd88A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 8
NEWSYM FxOpd89A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 9
NEWSYM FxOpd8AA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 10
NEWSYM FxOpd8BA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 11
NEWSYM FxOpd8CA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 12
NEWSYM FxOpd8DA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 13
NEWSYM FxOpd8EA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRNc 14
NEWSYM FxOpd8FA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
FETCHPIPE
mov ebx,ebp
mov al,byte [esi] ; Read Source
sub ebx,[SfxCPB]
mul bl
inc ebp
and eax,0FFFFh
mov [SfxSignZero],eax
mov [edi],eax ; Write Destination
CLRFLAGS
FXReturn
NEWSYM FxOpd80A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 0
NEWSYM FxOpd81A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 1
NEWSYM FxOpd82A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 2
NEWSYM FxOpd83A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 3
NEWSYM FxOpd84A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 4
NEWSYM FxOpd85A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 5
NEWSYM FxOpd86A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 6
NEWSYM FxOpd87A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 7
NEWSYM FxOpd88A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 8
NEWSYM FxOpd89A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 9
NEWSYM FxOpd8AA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 10
NEWSYM FxOpd8BA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 11
NEWSYM FxOpd8CA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 12
NEWSYM FxOpd8DA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 13
NEWSYM FxOpd8EA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 14
NEWSYM FxOpd8FA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRNc 15
NEWSYM FxOpd80A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 0
NEWSYM FxOpd81A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 1
NEWSYM FxOpd82A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 2
NEWSYM FxOpd83A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 3
NEWSYM FxOpd84A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 4
NEWSYM FxOpd85A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 5
NEWSYM FxOpd86A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 6
NEWSYM FxOpd87A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 7
NEWSYM FxOpd88A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 8
NEWSYM FxOpd89A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 9
NEWSYM FxOpd8AA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 10
NEWSYM FxOpd8BA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 11
NEWSYM FxOpd8CA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 12
NEWSYM FxOpd8DA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 13
NEWSYM FxOpd8EA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 14
NEWSYM FxOpd8FA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRNc 15
NEWSYM FxOpd90 ; SBK store word to last accessed RAM address ; V
mov ebx,[SfxLastRamAdr] ; Load last ram address
mov eax,[esi] ; Read Source
FETCHPIPE
mov [ebx],al ; Store Word
sub ebx,[SfxRAMMem]
xor ebx,1
add ebx,[SfxRAMMem]
inc ebp ; Increase program counter
mov [ebx],ah ; Store Word
CLRFLAGS
FXReturn
NEWSYM FxOpd91 ; LINKc#n R11 = R15 + immediate
LINKc 1
NEWSYM FxOpd92 ; LINKc#n R11 = R15 + immediate
LINKc 2
NEWSYM FxOpd93 ; LINKc#n R11 = R15 + immediate
LINKc 3
NEWSYM FxOpd94 ; LINKc#n R11 = R15 + immediate
LINKc 4
NEWSYM FxOpd95 ; SEX sign extend 8 bit to 16 bit ; V
movsx eax, byte [esi] ; Read Source
FETCHPIPE
and eax,0FFFFh
inc ebp
mov [edi],eax ; Write Destination
mov [SfxSignZero],eax
CLRFLAGS
FXReturn
NEWSYM FxOpd96 ; ASR aritmethic shift right by one ; V
mov eax,[esi] ; Read Source
FETCHPIPE
mov [SfxCarry],al
and byte[SfxCarry],1
sar ax,1 ; logic shift right
inc ebp ; Increase program counter
mov [edi],eax ; Write Destination
mov dword [SfxSignZero],eax
CLRFLAGS
FXReturn
NEWSYM FxOpd96A1 ; DIV2 aritmethic shift right by one ; V
mov eax,[esi] ; Read Source
FETCHPIPE
cmp ax,-1
je .minusone
mov [SfxCarry],al
and byte[SfxCarry],1
sar ax,1 ; logic shift right
inc ebp ; Increase program counter
mov [edi],eax ; Write Destination
mov dword [SfxSignZero],eax
CLRFLAGS
FXReturn
.minusone
mov byte[SfxCarry],1
xor eax,eax
inc ebp ; Increase program counter
mov [edi],eax ; Write Destination
mov dword [SfxSignZero],eax
CLRFLAGS
FXReturn
NEWSYM FxOpd97 ; ROR rotate right by one ; V
FETCHPIPE
mov eax,[esi] ; Read Source
shr byte[SfxCarry],1
rcr ax,1
setc byte[SfxCarry]
inc ebp ; Increase program counter
mov [edi],eax ; Write Destination
mov [SfxSignZero],eax
CLRFLAGS
FXReturn
NEWSYM FxOpd98 ; JMPRNc jump to address of register
JMPRNc 8
NEWSYM FxOpd99 ; JMPRNc jump to address of register
JMPRNc 9
NEWSYM FxOpd9A ; JMPRNc jump to address of register
JMPRNc 10
NEWSYM FxOpd9B ; JMPRNc jump to address of register
JMPRNc 11
NEWSYM FxOpd9C ; JMPRNc jump to address of register
JMPRNc 12
NEWSYM FxOpd9D ; JMPRNc jump to address of register
JMPRNc 13
NEWSYM FxOpd98A1 ; LJMPRNc set program bank to source register and jump to address of register
LJMPRNc 8
NEWSYM FxOpd99A1 ; LJMPRNc set program bank to source register and jump to address of register
LJMPRNc 9
NEWSYM FxOpd9AA1 ; LJMPRNc set program bank to source register and jump to address of register
LJMPRNc 10
NEWSYM FxOpd9BA1 ; LJMPRNc set program bank to source register and jump to address of register
LJMPRNc 11
NEWSYM FxOpd9CA1 ; LJMPRNc set program bank to source register and jump to address of register
LJMPRNc 12
NEWSYM FxOpd9DA1 ; LJMPRNc set program bank to source register and jump to address of register
LJMPRNc 13
NEWSYM FxOpd9E ; LOB set upper byte to zero (keep low byte) ; V
mov eax,[esi] ; Read Source
FETCHPIPE
and eax,0FFh
inc ebp
mov [edi],eax ; Write Destination
shl eax,8
mov dword [SfxSignZero],eax
CLRFLAGS
FXReturn
NEWSYM FxOpd9F ; FMULT 16 bit to 32 bit signed multiplication, upper 16 bits only
; V
mov eax,[esi] ; Read Source
mov ebx,[SfxR6]
FETCHPIPE
imul bx
inc ebp
and edx,0FFFFh
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -