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

📄 fxemu2c.asm

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   seto byte[SfxOverflow]
   setc byte[SfxCarry]
   xor byte[SfxCarry],1
   mov [SfxSignZero],eax
   CLRFLAGS
   inc ebp                ; Increase program counter
   FXReturn

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

NEWSYM FxOpd71      ; AND RN register & register
   ANDRNc 1
NEWSYM FxOpd72      ; AND RN register & register
   ANDRNc 2
NEWSYM FxOpd73      ; AND RN register & register
   ANDRNc 3
NEWSYM FxOpd74      ; AND RN register & register
   ANDRNc 4
NEWSYM FxOpd75      ; AND RN register & register
   ANDRNc 5
NEWSYM FxOpd76      ; AND RN register & register
   ANDRNc 6
NEWSYM FxOpd77      ; AND RN register & register
   ANDRNc 7
NEWSYM FxOpd78      ; AND RN register & register
   ANDRNc 8
NEWSYM FxOpd79      ; AND RN register & register
   ANDRNc 9
NEWSYM FxOpd7A      ; AND RN register & register
   ANDRNc 10
NEWSYM FxOpd7B      ; AND RN register & register
   ANDRNc 11
NEWSYM FxOpd7C      ; AND RN register & register
   ANDRNc 12
NEWSYM FxOpd7D      ; AND RN register & register
   ANDRNc 13
NEWSYM FxOpd7E      ; AND RN register & register
   ANDRNc 14
NEWSYM FxOpd7F      ; 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
   FXReturn

NEWSYM FxOpd71A1    ; BIC RN register & ~register
   BICRNc 1
NEWSYM FxOpd72A1    ; BIC RN register & ~register
   BICRNc 2
NEWSYM FxOpd73A1    ; BIC RN register & ~register
   BICRNc 3
NEWSYM FxOpd74A1    ; BIC RN register & ~register
   BICRNc 4
NEWSYM FxOpd75A1    ; BIC RN register & ~register
   BICRNc 5
NEWSYM FxOpd76A1    ; BIC RN register & ~register
   BICRNc 6
NEWSYM FxOpd77A1    ; BIC RN register & ~register
   BICRNc 7
NEWSYM FxOpd78A1    ; BIC RN register & ~register
   BICRNc 8
NEWSYM FxOpd79A1    ; BIC RN register & ~register
   BICRNc 9
NEWSYM FxOpd7AA1    ; BIC RN register & ~register
   BICRNc 10
NEWSYM FxOpd7BA1    ; BIC RN register & ~register
   BICRNc 11
NEWSYM FxOpd7CA1    ; BIC RN register & ~register
   BICRNc 12
NEWSYM FxOpd7DA1    ; BIC RN register & ~register
   BICRNc 13
NEWSYM FxOpd7EA1    ; BIC RN register & ~register
   BICRNc 14
NEWSYM FxOpd7FA1    ; 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
   FXReturn

NEWSYM FxOpd71A2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 1
NEWSYM FxOpd72A2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 2
NEWSYM FxOpd73A2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 3
NEWSYM FxOpd74A2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 4
NEWSYM FxOpd75A2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 5
NEWSYM FxOpd76A2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 6
NEWSYM FxOpd77A2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 7
NEWSYM FxOpd78A2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 8
NEWSYM FxOpd79A2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 9
NEWSYM FxOpd7AA2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 10
NEWSYM FxOpd7BA2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 11
NEWSYM FxOpd7CA2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 12
NEWSYM FxOpd7DA2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 13
NEWSYM FxOpd7EA2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 14
NEWSYM FxOpd7FA2    ; ANDIRNc and #n - register & immediate
   ANDIRNc 15

NEWSYM FxOpd71A3    ; BICIRNc register & ~immediate
   BICIRNc 1 ^ 0FFFFh
NEWSYM FxOpd72A3    ; BICIRNc register & ~immediate
   BICIRNc 2 ^ 0FFFFh
NEWSYM FxOpd73A3    ; BICIRNc register & ~immediate
   BICIRNc 3 ^ 0FFFFh
NEWSYM FxOpd74A3    ; BICIRNc register & ~immediate
   BICIRNc 4 ^ 0FFFFh
NEWSYM FxOpd75A3    ; BICIRNc register & ~immediate
   BICIRNc 5 ^ 0FFFFh
NEWSYM FxOpd76A3    ; BICIRNc register & ~immediate
   BICIRNc 6 ^ 0FFFFh
NEWSYM FxOpd77A3    ; BICIRNc register & ~immediate
   BICIRNc 7 ^ 0FFFFh
NEWSYM FxOpd78A3    ; BICIRNc register & ~immediate
   BICIRNc 8 ^ 0FFFFh
NEWSYM FxOpd79A3    ; BICIRNc register & ~immediate
   BICIRNc 9 ^ 0FFFFh
NEWSYM FxOpd7AA3    ; BICIRNc register & ~immediate
   BICIRNc 10 ^ 0FFFFh
NEWSYM FxOpd7BA3    ; BICIRNc register & ~immediate
   BICIRNc 11 ^ 0FFFFh
NEWSYM FxOpd7CA3    ; BICIRNc register & ~immediate
   BICIRNc 12 ^ 0FFFFh
NEWSYM FxOpd7DA3    ; BICIRNc register & ~immediate
   BICIRNc 13 ^ 0FFFFh
NEWSYM FxOpd7EA3    ; BICIRNc register & ~immediate
   BICIRNc 14 ^ 0FFFFh
NEWSYM FxOpd7FA3    ; BICIRNc register & ~immediate
   BICIRNc 15 ^ 0FFFFh

NEWSYM FxOpd80      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 0 
NEWSYM FxOpd81      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 1 
NEWSYM FxOpd82      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 2 
NEWSYM FxOpd83      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 3 
NEWSYM FxOpd84      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 4 
NEWSYM FxOpd85      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 5 
NEWSYM FxOpd86      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 6 
NEWSYM FxOpd87      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 7 
NEWSYM FxOpd88      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 8 
NEWSYM FxOpd89      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 9 
NEWSYM FxOpd8A      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 10 
NEWSYM FxOpd8B      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 11 
NEWSYM FxOpd8C      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 12 
NEWSYM FxOpd8D      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 13 
NEWSYM FxOpd8E      ; MULTRNc 8 bit to 16 bit signed multiply, register * register
   MULTRNc 14 
NEWSYM FxOpd8F      ; MULTRNc 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
   FXReturn

NEWSYM FxOpd80A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 0
NEWSYM FxOpd81A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 1
NEWSYM FxOpd82A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 2
NEWSYM FxOpd83A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 3
NEWSYM FxOpd84A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 4
NEWSYM FxOpd85A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 5
NEWSYM FxOpd86A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 6
NEWSYM FxOpd87A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 7
NEWSYM FxOpd88A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 8
NEWSYM FxOpd89A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 9
NEWSYM FxOpd8AA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 10
NEWSYM FxOpd8BA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 11
NEWSYM FxOpd8CA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 12
NEWSYM FxOpd8DA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 13
NEWSYM FxOpd8EA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRNc 14
NEWSYM FxOpd8FA1    ; 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
   FXReturn

NEWSYM FxOpd80A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 0
NEWSYM FxOpd81A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 1
NEWSYM FxOpd82A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 2
NEWSYM FxOpd83A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 3
NEWSYM FxOpd84A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 4
NEWSYM FxOpd85A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 5
NEWSYM FxOpd86A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 6
NEWSYM FxOpd87A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 7
NEWSYM FxOpd88A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 8
NEWSYM FxOpd89A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 9
NEWSYM FxOpd8AA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 10
NEWSYM FxOpd8BA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 11
NEWSYM FxOpd8CA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 12
NEWSYM FxOpd8DA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 13
NEWSYM FxOpd8EA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 14
NEWSYM FxOpd8FA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRNc 15

NEWSYM FxOpd80A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 0
NEWSYM FxOpd81A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 1
NEWSYM FxOpd82A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 2
NEWSYM FxOpd83A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 3
NEWSYM FxOpd84A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 4
NEWSYM FxOpd85A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 5
NEWSYM FxOpd86A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 6
NEWSYM FxOpd87A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 7
NEWSYM FxOpd88A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 8
NEWSYM FxOpd89A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 9
NEWSYM FxOpd8AA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 10
NEWSYM FxOpd8BA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 11
NEWSYM FxOpd8CA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 12
NEWSYM FxOpd8DA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 13
NEWSYM FxOpd8EA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 14
NEWSYM FxOpd8FA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRNc 15

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

NEWSYM FxOpd91      ; LINKc#n R11 = R15 + immediate
   LINKc 1
NEWSYM FxOpd92      ; LINKc#n R11 = R15 + immediate
   LINKc 2
NEWSYM FxOpd93      ; LINKc#n R11 = R15 + immediate
   LINKc 3
NEWSYM FxOpd94      ; LINKc#n R11 = R15 + immediate
   LINKc 4

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

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

NEWSYM FxOpd96A1    ; 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
   FXReturn
.minusone
   mov byte[SfxCarry],1
   xor eax,eax
   inc ebp                ; Increase program counter
   mov [edi],eax            ; Write Destination
   mov dword [SfxSignZero],eax
   CLRFLAGS
   FXReturn

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

NEWSYM FxOpd98      ; JMPRNc  jump to address of register
   JMPRNc 8
NEWSYM FxOpd99      ; JMPRNc  jump to address of register
   JMPRNc 9
NEWSYM FxOpd9A      ; JMPRNc  jump to address of register
   JMPRNc 10
NEWSYM FxOpd9B      ; JMPRNc  jump to address of register
   JMPRNc 11
NEWSYM FxOpd9C      ; JMPRNc  jump to address of register
   JMPRNc 12
NEWSYM FxOpd9D      ; JMPRNc  jump to address of register
   JMPRNc 13

NEWSYM FxOpd98A1    ; LJMPRNc set program bank to source register and jump to address of register
   LJMPRNc 8
NEWSYM FxOpd99A1    ; LJMPRNc set program bank to source register and jump to address of register
   LJMPRNc 9
NEWSYM FxOpd9AA1    ; LJMPRNc set program bank to source register and jump to address of register
   LJMPRNc 10
NEWSYM FxOpd9BA1    ; LJMPRNc set program bank to source register and jump to address of register
   LJMPRNc 11
NEWSYM FxOpd9CA1    ; LJMPRNc set program bank to source register and jump to address of register
   LJMPRNc 12
NEWSYM FxOpd9DA1    ; LJMPRNc set program bank to source register and jump to address of register
   LJMPRNc 13

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

NEWSYM FxOpd9F      ; 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

⌨️ 快捷键说明

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