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

📄 fxemu2c.asm

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   mov [SfxSignZero],edx
   mov [edi],edx        ; Write Destination
   shr ax,15
   mov [SfxCarry],al
   CLRFLAGS
   FXReturn

NEWSYM FxOpd9FA1    ; 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
   FXReturn

NEWSYM FxOpdA0      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 0
NEWSYM FxOpdA1      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 1
NEWSYM FxOpdA2      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 2
NEWSYM FxOpdA3      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 3
NEWSYM FxOpdA4      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 4
NEWSYM FxOpdA5      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 5
NEWSYM FxOpdA6      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 6
NEWSYM FxOpdA7      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 7
NEWSYM FxOpdA8      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 8
NEWSYM FxOpdA9      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 9
NEWSYM FxOpdAA      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 10
NEWSYM FxOpdAB      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 11
NEWSYM FxOpdAC      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 12
NEWSYM FxOpdAD      ; IBTRNc,#PP immediate byte transfer
   IBTRNc 13
NEWSYM FxOpdAE      ; IBTRNc,#PP immediate byte transfer
   movsx eax,byte[ebp]
   mov cl,[ebp+1]
   add ebp,2
   mov [SfxR0+14*4],ax
   UpdateR14
   CLRFLAGS
   FXReturn
NEWSYM FxOpdAF      ; IBTRNc,#PP immediate byte transfer
   movsx eax,byte[ebp]
   mov cl,[ebp+1]
   and eax,0FFFFh
   mov ebp,[SfxCPB]
   add ebp,eax
   CLRFLAGS
   FXReturn

NEWSYM FxOpdA0A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 0
NEWSYM FxOpdA1A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 1
NEWSYM FxOpdA2A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 2
NEWSYM FxOpdA3A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 3
NEWSYM FxOpdA4A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 4
NEWSYM FxOpdA5A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 5
NEWSYM FxOpdA6A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 6
NEWSYM FxOpdA7A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 7
NEWSYM FxOpdA8A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 8
NEWSYM FxOpdA9A1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 9
NEWSYM FxOpdAAA1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 10
NEWSYM FxOpdABA1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 11
NEWSYM FxOpdACA1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 12
NEWSYM FxOpdADA1    ; LMS rn,(yy)  load word from RAM (short address)
   LMSRNc 13
NEWSYM FxOpdAEA1    ; 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
   FXReturn
NEWSYM FxOpdAFA1    ; 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
   FXReturn

NEWSYM FxOpdA0A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 0
NEWSYM FxOpdA1A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 1
NEWSYM FxOpdA2A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 2
NEWSYM FxOpdA3A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 3
NEWSYM FxOpdA4A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 4
NEWSYM FxOpdA5A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 5
NEWSYM FxOpdA6A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 6
NEWSYM FxOpdA7A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 7
NEWSYM FxOpdA8A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 8
NEWSYM FxOpdA9A2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 9
NEWSYM FxOpdAAA2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 10
NEWSYM FxOpdABA2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 11
NEWSYM FxOpdACA2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 12
NEWSYM FxOpdADA2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 13
NEWSYM FxOpdAEA2    ; SMS (yy),rn  store word in RAM (short address)
   SMSRNc 14
NEWSYM FxOpdAFA2    ; 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
   FXReturn

NEWSYM FxOpdB0      ; FROM rn   set source register
   FROMRNd 0
NEWSYM FxOpdB1      ; FROM rn   set source register
   FROMRNd 1
NEWSYM FxOpdB2      ; FROM rn   set source register
   FROMRNd 2
NEWSYM FxOpdB3      ; FROM rn   set source register
   FROMRNd 3
NEWSYM FxOpdB4      ; FROM rn   set source register
   FROMRNd 4
NEWSYM FxOpdB5      ; FROM rn   set source register
   FROMRNd 5
NEWSYM FxOpdB6      ; FROM rn   set source register
   FROMRNd 6
NEWSYM FxOpdB7      ; FROM rn   set source register
   FROMRNd 7
NEWSYM FxOpdB8      ; FROM rn   set source register
   FROMRNd 8
NEWSYM FxOpdB9      ; FROM rn   set source register
   FROMRNd 9
NEWSYM FxOpdBA      ; FROM rn   set source register
   FROMRNd 10
NEWSYM FxOpdBB      ; FROM rn   set source register
   FROMRNd 11
NEWSYM FxOpdBC      ; FROM rn   set source register
   FROMRNd 12
NEWSYM FxOpdBD      ; FROM rn   set source register
   FROMRNd 13
NEWSYM FxOpdBE      ; FROM rn   set source register
   FROMRNd 14
NEWSYM FxOpdBF      ; 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
   FXReturn

NEWSYM FxOpdC0      ; 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
   FXReturn

NEWSYM FxOpdC1      ; OR rn     or rn
   ORRNc 1
NEWSYM FxOpdC2      ; OR rn     or rn
   ORRNc 2
NEWSYM FxOpdC3      ; OR rn     or rn
   ORRNc 3
NEWSYM FxOpdC4      ; OR rn     or rn
   ORRNc 4
NEWSYM FxOpdC5      ; OR rn     or rn
   ORRNc 5
NEWSYM FxOpdC6      ; OR rn     or rn
   ORRNc 6
NEWSYM FxOpdC7      ; OR rn     or rn
   ORRNc 7
NEWSYM FxOpdC8      ; OR rn     or rn
   ORRNc 8
NEWSYM FxOpdC9      ; OR rn     or rn
   ORRNc 9
NEWSYM FxOpdCA      ; OR rn     or rn
   ORRNc 10
NEWSYM FxOpdCB      ; OR rn     or rn
   ORRNc 11
NEWSYM FxOpdCC      ; OR rn     or rn
   ORRNc 12
NEWSYM FxOpdCD      ; OR rn     or rn
   ORRNc 13
NEWSYM FxOpdCE      ; OR rn     or rn
   ORRNc 14
NEWSYM FxOpdCF      ; 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
   FXReturn

NEWSYM FxOpdC1A1    ; XOR rn    xor rn
   XORRNc 1
NEWSYM FxOpdC2A1    ; XOR rn    xor rn
   XORRNc 2
NEWSYM FxOpdC3A1    ; XOR rn    xor rn
   XORRNc 3
NEWSYM FxOpdC4A1    ; XOR rn    xor rn
   XORRNc 4
NEWSYM FxOpdC5A1    ; XOR rn    xor rn
   XORRNc 5
NEWSYM FxOpdC6A1    ; XOR rn    xor rn
   XORRNc 6
NEWSYM FxOpdC7A1    ; XOR rn    xor rn
   XORRNc 7
NEWSYM FxOpdC8A1    ; XOR rn    xor rn
   XORRNc 8
NEWSYM FxOpdC9A1    ; XOR rn    xor rn
   XORRNc 9
NEWSYM FxOpdCAA1    ; XOR rn    xor rn
   XORRNc 10
NEWSYM FxOpdCBA1    ; XOR rn    xor rn
   XORRNc 11
NEWSYM FxOpdCCA1    ; XOR rn    xor rn
   XORRNc 12
NEWSYM FxOpdCDA1    ; XOR rn    xor rn
   XORRNc 13
NEWSYM FxOpdCEA1    ; XOR rn    xor rn
   XORRNc 14
NEWSYM FxOpdCFA1    ; 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
   FXReturn

NEWSYM FxOpdC1A2    ; OR #n     OR #n
   ORIc 1
NEWSYM FxOpdC2A2    ; OR #n     OR #n
   ORIc 2
NEWSYM FxOpdC3A2    ; OR #n     OR #n
   ORIc 3
NEWSYM FxOpdC4A2    ; OR #n     OR #n
   ORIc 4
NEWSYM FxOpdC5A2    ; OR #n     OR #n
   ORIc 5
NEWSYM FxOpdC6A2    ; OR #n     OR #n
   ORIc 6
NEWSYM FxOpdC7A2    ; OR #n     OR #n
   ORIc 7
NEWSYM FxOpdC8A2    ; OR #n     OR #n
   ORIc 8
NEWSYM FxOpdC9A2    ; OR #n     OR #n
   ORIc 9
NEWSYM FxOpdCAA2    ; OR #n     OR #n
   ORIc 10
NEWSYM FxOpdCBA2    ; OR #n     OR #n
   ORIc 11
NEWSYM FxOpdCCA2    ; OR #n     OR #n
   ORIc 12
NEWSYM FxOpdCDA2    ; OR #n     OR #n
   ORIc 13
NEWSYM FxOpdCEA2    ; OR #n     OR #n
   ORIc 14
NEWSYM FxOpdCFA2    ; OR #n     OR #n
   ORIc 15

NEWSYM FxOpdC1A3    ; XOR #n    xor #n
   XORIc 1
NEWSYM FxOpdC2A3    ; XOR #n    xor #n
   XORIc 2
NEWSYM FxOpdC3A3    ; XOR #n    xor #n
   XORIc 3
NEWSYM FxOpdC4A3    ; XOR #n    xor #n
   XORIc 4
NEWSYM FxOpdC5A3    ; XOR #n    xor #n
   XORIc 5
NEWSYM FxOpdC6A3    ; XOR #n    xor #n
   XORIc 6
NEWSYM FxOpdC7A3    ; XOR #n    xor #n
   XORIc 7
NEWSYM FxOpdC8A3    ; XOR #n    xor #n
   XORIc 8
NEWSYM FxOpdC9A3    ; XOR #n    xor #n
   XORIc 9
NEWSYM FxOpdCAA3    ; XOR #n    xor #n
   XORIc 10
NEWSYM FxOpdCBA3    ; XOR #n    xor #n
   XORIc 11
NEWSYM FxOpdCCA3    ; XOR #n    xor #n
   XORIc 12
NEWSYM FxOpdCDA3    ; XOR #n    xor #n
   XORIc 13
NEWSYM FxOpdCEA3    ; XOR #n    xor #n
   XORIc 14
NEWSYM FxOpdCFA3    ; XOR #n    xor #n
   XORIc 15

NEWSYM FxOpdD0      ; INC rn    increase by one
   INCRNc 0
NEWSYM FxOpdD1      ; INC rn    increase by one
   INCRNc 1
NEWSYM FxOpdD2      ; INC rn    increase by one
   INCRNc 2
NEWSYM FxOpdD3      ; INC rn    increase by one
   INCRNc 3
NEWSYM FxOpdD4      ; INC rn    increase by one
   INCRNc 4
NEWSYM FxOpdD5      ; INC rn    increase by one
   INCRNc 5
NEWSYM FxOpdD6      ; INC rn    increase by one
   INCRNc 6
NEWSYM FxOpdD7      ; INC rn    increase by one
   INCRNc 7
NEWSYM FxOpdD8      ; INC rn    increase by one
   INCRNc 8
NEWSYM FxOpdD9      ; INC rn    increase by one
   INCRNc 9
NEWSYM FxOpdDA      ; INC rn    increase by one
   INCRNc 10
NEWSYM FxOpdDB      ; INC rn    increase by one
   INCRNc 11
NEWSYM FxOpdDC      ; INC rn    increase by one
   INCRNc 12
NEWSYM FxOpdDD      ; INC rn    increase by one
   INCRNc 13
NEWSYM FxOpdDE      ; INC rn    increase by one
   FETCHPIPE
   mov eax,[SfxR0+14*4]            ; Read Source
   inc ax
   mov [SfxR0+14*4],eax
   mov [SfxSignZero],eax
   CLRFLAGS
   inc ebp
   UpdateR14
   FXReturn

NEWSYM FxOpdDF      ; GETC      transfer ROM buffer to color register
   mov eax,[SfxRomBuffer]
   FETCHPIPE
   mov eax,[eax]
   test byte[SfxPOR],04h
   jz .nohighnibble
   mov bl,al
   shr bl,4
   and al,0F0h
   or al,bl
.nohighnibble
   test byte[SfxPOR],08h
   jnz .preserveupper
   cmp [SfxCOLR],al
   je .nocolchange
   mov [SfxCOLR],al
   and eax,0FFh
   mov ebx,[fxbit01+eax*4]
   mov [fxbit01pcal],ebx
   mov ebx,[fxbit23+eax*4]
   mov [fxbit23pcal],ebx
   mov ebx,[fxbit45+eax*4]
   mov [fxbit45pcal],ebx
   mov ebx,[fxbit67+eax*4]
   mov [fxbit67pcal],ebx
.nocolchange
   CLRFLAGS
   inc ebp                ; Increase program counter
   FXReturn
.preserveupper
   mov bl,[SfxCOLR]
   and al,0Fh
   and bl,0F0h
   or al,bl
   cmp [SfxCOLR],al
   je .nocolchange
   mov [SfxCOLR],al
   and eax,0FFh
   mov ebx,[fxbit01+eax*4]
   mov [fxbit01pcal],ebx
   mov ebx,[fxbit23+eax*4]
   mov [fxbit23pcal],ebx
   mov ebx,[fxbit45+eax*4]
   mov [fxbit45pcal],ebx
   mov ebx,[fxbit67+eax*4]
   mov [fxbit67pcal],ebx
   CLRFLAGS
   inc ebp                ; Increase program counter
   FXReturn

NEWSYM FxOpdDFA2    ; RAMB      set current RAM bank    ; Verified
   mov eax,[esi]            ; Read Source
   mov ebx,[

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -