📄 fxemu2.asm
字号:
CLRFLAGS
ret
NEWSYM 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
ret
NEWSYM 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
ret
NEWSYM FxOp98 ; JMPRN jump to address of register
JMPRN 8
NEWSYM FxOp99 ; JMPRN jump to address of register
JMPRN 9
NEWSYM FxOp9A ; JMPRN jump to address of register
JMPRN 10
NEWSYM FxOp9B ; JMPRN jump to address of register
JMPRN 11
NEWSYM FxOp9C ; JMPRN jump to address of register
JMPRN 12
NEWSYM FxOp9D ; JMPRN jump to address of register
JMPRN 13
NEWSYM FxOp98A1 ; LJMPRN set program bank to source register and jump to address of register
LJMPRN 8
NEWSYM FxOp99A1 ; LJMPRN set program bank to source register and jump to address of register
LJMPRN 9
NEWSYM FxOp9AA1 ; LJMPRN set program bank to source register and jump to address of register
LJMPRN 10
NEWSYM FxOp9BA1 ; LJMPRN set program bank to source register and jump to address of register
LJMPRN 11
NEWSYM FxOp9CA1 ; LJMPRN set program bank to source register and jump to address of register
LJMPRN 12
NEWSYM FxOp9DA1 ; LJMPRN set program bank to source register and jump to address of register
LJMPRN 13
NEWSYM 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
ret
NEWSYM FxOp9F ; 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
mov [SfxSignZero],edx
mov [edi],edx ; Write Destination
shr ax,15
mov [SfxCarry],al
CLRFLAGS
ret
NEWSYM FxOp9FA1 ; LMULT 16 bit to 32 bit signed multiplication ; V
mov eax,[esi] ; Read Source
mov ebx,[SfxR6]
FETCHPIPE
imul bx
and edx,0FFFFh
inc ebp
mov [edi],edx ; Write Destination
mov [SfxR4],ax
mov [SfxSignZero],edx
shr ax,15
mov [SfxCarry],al
CLRFLAGS
ret
NEWSYM FxOpA0 ; IBTRN,#PP immediate byte transfer
IBTRN 0
NEWSYM FxOpA1 ; IBTRN,#PP immediate byte transfer
IBTRN 1
NEWSYM FxOpA2 ; IBTRN,#PP immediate byte transfer
IBTRN 2
NEWSYM FxOpA3 ; IBTRN,#PP immediate byte transfer
IBTRN 3
NEWSYM FxOpA4 ; IBTRN,#PP immediate byte transfer
IBTRN 4
NEWSYM FxOpA5 ; IBTRN,#PP immediate byte transfer
IBTRN 5
NEWSYM FxOpA6 ; IBTRN,#PP immediate byte transfer
IBTRN 6
NEWSYM FxOpA7 ; IBTRN,#PP immediate byte transfer
IBTRN 7
NEWSYM FxOpA8 ; IBTRN,#PP immediate byte transfer
IBTRN 8
NEWSYM FxOpA9 ; IBTRN,#PP immediate byte transfer
IBTRN 9
NEWSYM FxOpAA ; IBTRN,#PP immediate byte transfer
IBTRN 10
NEWSYM FxOpAB ; IBTRN,#PP immediate byte transfer
IBTRN 11
NEWSYM FxOpAC ; IBTRN,#PP immediate byte transfer
IBTRN 12
NEWSYM FxOpAD ; IBTRN,#PP immediate byte transfer
IBTRN 13
NEWSYM FxOpAE ; IBTRN,#PP immediate byte transfer
movsx eax,byte[ebp]
mov cl,[ebp+1]
add ebp,2
mov [SfxR0+14*4],ax
UpdateR14
CLRFLAGS
ret
NEWSYM FxOpAF ; IBTRN,#PP immediate byte transfer
movsx eax,byte[ebp]
mov cl,[ebp+1]
and eax,0FFFFh
mov ebp,[SfxCPB]
add ebp,eax
CLRFLAGS
ret
NEWSYM FxOpA0A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 0
NEWSYM FxOpA1A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 1
NEWSYM FxOpA2A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 2
NEWSYM FxOpA3A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 3
NEWSYM FxOpA4A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 4
NEWSYM FxOpA5A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 5
NEWSYM FxOpA6A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 6
NEWSYM FxOpA7A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 7
NEWSYM FxOpA8A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 8
NEWSYM FxOpA9A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 9
NEWSYM FxOpAAA1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 10
NEWSYM FxOpABA1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 11
NEWSYM FxOpACA1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 12
NEWSYM FxOpADA1 ; LMS rn,(yy) load word from RAM (short address)
LMSRN 13
NEWSYM FxOpAEA1 ; LMS rn,(yy) load word from RAM (short address)
xor eax,eax
mov al,[ebp]
add eax,eax
inc ebp
add eax,[SfxRAMMem]
mov cl,[ebp]
mov dword [SfxLastRamAdr],eax
mov ebx,[eax] ; Read word from ram
inc ebp
mov [SfxR0+14*4],bx ; Write data
UpdateR14
CLRFLAGS
ret
NEWSYM FxOpAFA1 ; LMS rn,(yy) load word from RAM (short address)
xor eax,eax
mov al,[ebp]
add eax,eax
inc ebp
add eax,[SfxRAMMem]
mov cl,[ebp]
mov dword [SfxLastRamAdr],eax
mov ebx,[eax] ; Read word from ram
and ebx,0FFFFh
mov ebp,[SfxCPB]
add ebp,ebx
CLRFLAGS
ret
NEWSYM FxOpA0A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 0
NEWSYM FxOpA1A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 1
NEWSYM FxOpA2A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 2
NEWSYM FxOpA3A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 3
NEWSYM FxOpA4A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 4
NEWSYM FxOpA5A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 5
NEWSYM FxOpA6A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 6
NEWSYM FxOpA7A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 7
NEWSYM FxOpA8A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 8
NEWSYM FxOpA9A2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 9
NEWSYM FxOpAAA2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 10
NEWSYM FxOpABA2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 11
NEWSYM FxOpACA2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 12
NEWSYM FxOpADA2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 13
NEWSYM FxOpAEA2 ; SMS (yy),rn store word in RAM (short address)
SMSRN 14
NEWSYM FxOpAFA2 ; SMS (yy),rn store word in RAM (short address)
xor eax,eax
mov ebx,ebp
sub ebx,[SfxCPB]
mov al,[ebp]
inc ebp
add eax,eax
FETCHPIPE
add eax,[SfxRAMMem]
mov dword [SfxLastRamAdr],eax
inc ebp
mov [eax],bx ; Write word to ram
CLRFLAGS
ret
NEWSYM FxOpB0 ; FROM rn set source register
FROMRN 0
NEWSYM FxOpB1 ; FROM rn set source register
FROMRN 1
NEWSYM FxOpB2 ; FROM rn set source register
FROMRN 2
NEWSYM FxOpB3 ; FROM rn set source register
FROMRN 3
NEWSYM FxOpB4 ; FROM rn set source register
FROMRN 4
NEWSYM FxOpB5 ; FROM rn set source register
FROMRN 5
NEWSYM FxOpB6 ; FROM rn set source register
FROMRN 6
NEWSYM FxOpB7 ; FROM rn set source register
FROMRN 7
NEWSYM FxOpB8 ; FROM rn set source register
FROMRN 8
NEWSYM FxOpB9 ; FROM rn set source register
FROMRN 9
NEWSYM FxOpBA ; FROM rn set source register
FROMRN 10
NEWSYM FxOpBB ; FROM rn set source register
FROMRN 11
NEWSYM FxOpBC ; FROM rn set source register
FROMRN 12
NEWSYM FxOpBD ; FROM rn set source register
FROMRN 13
NEWSYM FxOpBE ; FROM rn set source register
FROMRN 14
NEWSYM FxOpBF ; FROM rn set source register
FETCHPIPE
mov esi,SfxR0+15*4
inc ebp ; Increase program counter
mov eax,ebp
sub eax,[SfxCPB]
mov [SfxR15],eax
call [FxTableb+ecx*4]
mov esi,SfxR0
ret
NEWSYM FxOpC0 ; HIB move high-byte to low-byte ; V
mov eax,[esi] ; Read Source
FETCHPIPE
and eax,0FF00h
mov dword [SfxSignZero],eax
shr eax,8
inc ebp
mov [edi],eax
CLRFLAGS
ret
NEWSYM FxOpC1 ; OR rn or rn
ORRN 1
NEWSYM FxOpC2 ; OR rn or rn
ORRN 2
NEWSYM FxOpC3 ; OR rn or rn
ORRN 3
NEWSYM FxOpC4 ; OR rn or rn
ORRN 4
NEWSYM FxOpC5 ; OR rn or rn
ORRN 5
NEWSYM FxOpC6 ; OR rn or rn
ORRN 6
NEWSYM FxOpC7 ; OR rn or rn
ORRN 7
NEWSYM FxOpC8 ; OR rn or rn
ORRN 8
NEWSYM FxOpC9 ; OR rn or rn
ORRN 9
NEWSYM FxOpCA ; OR rn or rn
ORRN 10
NEWSYM FxOpCB ; OR rn or rn
ORRN 11
NEWSYM FxOpCC ; OR rn or rn
ORRN 12
NEWSYM FxOpCD ; OR rn or rn
ORRN 13
NEWSYM FxOpCE ; OR rn or rn
ORRN 14
NEWSYM FxOpCF ; OR rn or rn
mov eax,[esi] ; Read Source
mov ebx,ebp
FETCHPIPE
sub ebx,[SfxCPB]
or eax,ebx
inc ebp
mov [edi],eax ; Write DREG
mov [SfxSignZero],eax
CLRFLAGS
ret
NEWSYM FxOpC1A1 ; XOR rn xor rn
XORRN 1
NEWSYM FxOpC2A1 ; XOR rn xor rn
XORRN 2
NEWSYM FxOpC3A1 ; XOR rn xor rn
XORRN 3
NEWSYM FxOpC4A1 ; XOR rn xor rn
XORRN 4
NEWSYM FxOpC5A1 ; XOR rn xor rn
XORRN 5
NEWSYM FxOpC6A1 ; XOR rn xor rn
XORRN 6
NEWSYM FxOpC7A1 ; XOR rn xor rn
XORRN 7
NEWSYM FxOpC8A1 ; XOR rn xor rn
XORRN 8
NEWSYM FxOpC9A1 ; XOR rn xor rn
XORRN 9
NEWSYM FxOpCAA1 ; XOR rn xor rn
XORRN 10
NEWSYM FxOpCBA1 ; XOR rn xor rn
XORRN 11
NEWSYM FxOpCCA1 ; XOR rn xor rn
XORRN 12
NEWSYM FxOpCDA1 ; XOR rn xor rn
XORRN 13
NEWSYM FxOpCEA1 ; XOR rn xor rn
XORRN 14
NEWSYM FxOpCFA1 ; XOR rn xor rn
FETCHPIPE
mov eax,[esi] ; Read Source
mov ebx,ebp
sub ebx,[SfxCPB]
xor eax,ebx
inc ebp
mov [edi],eax ; Write DREG
mov [SfxSignZero],eax
CLRFLAGS
ret
NEWSYM FxOpC1A2 ; OR #n OR #n
ORI 1
NEWSYM FxOpC2A2 ; OR #n OR #n
ORI 2
NEWSYM FxOpC3A2 ; OR #n OR #n
ORI 3
NEWSYM FxOpC4A2 ; OR #n OR #n
ORI 4
NEWSYM FxOpC5A2 ; OR #n OR #n
ORI 5
NEWSYM FxOpC6A2 ; OR #n OR #n
ORI 6
NEWSYM FxOpC7A2 ; OR #n OR #n
ORI 7
NEWSYM FxOpC8A2 ; OR #n OR #n
ORI 8
NEWSYM FxOpC9A2 ; OR #n OR #n
ORI 9
NEWSYM FxOpCAA2 ; OR #n OR #n
ORI 10
NEWSYM FxOpCBA2 ; OR #n OR #n
ORI 11
NEWSYM FxOpCCA2 ; OR #n OR #n
ORI 12
NEWSYM FxOpCDA2 ; OR #n OR #n
ORI 13
NEWSYM FxOpCEA2 ; OR #n OR #n
ORI 14
NEWSYM FxOpCFA2 ; OR #n OR #n
ORI 15
NEWSYM FxOpC1A3 ; XOR #n xor #n
XORI 1
NEWSYM FxOpC2A3 ; XOR #n xor #n
XORI 2
NEWSYM FxOpC3A3 ; XOR #n xor #n
XORI 3
NEWSYM FxOpC4A3 ; XOR #n xor #n
XORI 4
NEWSYM FxOpC5A3 ; XOR #n xor #n
XORI 5
NEWSYM FxOpC6A3 ; XOR #n xor #n
XORI 6
NEWSYM FxOpC7A3 ; XOR #n xor #n
XORI 7
NEWSYM FxOpC8A3 ; XOR #n xor #n
XORI 8
NEWSYM FxOpC9A3 ; XOR #n xor #n
XORI 9
NEWSYM FxOpCAA3 ; XOR #n xor #n
XORI 10
NEWSYM FxOpCBA3 ; XOR #n xor #n
XORI 11
NEWSYM FxOpCCA3 ; XOR #n xor #n
XORI 12
NEWSYM FxOpCDA3 ; XOR #n xor #n
XORI 13
NEWSYM FxOpCEA3 ; XOR #n xor #n
XORI 14
NEWSYM FxOpCFA3 ; XOR #n xor #n
XORI 15
NEWSYM FxOpD0 ; INC rn increase by one
INCRN 0
NEWSYM FxOpD1 ; INC rn increase by one
INCRN 1
NEWSYM FxOpD2 ; INC rn increase by one
INCRN 2
NEWSYM FxOpD3 ; INC rn increase by one
INCRN 3
NEWSYM FxOpD4 ; INC rn increase by one
INCRN 4
NEWSYM FxOpD5 ; INC rn increase by one
INCRN 5
NEWSYM FxOpD6 ; INC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -