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

📄 fxemu2.asm

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   SBCRN 14
NEWSYM FxOp6FA1    ; SBCRN  subtract with carry, register - register
   mov eax,[esi]    ; Read Source
   mov ebx,ebp
   FETCHPIPE
   sub ebx,[SfxCPB]
   cmp byte[SfxCarry],1
   sbb ax,bx
   seto byte[SfxOverflow]
   setc byte[SfxCarry]
   xor byte[SfxCarry],1
   inc ebp                ; Increase program counter
   mov [edi],eax      ; Write Destination
   mov [SfxSignZero],eax
   CLRFLAGS
   ret

NEWSYM FxOp60A2    ; SUBIRN subtract, register - immediate
   SUBIRN 0
NEWSYM FxOp61A2    ; SUBIRN subtract, register - immediate
   SUBIRN 1
NEWSYM FxOp62A2    ; SUBIRN subtract, register - immediate
   SUBIRN 2
NEWSYM FxOp63A2    ; SUBIRN subtract, register - immediate
   SUBIRN 3
NEWSYM FxOp64A2    ; SUBIRN subtract, register - immediate
   SUBIRN 4
NEWSYM FxOp65A2    ; SUBIRN subtract, register - immediate
   SUBIRN 5
NEWSYM FxOp66A2    ; SUBIRN subtract, register - immediate
   SUBIRN 6
NEWSYM FxOp67A2    ; SUBIRN subtract, register - immediate
   SUBIRN 7
NEWSYM FxOp68A2    ; SUBIRN subtract, register - immediate
   SUBIRN 8
NEWSYM FxOp69A2    ; SUBIRN subtract, register - immediate
   SUBIRN 9
NEWSYM FxOp6AA2    ; SUBIRN subtract, register - immediate
   SUBIRN 10
NEWSYM FxOp6BA2    ; SUBIRN subtract, register - immediate
   SUBIRN 11
NEWSYM FxOp6CA2    ; SUBIRN subtract, register - immediate
   SUBIRN 12
NEWSYM FxOp6DA2    ; SUBIRN subtract, register - immediate
   SUBIRN 13
NEWSYM FxOp6EA2    ; SUBIRN subtract, register - immediate
   SUBIRN 14
NEWSYM FxOp6FA2    ; SUBIRN subtract, register - immediate
   SUBIRN 15

NEWSYM FxOp60A3    ; CMPRN  compare, register, register
   CMPRN 0
NEWSYM FxOp61A3    ; CMPRN  compare, register, register
   CMPRN 1
NEWSYM FxOp62A3    ; CMPRN  compare, register, register
   CMPRN 2
NEWSYM FxOp63A3    ; CMPRN  compare, register, register
   CMPRN 3
NEWSYM FxOp64A3    ; CMPRN  compare, register, register
   CMPRN 4
NEWSYM FxOp65A3    ; CMPRN  compare, register, register
   CMPRN 5
NEWSYM FxOp66A3    ; CMPRN  compare, register, register
   CMPRN 6
NEWSYM FxOp67A3    ; CMPRN  compare, register, register
   CMPRN 7
NEWSYM FxOp68A3    ; CMPRN  compare, register, register
   CMPRN 8
NEWSYM FxOp69A3    ; CMPRN  compare, register, register
   CMPRN 9
NEWSYM FxOp6AA3    ; CMPRN  compare, register, register
   CMPRN 10
NEWSYM FxOp6BA3    ; CMPRN  compare, register, register
   CMPRN 11
NEWSYM FxOp6CA3    ; CMPRN  compare, register, register
   CMPRN 12
NEWSYM FxOp6DA3    ; CMPRN  compare, register, register
   CMPRN 13
NEWSYM FxOp6EA3    ; CMPRN  compare, register, register
   CMPRN 14
NEWSYM 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
   ret

NEWSYM 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
   ret

NEWSYM FxOp71      ; AND RN register & register
   ANDRN 1
NEWSYM FxOp72      ; AND RN register & register
   ANDRN 2
NEWSYM FxOp73      ; AND RN register & register
   ANDRN 3
NEWSYM FxOp74      ; AND RN register & register
   ANDRN 4
NEWSYM FxOp75      ; AND RN register & register
   ANDRN 5
NEWSYM FxOp76      ; AND RN register & register
   ANDRN 6
NEWSYM FxOp77      ; AND RN register & register
   ANDRN 7
NEWSYM FxOp78      ; AND RN register & register
   ANDRN 8
NEWSYM FxOp79      ; AND RN register & register
   ANDRN 9
NEWSYM FxOp7A      ; AND RN register & register
   ANDRN 10
NEWSYM FxOp7B      ; AND RN register & register
   ANDRN 11
NEWSYM FxOp7C      ; AND RN register & register
   ANDRN 12
NEWSYM FxOp7D      ; AND RN register & register
   ANDRN 13
NEWSYM FxOp7E      ; AND RN register & register
   ANDRN 14
NEWSYM 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
   ret

NEWSYM FxOp71A1    ; BIC RN register & ~register
   BICRN 1
NEWSYM FxOp72A1    ; BIC RN register & ~register
   BICRN 2
NEWSYM FxOp73A1    ; BIC RN register & ~register
   BICRN 3
NEWSYM FxOp74A1    ; BIC RN register & ~register
   BICRN 4
NEWSYM FxOp75A1    ; BIC RN register & ~register
   BICRN 5
NEWSYM FxOp76A1    ; BIC RN register & ~register
   BICRN 6
NEWSYM FxOp77A1    ; BIC RN register & ~register
   BICRN 7
NEWSYM FxOp78A1    ; BIC RN register & ~register
   BICRN 8
NEWSYM FxOp79A1    ; BIC RN register & ~register
   BICRN 9
NEWSYM FxOp7AA1    ; BIC RN register & ~register
   BICRN 10
NEWSYM FxOp7BA1    ; BIC RN register & ~register
   BICRN 11
NEWSYM FxOp7CA1    ; BIC RN register & ~register
   BICRN 12
NEWSYM FxOp7DA1    ; BIC RN register & ~register
   BICRN 13
NEWSYM FxOp7EA1    ; BIC RN register & ~register
   BICRN 14
NEWSYM 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
   ret

NEWSYM FxOp71A2    ; ANDIRN and #n - register & immediate
   ANDIRN 1
NEWSYM FxOp72A2    ; ANDIRN and #n - register & immediate
   ANDIRN 2
NEWSYM FxOp73A2    ; ANDIRN and #n - register & immediate
   ANDIRN 3
NEWSYM FxOp74A2    ; ANDIRN and #n - register & immediate
   ANDIRN 4
NEWSYM FxOp75A2    ; ANDIRN and #n - register & immediate
   ANDIRN 5
NEWSYM FxOp76A2    ; ANDIRN and #n - register & immediate
   ANDIRN 6
NEWSYM FxOp77A2    ; ANDIRN and #n - register & immediate
   ANDIRN 7
NEWSYM FxOp78A2    ; ANDIRN and #n - register & immediate
   ANDIRN 8
NEWSYM FxOp79A2    ; ANDIRN and #n - register & immediate
   ANDIRN 9
NEWSYM FxOp7AA2    ; ANDIRN and #n - register & immediate
   ANDIRN 10
NEWSYM FxOp7BA2    ; ANDIRN and #n - register & immediate
   ANDIRN 11
NEWSYM FxOp7CA2    ; ANDIRN and #n - register & immediate
   ANDIRN 12
NEWSYM FxOp7DA2    ; ANDIRN and #n - register & immediate
   ANDIRN 13
NEWSYM FxOp7EA2    ; ANDIRN and #n - register & immediate
   ANDIRN 14
NEWSYM FxOp7FA2    ; ANDIRN and #n - register & immediate
   ANDIRN 15

NEWSYM FxOp71A3    ; BICIRN register & ~immediate
   BICIRN 1 ^ 0FFFFh
NEWSYM FxOp72A3    ; BICIRN register & ~immediate
   BICIRN 2 ^ 0FFFFh
NEWSYM FxOp73A3    ; BICIRN register & ~immediate
   BICIRN 3 ^ 0FFFFh
NEWSYM FxOp74A3    ; BICIRN register & ~immediate
   BICIRN 4 ^ 0FFFFh
NEWSYM FxOp75A3    ; BICIRN register & ~immediate
   BICIRN 5 ^ 0FFFFh
NEWSYM FxOp76A3    ; BICIRN register & ~immediate
   BICIRN 6 ^ 0FFFFh
NEWSYM FxOp77A3    ; BICIRN register & ~immediate
   BICIRN 7 ^ 0FFFFh
NEWSYM FxOp78A3    ; BICIRN register & ~immediate
   BICIRN 8 ^ 0FFFFh
NEWSYM FxOp79A3    ; BICIRN register & ~immediate
   BICIRN 9 ^ 0FFFFh
NEWSYM FxOp7AA3    ; BICIRN register & ~immediate
   BICIRN 10 ^ 0FFFFh
NEWSYM FxOp7BA3    ; BICIRN register & ~immediate
   BICIRN 11 ^ 0FFFFh
NEWSYM FxOp7CA3    ; BICIRN register & ~immediate
   BICIRN 12 ^ 0FFFFh
NEWSYM FxOp7DA3    ; BICIRN register & ~immediate
   BICIRN 13 ^ 0FFFFh
NEWSYM FxOp7EA3    ; BICIRN register & ~immediate
   BICIRN 14 ^ 0FFFFh
NEWSYM FxOp7FA3    ; BICIRN register & ~immediate
   BICIRN 15 ^ 0FFFFh

NEWSYM 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
   ret

NEWSYM FxOp80A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 0
NEWSYM FxOp81A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 1
NEWSYM FxOp82A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 2
NEWSYM FxOp83A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 3
NEWSYM FxOp84A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 4
NEWSYM FxOp85A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 5
NEWSYM FxOp86A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 6
NEWSYM FxOp87A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 7
NEWSYM FxOp88A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 8
NEWSYM FxOp89A1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 9
NEWSYM FxOp8AA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 10
NEWSYM FxOp8BA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 11
NEWSYM FxOp8CA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 12
NEWSYM FxOp8DA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 13
NEWSYM FxOp8EA1    ; UMULRN 8 bit to 16 bit unsigned multiply, register * register
   UMULTRN 14
NEWSYM 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
   ret

NEWSYM FxOp80A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 0
NEWSYM FxOp81A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 1
NEWSYM FxOp82A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 2
NEWSYM FxOp83A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 3
NEWSYM FxOp84A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 4
NEWSYM FxOp85A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 5
NEWSYM FxOp86A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 6
NEWSYM FxOp87A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 7
NEWSYM FxOp88A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 8
NEWSYM FxOp89A2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 9
NEWSYM FxOp8AA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 10
NEWSYM FxOp8BA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 11
NEWSYM FxOp8CA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 12
NEWSYM FxOp8DA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 13
NEWSYM FxOp8EA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 14
NEWSYM FxOp8FA2    ; MULIRN 8 bit to 16 bit signed multiply, register * immediate
   MULTIRN 15

NEWSYM FxOp80A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 0
NEWSYM FxOp81A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 1
NEWSYM FxOp82A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 2
NEWSYM FxOp83A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 3
NEWSYM FxOp84A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 4
NEWSYM FxOp85A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 5
NEWSYM FxOp86A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 6
NEWSYM FxOp87A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 7
NEWSYM FxOp88A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 8
NEWSYM FxOp89A3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 9
NEWSYM FxOp8AA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 10
NEWSYM FxOp8BA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 11
NEWSYM FxOp8CA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 12
NEWSYM FxOp8DA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 13
NEWSYM FxOp8EA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 14
NEWSYM FxOp8FA3    ;UMULIRN 8 bit to 16 bit unsigned multiply, register * immediate
   UMULTIRN 15

NEWSYM 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
   ret

NEWSYM FxOp91      ; LINK#n R11 = R15 + immediate
   LINK 1
NEWSYM FxOp92      ; LINK#n R11 = R15 + immediate
   LINK 2
NEWSYM FxOp93      ; LINK#n R11 = R15 + immediate
   LINK 3
NEWSYM FxOp94      ; LINK#n R11 = R15 + immediate
   LINK 4

NEWSYM 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
   ret

NEWSYM 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

⌨️ 快捷键说明

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