📄 fxemu2.asm
字号:
SBCRN 14
NEWSYM FxOp6FA1 ; SBCRN subtract with carry, register - register
mov eax,[esi] ; Read Source
mov ebx,ebp
FETCHPIPE
sub ebx,[SfxCPB]
cmp byte[SfxCarry],1
sbb ax,bx
seto byte[SfxOverflow]
setc byte[SfxCarry]
xor byte[SfxCarry],1
inc ebp ; Increase program counter
mov [edi],eax ; Write Destination
mov [SfxSignZero],eax
CLRFLAGS
ret
NEWSYM FxOp60A2 ; SUBIRN subtract, register - immediate
SUBIRN 0
NEWSYM FxOp61A2 ; SUBIRN subtract, register - immediate
SUBIRN 1
NEWSYM FxOp62A2 ; SUBIRN subtract, register - immediate
SUBIRN 2
NEWSYM FxOp63A2 ; SUBIRN subtract, register - immediate
SUBIRN 3
NEWSYM FxOp64A2 ; SUBIRN subtract, register - immediate
SUBIRN 4
NEWSYM FxOp65A2 ; SUBIRN subtract, register - immediate
SUBIRN 5
NEWSYM FxOp66A2 ; SUBIRN subtract, register - immediate
SUBIRN 6
NEWSYM FxOp67A2 ; SUBIRN subtract, register - immediate
SUBIRN 7
NEWSYM FxOp68A2 ; SUBIRN subtract, register - immediate
SUBIRN 8
NEWSYM FxOp69A2 ; SUBIRN subtract, register - immediate
SUBIRN 9
NEWSYM FxOp6AA2 ; SUBIRN subtract, register - immediate
SUBIRN 10
NEWSYM FxOp6BA2 ; SUBIRN subtract, register - immediate
SUBIRN 11
NEWSYM FxOp6CA2 ; SUBIRN subtract, register - immediate
SUBIRN 12
NEWSYM FxOp6DA2 ; SUBIRN subtract, register - immediate
SUBIRN 13
NEWSYM FxOp6EA2 ; SUBIRN subtract, register - immediate
SUBIRN 14
NEWSYM FxOp6FA2 ; SUBIRN subtract, register - immediate
SUBIRN 15
NEWSYM FxOp60A3 ; CMPRN compare, register, register
CMPRN 0
NEWSYM FxOp61A3 ; CMPRN compare, register, register
CMPRN 1
NEWSYM FxOp62A3 ; CMPRN compare, register, register
CMPRN 2
NEWSYM FxOp63A3 ; CMPRN compare, register, register
CMPRN 3
NEWSYM FxOp64A3 ; CMPRN compare, register, register
CMPRN 4
NEWSYM FxOp65A3 ; CMPRN compare, register, register
CMPRN 5
NEWSYM FxOp66A3 ; CMPRN compare, register, register
CMPRN 6
NEWSYM FxOp67A3 ; CMPRN compare, register, register
CMPRN 7
NEWSYM FxOp68A3 ; CMPRN compare, register, register
CMPRN 8
NEWSYM FxOp69A3 ; CMPRN compare, register, register
CMPRN 9
NEWSYM FxOp6AA3 ; CMPRN compare, register, register
CMPRN 10
NEWSYM FxOp6BA3 ; CMPRN compare, register, register
CMPRN 11
NEWSYM FxOp6CA3 ; CMPRN compare, register, register
CMPRN 12
NEWSYM FxOp6DA3 ; CMPRN compare, register, register
CMPRN 13
NEWSYM FxOp6EA3 ; CMPRN compare, register, register
CMPRN 14
NEWSYM FxOp6FA3 ; CMPRN compare, register, register
FETCHPIPE
mov eax,[esi] ; Read Source
mov ebx,ebp
sub ebx,[SfxCPB]
sub ax,bx
seto byte[SfxOverflow]
setc byte[SfxCarry]
xor byte[SfxCarry],1
mov [SfxSignZero],eax
CLRFLAGS
inc ebp ; Increase program counter
ret
NEWSYM FxOp70 ; 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
ret
NEWSYM FxOp71 ; AND RN register & register
ANDRN 1
NEWSYM FxOp72 ; AND RN register & register
ANDRN 2
NEWSYM FxOp73 ; AND RN register & register
ANDRN 3
NEWSYM FxOp74 ; AND RN register & register
ANDRN 4
NEWSYM FxOp75 ; AND RN register & register
ANDRN 5
NEWSYM FxOp76 ; AND RN register & register
ANDRN 6
NEWSYM FxOp77 ; AND RN register & register
ANDRN 7
NEWSYM FxOp78 ; AND RN register & register
ANDRN 8
NEWSYM FxOp79 ; AND RN register & register
ANDRN 9
NEWSYM FxOp7A ; AND RN register & register
ANDRN 10
NEWSYM FxOp7B ; AND RN register & register
ANDRN 11
NEWSYM FxOp7C ; AND RN register & register
ANDRN 12
NEWSYM FxOp7D ; AND RN register & register
ANDRN 13
NEWSYM FxOp7E ; AND RN register & register
ANDRN 14
NEWSYM FxOp7F ; 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
ret
NEWSYM FxOp71A1 ; BIC RN register & ~register
BICRN 1
NEWSYM FxOp72A1 ; BIC RN register & ~register
BICRN 2
NEWSYM FxOp73A1 ; BIC RN register & ~register
BICRN 3
NEWSYM FxOp74A1 ; BIC RN register & ~register
BICRN 4
NEWSYM FxOp75A1 ; BIC RN register & ~register
BICRN 5
NEWSYM FxOp76A1 ; BIC RN register & ~register
BICRN 6
NEWSYM FxOp77A1 ; BIC RN register & ~register
BICRN 7
NEWSYM FxOp78A1 ; BIC RN register & ~register
BICRN 8
NEWSYM FxOp79A1 ; BIC RN register & ~register
BICRN 9
NEWSYM FxOp7AA1 ; BIC RN register & ~register
BICRN 10
NEWSYM FxOp7BA1 ; BIC RN register & ~register
BICRN 11
NEWSYM FxOp7CA1 ; BIC RN register & ~register
BICRN 12
NEWSYM FxOp7DA1 ; BIC RN register & ~register
BICRN 13
NEWSYM FxOp7EA1 ; BIC RN register & ~register
BICRN 14
NEWSYM FxOp7FA1 ; 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
ret
NEWSYM FxOp71A2 ; ANDIRN and #n - register & immediate
ANDIRN 1
NEWSYM FxOp72A2 ; ANDIRN and #n - register & immediate
ANDIRN 2
NEWSYM FxOp73A2 ; ANDIRN and #n - register & immediate
ANDIRN 3
NEWSYM FxOp74A2 ; ANDIRN and #n - register & immediate
ANDIRN 4
NEWSYM FxOp75A2 ; ANDIRN and #n - register & immediate
ANDIRN 5
NEWSYM FxOp76A2 ; ANDIRN and #n - register & immediate
ANDIRN 6
NEWSYM FxOp77A2 ; ANDIRN and #n - register & immediate
ANDIRN 7
NEWSYM FxOp78A2 ; ANDIRN and #n - register & immediate
ANDIRN 8
NEWSYM FxOp79A2 ; ANDIRN and #n - register & immediate
ANDIRN 9
NEWSYM FxOp7AA2 ; ANDIRN and #n - register & immediate
ANDIRN 10
NEWSYM FxOp7BA2 ; ANDIRN and #n - register & immediate
ANDIRN 11
NEWSYM FxOp7CA2 ; ANDIRN and #n - register & immediate
ANDIRN 12
NEWSYM FxOp7DA2 ; ANDIRN and #n - register & immediate
ANDIRN 13
NEWSYM FxOp7EA2 ; ANDIRN and #n - register & immediate
ANDIRN 14
NEWSYM FxOp7FA2 ; ANDIRN and #n - register & immediate
ANDIRN 15
NEWSYM FxOp71A3 ; BICIRN register & ~immediate
BICIRN 1 ^ 0FFFFh
NEWSYM FxOp72A3 ; BICIRN register & ~immediate
BICIRN 2 ^ 0FFFFh
NEWSYM FxOp73A3 ; BICIRN register & ~immediate
BICIRN 3 ^ 0FFFFh
NEWSYM FxOp74A3 ; BICIRN register & ~immediate
BICIRN 4 ^ 0FFFFh
NEWSYM FxOp75A3 ; BICIRN register & ~immediate
BICIRN 5 ^ 0FFFFh
NEWSYM FxOp76A3 ; BICIRN register & ~immediate
BICIRN 6 ^ 0FFFFh
NEWSYM FxOp77A3 ; BICIRN register & ~immediate
BICIRN 7 ^ 0FFFFh
NEWSYM FxOp78A3 ; BICIRN register & ~immediate
BICIRN 8 ^ 0FFFFh
NEWSYM FxOp79A3 ; BICIRN register & ~immediate
BICIRN 9 ^ 0FFFFh
NEWSYM FxOp7AA3 ; BICIRN register & ~immediate
BICIRN 10 ^ 0FFFFh
NEWSYM FxOp7BA3 ; BICIRN register & ~immediate
BICIRN 11 ^ 0FFFFh
NEWSYM FxOp7CA3 ; BICIRN register & ~immediate
BICIRN 12 ^ 0FFFFh
NEWSYM FxOp7DA3 ; BICIRN register & ~immediate
BICIRN 13 ^ 0FFFFh
NEWSYM FxOp7EA3 ; BICIRN register & ~immediate
BICIRN 14 ^ 0FFFFh
NEWSYM FxOp7FA3 ; BICIRN register & ~immediate
BICIRN 15 ^ 0FFFFh
NEWSYM FxOp80 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 0
NEWSYM FxOp81 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 1
NEWSYM FxOp82 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 2
NEWSYM FxOp83 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 3
NEWSYM FxOp84 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 4
NEWSYM FxOp85 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 5
NEWSYM FxOp86 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 6
NEWSYM FxOp87 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 7
NEWSYM FxOp88 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 8
NEWSYM FxOp89 ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 9
NEWSYM FxOp8A ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 10
NEWSYM FxOp8B ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 11
NEWSYM FxOp8C ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 12
NEWSYM FxOp8D ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 13
NEWSYM FxOp8E ; MULTRN 8 bit to 16 bit signed multiply, register * register
MULTRN 14
NEWSYM FxOp8F ; MULTRN 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
ret
NEWSYM FxOp80A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 0
NEWSYM FxOp81A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 1
NEWSYM FxOp82A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 2
NEWSYM FxOp83A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 3
NEWSYM FxOp84A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 4
NEWSYM FxOp85A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 5
NEWSYM FxOp86A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 6
NEWSYM FxOp87A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 7
NEWSYM FxOp88A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 8
NEWSYM FxOp89A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 9
NEWSYM FxOp8AA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 10
NEWSYM FxOp8BA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 11
NEWSYM FxOp8CA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 12
NEWSYM FxOp8DA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 13
NEWSYM FxOp8EA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
UMULTRN 14
NEWSYM FxOp8FA1 ; 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
ret
NEWSYM FxOp80A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 0
NEWSYM FxOp81A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 1
NEWSYM FxOp82A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 2
NEWSYM FxOp83A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 3
NEWSYM FxOp84A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 4
NEWSYM FxOp85A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 5
NEWSYM FxOp86A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 6
NEWSYM FxOp87A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 7
NEWSYM FxOp88A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 8
NEWSYM FxOp89A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 9
NEWSYM FxOp8AA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 10
NEWSYM FxOp8BA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 11
NEWSYM FxOp8CA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 12
NEWSYM FxOp8DA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 13
NEWSYM FxOp8EA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 14
NEWSYM FxOp8FA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
MULTIRN 15
NEWSYM FxOp80A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 0
NEWSYM FxOp81A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 1
NEWSYM FxOp82A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 2
NEWSYM FxOp83A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 3
NEWSYM FxOp84A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 4
NEWSYM FxOp85A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 5
NEWSYM FxOp86A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 6
NEWSYM FxOp87A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 7
NEWSYM FxOp88A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 8
NEWSYM FxOp89A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 9
NEWSYM FxOp8AA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 10
NEWSYM FxOp8BA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 11
NEWSYM FxOp8CA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 12
NEWSYM FxOp8DA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 13
NEWSYM FxOp8EA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 14
NEWSYM FxOp8FA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
UMULTIRN 15
NEWSYM FxOp90 ; 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
ret
NEWSYM FxOp91 ; LINK#n R11 = R15 + immediate
LINK 1
NEWSYM FxOp92 ; LINK#n R11 = R15 + immediate
LINK 2
NEWSYM FxOp93 ; LINK#n R11 = R15 + immediate
LINK 3
NEWSYM FxOp94 ; LINK#n R11 = R15 + immediate
LINK 4
NEWSYM FxOp95 ; 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
ret
NEWSYM FxOp96 ; 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -