⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fxemu2.asm

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   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 + -