📄 fxemu2.asm
字号:
NEWSYM FxOp64A3 ; CMPRN compare, register, register CMPRN 4NEWSYM FxOp65A3 ; CMPRN compare, register, register CMPRN 5NEWSYM FxOp66A3 ; CMPRN compare, register, register CMPRN 6NEWSYM FxOp67A3 ; CMPRN compare, register, register CMPRN 7NEWSYM FxOp68A3 ; CMPRN compare, register, register CMPRN 8NEWSYM FxOp69A3 ; CMPRN compare, register, register CMPRN 9NEWSYM FxOp6AA3 ; CMPRN compare, register, register CMPRN 10NEWSYM FxOp6BA3 ; CMPRN compare, register, register CMPRN 11NEWSYM FxOp6CA3 ; CMPRN compare, register, register CMPRN 12NEWSYM FxOp6DA3 ; CMPRN compare, register, register CMPRN 13NEWSYM FxOp6EA3 ; CMPRN compare, register, register CMPRN 14NEWSYM 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 retNEWSYM 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 retNEWSYM FxOp71 ; AND RN register & register ANDRN 1NEWSYM FxOp72 ; AND RN register & register ANDRN 2NEWSYM FxOp73 ; AND RN register & register ANDRN 3NEWSYM FxOp74 ; AND RN register & register ANDRN 4NEWSYM FxOp75 ; AND RN register & register ANDRN 5NEWSYM FxOp76 ; AND RN register & register ANDRN 6NEWSYM FxOp77 ; AND RN register & register ANDRN 7NEWSYM FxOp78 ; AND RN register & register ANDRN 8NEWSYM FxOp79 ; AND RN register & register ANDRN 9NEWSYM FxOp7A ; AND RN register & register ANDRN 10NEWSYM FxOp7B ; AND RN register & register ANDRN 11NEWSYM FxOp7C ; AND RN register & register ANDRN 12NEWSYM FxOp7D ; AND RN register & register ANDRN 13NEWSYM FxOp7E ; AND RN register & register ANDRN 14NEWSYM 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 retNEWSYM FxOp71A1 ; BIC RN register & ~register BICRN 1NEWSYM FxOp72A1 ; BIC RN register & ~register BICRN 2NEWSYM FxOp73A1 ; BIC RN register & ~register BICRN 3NEWSYM FxOp74A1 ; BIC RN register & ~register BICRN 4NEWSYM FxOp75A1 ; BIC RN register & ~register BICRN 5NEWSYM FxOp76A1 ; BIC RN register & ~register BICRN 6NEWSYM FxOp77A1 ; BIC RN register & ~register BICRN 7NEWSYM FxOp78A1 ; BIC RN register & ~register BICRN 8NEWSYM FxOp79A1 ; BIC RN register & ~register BICRN 9NEWSYM FxOp7AA1 ; BIC RN register & ~register BICRN 10NEWSYM FxOp7BA1 ; BIC RN register & ~register BICRN 11NEWSYM FxOp7CA1 ; BIC RN register & ~register BICRN 12NEWSYM FxOp7DA1 ; BIC RN register & ~register BICRN 13NEWSYM FxOp7EA1 ; BIC RN register & ~register BICRN 14NEWSYM 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 retNEWSYM FxOp71A2 ; ANDIRN and #n - register & immediate ANDIRN 1NEWSYM FxOp72A2 ; ANDIRN and #n - register & immediate ANDIRN 2NEWSYM FxOp73A2 ; ANDIRN and #n - register & immediate ANDIRN 3NEWSYM FxOp74A2 ; ANDIRN and #n - register & immediate ANDIRN 4NEWSYM FxOp75A2 ; ANDIRN and #n - register & immediate ANDIRN 5NEWSYM FxOp76A2 ; ANDIRN and #n - register & immediate ANDIRN 6NEWSYM FxOp77A2 ; ANDIRN and #n - register & immediate ANDIRN 7NEWSYM FxOp78A2 ; ANDIRN and #n - register & immediate ANDIRN 8NEWSYM FxOp79A2 ; ANDIRN and #n - register & immediate ANDIRN 9NEWSYM FxOp7AA2 ; ANDIRN and #n - register & immediate ANDIRN 10NEWSYM FxOp7BA2 ; ANDIRN and #n - register & immediate ANDIRN 11NEWSYM FxOp7CA2 ; ANDIRN and #n - register & immediate ANDIRN 12NEWSYM FxOp7DA2 ; ANDIRN and #n - register & immediate ANDIRN 13NEWSYM FxOp7EA2 ; ANDIRN and #n - register & immediate ANDIRN 14NEWSYM FxOp7FA2 ; ANDIRN and #n - register & immediate ANDIRN 15NEWSYM FxOp71A3 ; BICIRN register & ~immediate BICIRN 1 ^ 0FFFFhNEWSYM FxOp72A3 ; BICIRN register & ~immediate BICIRN 2 ^ 0FFFFhNEWSYM FxOp73A3 ; BICIRN register & ~immediate BICIRN 3 ^ 0FFFFhNEWSYM FxOp74A3 ; BICIRN register & ~immediate BICIRN 4 ^ 0FFFFhNEWSYM FxOp75A3 ; BICIRN register & ~immediate BICIRN 5 ^ 0FFFFhNEWSYM FxOp76A3 ; BICIRN register & ~immediate BICIRN 6 ^ 0FFFFhNEWSYM FxOp77A3 ; BICIRN register & ~immediate BICIRN 7 ^ 0FFFFhNEWSYM FxOp78A3 ; BICIRN register & ~immediate BICIRN 8 ^ 0FFFFhNEWSYM FxOp79A3 ; BICIRN register & ~immediate BICIRN 9 ^ 0FFFFhNEWSYM FxOp7AA3 ; BICIRN register & ~immediate BICIRN 10 ^ 0FFFFhNEWSYM FxOp7BA3 ; BICIRN register & ~immediate BICIRN 11 ^ 0FFFFhNEWSYM FxOp7CA3 ; BICIRN register & ~immediate BICIRN 12 ^ 0FFFFhNEWSYM FxOp7DA3 ; BICIRN register & ~immediate BICIRN 13 ^ 0FFFFhNEWSYM FxOp7EA3 ; BICIRN register & ~immediate BICIRN 14 ^ 0FFFFhNEWSYM FxOp7FA3 ; BICIRN register & ~immediate BICIRN 15 ^ 0FFFFhNEWSYM 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 retNEWSYM FxOp80A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 0NEWSYM FxOp81A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 1NEWSYM FxOp82A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 2NEWSYM FxOp83A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 3NEWSYM FxOp84A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 4NEWSYM FxOp85A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 5NEWSYM FxOp86A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 6NEWSYM FxOp87A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 7NEWSYM FxOp88A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 8NEWSYM FxOp89A1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 9NEWSYM FxOp8AA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 10NEWSYM FxOp8BA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 11NEWSYM FxOp8CA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 12NEWSYM FxOp8DA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 13NEWSYM FxOp8EA1 ; UMULRN 8 bit to 16 bit unsigned multiply, register * register UMULTRN 14NEWSYM 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 retNEWSYM FxOp80A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 0NEWSYM FxOp81A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 1NEWSYM FxOp82A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 2NEWSYM FxOp83A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 3NEWSYM FxOp84A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 4NEWSYM FxOp85A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 5NEWSYM FxOp86A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 6NEWSYM FxOp87A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 7NEWSYM FxOp88A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 8NEWSYM FxOp89A2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 9NEWSYM FxOp8AA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 10NEWSYM FxOp8BA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 11NEWSYM FxOp8CA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 12NEWSYM FxOp8DA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 13NEWSYM FxOp8EA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 14NEWSYM FxOp8FA2 ; MULIRN 8 bit to 16 bit signed multiply, register * immediate MULTIRN 15NEWSYM FxOp80A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 0NEWSYM FxOp81A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 1NEWSYM FxOp82A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 2NEWSYM FxOp83A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 3NEWSYM FxOp84A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 4NEWSYM FxOp85A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 5NEWSYM FxOp86A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 6NEWSYM FxOp87A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 7NEWSYM FxOp88A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 8NEWSYM FxOp89A3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 9NEWSYM FxOp8AA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 10NEWSYM FxOp8BA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 11NEWSYM FxOp8CA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 12NEWSYM FxOp8DA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 13NEWSYM FxOp8EA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 14NEWSYM FxOp8FA3 ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate UMULTIRN 15NEWSYM 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 retNEWSYM FxOp91 ; LINK#n R11 = R15 + immediate LINK 1NEWSYM FxOp92 ; LINK#n R11 = R15 + immediate LINK 2NEWSYM FxOp93 ; LINK#n R11 = R15 + immediate LINK 3NEWSYM FxOp94 ; LINK#n R11 = R15 + immediate LINK 4NEWSYM 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 retNEWSYM 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 CLRFLAGS retNEWSYM FxOp96A1 ; 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 ret.minusone mov byte[SfxCarry],1 xor eax,eax inc ebp ; Increase program counter mov [edi],eax ; Write Destination mov dword [SfxSignZero],eax CLRFLAGS retNEWSYM FxOp97 ; 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 retNEWSYM FxOp98 ; JMPRN jump to address of register JMPRN 8NEWSYM FxOp99 ; JMPRN jump to address of register JMPRN 9NEWSYM FxOp9A ; JMPRN jump to address of register JMPRN 10NEWSYM FxOp9B ; JMPRN jump to address of register JMPRN 11NEWSYM FxOp9C ; JMPRN jump to address of register JMPRN 12NEWSYM FxOp9D ; JMPRN jump to address of register JMPRN 13NEWSYM FxOp98A1 ; LJMPRN set program bank to source register and jump to address of register LJMPRN 8NEWSYM FxOp99A1 ; LJMPRN set program bank to source register and jump to address of register LJMPRN 9NEWSYM FxOp9AA1 ; LJMPRN set program bank to source register and jump to address of register LJMPRN 10NEWSYM FxOp9BA1 ; LJMPRN set program bank to source register and jump to address of register LJMPRN 11NEWSYM FxOp9CA1 ; LJMPRN set program bank to source register and jump to address of register LJMPRN 12NEWSYM FxOp9DA1 ; LJMPRN set program bank to source register and jump to address of register LJMPRN 13NEWSYM FxOp9E ; 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 retNEWSYM FxOp9F ; FMULT 16 bit to 32 bit signed multiplication, upper 16 bits only ; V mov eax,[esi] ; Read Source mov ebx,[SfxR6]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -