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

📄 dsp1proc.asm

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 ASM
📖 第 1 页 / 共 2 页
字号:
    mov [Op0CA],ax
    mov ax,[DSP1VARS+2]
    mov [Op0CX1],ax
    mov ax,[DSP1VARS+4]
    mov [Op0CY1],ax
    pushad
    call DSPOp0C
    popad
    mov ax,[Op0CX2]
    mov [DSP1RET],ax
    mov ax,[Op0CY2]
    mov [DSP1RET+2],ax
    mov byte[DSP1RLeft],2
    pop eax
    ret
DSP1_1C:  ; 3D Coordinate Rotation
    push eax
    mov ax,[DSP1VARS]
    mov [Op1CZ],ax
    mov ax,[DSP1VARS+2]
    mov [Op1CX],ax
    mov ax,[DSP1VARS+4]
    mov [Op1CY],ax
    mov ax,[DSP1VARS+6]
    mov [Op1CXBR],ax
    mov ax,[DSP1VARS+8]
    mov [Op1CYBR],ax
    mov ax,[DSP1VARS+10]
    mov [Op1CZBR],ax
    pushad
    call DSPOp1C
    popad
    mov ax,[Op1CXAR]
    mov [DSP1RET],ax
    mov ax,[Op1CYAR]
    mov [DSP1RET+2],ax
    mov ax,[Op1CZAR]
    mov [DSP1RET+4],ax
    mov byte[DSP1RLeft],3
    pop eax
    ret


DSP1_02:  ; Vector Size
    or byte[DSPDet],10h
    push eax
;Op02FX           dw 0
;Op02FY           dw 0
;Op02FZ           dw 0
;Op02LFE          dw 0
;Op02LES          dw 0
;Op02AAS          dw 0
;Op02AZS          dw 0
    mov ax,[DSP1VARS]
    mov [Op02FX],ax
    mov ax,[DSP1VARS+2]
    mov [Op02FY],ax
    mov ax,[DSP1VARS+4]
    mov [Op02FZ],ax
    mov ax,[DSP1VARS+6]
    mov [Op02LFE],ax
    mov ax,[DSP1VARS+8]
    mov [Op02LES],ax
    mov ax,[DSP1VARS+10]
    mov [Op02AAS],ax
    mov ax,[DSP1VARS+12]
    mov [Op02AZS],ax
    pushad
    call DSPOp02
    popad
;Op02VOF          dw 0
;Op02VVA          dw 0
;Op02CX           dw 0
;Op02CY           dw 0
    mov ax,[Op02VOF]
    mov [DSP1RET],ax
    mov ax,[Op02VVA]
    mov [DSP1RET+2],ax
    mov ax,[Op02CX]
    mov [DSP1RET+4],ax
    mov ax,[Op02CY]
    mov [DSP1RET+6],ax
    mov byte[DSP1RLeft],4
    pop eax
    ret
    mov eax,dsp1array
    add eax,[dsp1ptr]
    push ebx
    mov byte[eax],02h
    mov bx,[Op02FX]
    mov [eax+1],bx
    mov bx,[Op02FY]
    mov [eax+3],bx
    mov bx,[Op02FZ]
    mov [eax+5],bx
    mov bx,[Op02LFE]
    mov [eax+7],bx
    mov bx,[Op02LES]
    mov [eax+9],bx
    mov bx,[Op02AAS]
    mov [eax+11],bx
    mov bx,[Op02AZS]
    mov [eax+13],bx
    mov bx,[Op02VOF]
    mov [eax+15],bx
    mov bx,[Op02VVA]
    mov [eax+17],bx
    mov bx,[Op02CX]
    mov [eax+19],bx
    mov bx,[Op02CY]
    mov [eax+21],bx
    pop ebx
    add dword[dsp1ptr],23
DSP1_0A:  ; Raster Data Calculation via DMA
    mov byte[DSP1COp],0Ah
    or byte[DSPDet],20h
    push eax
    mov ax,[DSP1VARS]
    mov [Op0AVS],ax
    pushad
    call DSPOp0A
    popad
    mov ax,[Op0AA]
    mov [DSP1RET],ax
    mov ax,[Op0AB]
    mov [DSP1RET+2],ax
    mov ax,[Op0AC]
    mov [DSP1RET+4],ax
    mov ax,[Op0AD]
    mov [DSP1RET+6],ax
    mov byte[DSP1RLeft],4
    pop eax
    ret
DSP1_06:  ; Object Projection Calculation
    or byte[DSPDet],40h
    push eax
    mov ax,[DSP1VARS]
    mov [Op06X],ax
    mov ax,[DSP1VARS+2]
    mov [Op06Y],ax
    mov ax,[DSP1VARS+4]
    mov [Op06Z],ax
    pushad
    call DSPOp06
    popad
    mov ax,[Op06H]
    mov word[DSP1RET],ax
    mov ax,[Op06V]
    mov word[DSP1RET+2],ax
    mov ax,[Op06S]
    mov word[DSP1RET+4],ax
    mov byte[DSP1RLeft],3
    pop eax
    ret
    mov eax,dsp1array
    add eax,[dsp1ptr]
    push ebx
    mov byte[eax],06h
    mov bx,[Op06X]
    mov [eax+1],bx
    mov bx,[Op06Y]
    mov [eax+3],bx
    mov bx,[Op06Z]
    mov [eax+5],bx
    mov bx,[Op06H]
    mov [eax+7],bx
    mov bx,[Op06V]
    mov [eax+9],bx
    mov bx,[Op06S]
    mov [eax+11],bx
    pop ebx
    add dword[dsp1ptr],13
DSP1_0E:  ; Coordinate Calculation of a point onscreen
    push eax
    mov ax,[DSP1VARS]
    mov [Op0EH],ax
    mov ax,[DSP1VARS+2]
    mov [Op0EV],ax
    pushad
    call DSPOp0E
    popad
    mov ax,[Op0EX]
    mov word[DSP1RET],ax
    mov ax,[Op0EY]
    mov word[DSP1RET+2],ax
    mov byte[DSP1RLeft],2
    pop eax
    ret
DSP1_01:  ; Set Attitude Matrix A
    push eax
    mov ax,[DSP1VARS]
    mov [Op01m],ax
    mov ax,[DSP1VARS+2]
    mov [Op01Zr],ax
    mov ax,[DSP1VARS+4]
    mov [Op01Xr],ax
    mov ax,[DSP1VARS+6]
    mov [Op01Yr],ax
    pushad
    call DSPOp01
    popad
    pop eax
    ret
DSP1_11:  ; Set Attitude Matrix B
    push eax
    mov ax,[DSP1VARS]
    mov [Op11m],ax
    mov ax,[DSP1VARS+2]
    mov [Op11Zr],ax
    mov ax,[DSP1VARS+4]
    mov [Op11Xr],ax
    mov ax,[DSP1VARS+6]
    mov [Op11Yr],ax
    pushad
    call DSPOp11
    popad
    pop eax
    ret
DSP1_21:  ; Set Attitude Matrix C
    push eax
    mov ax,[DSP1VARS]
    mov [Op21m],ax
    mov ax,[DSP1VARS+2]
    mov [Op21Zr],ax
    mov ax,[DSP1VARS+4]
    mov [Op21Xr],ax
    mov ax,[DSP1VARS+6]
    mov [Op21Yr],ax
    pushad
    call DSPOp21
    popad
    pop eax
    ret
DSP1_0D:  ; Convert from global to object coords Matrix A
    push eax
    mov ax,[DSP1VARS]
    mov [Op0DX],ax
    mov ax,[DSP1VARS+2]
    mov [Op0DY],ax
    mov ax,[DSP1VARS+4]
    mov [Op0DZ],ax
    pushad
    call DSPOp0D
    popad
    mov ax,[Op0DF]
    mov word[DSP1RET],ax
    mov ax,[Op0DL]
    mov word[DSP1RET+2],ax
    mov ax,[Op0DU]
    mov word[DSP1RET+4],ax
    mov byte[DSP1RLeft],3
    pop eax
    ret
DSP1_1D:  ; Convert from global to object coords Matrix B
    push eax
    mov ax,[DSP1VARS]
    mov [Op1DX],ax
    mov ax,[DSP1VARS+2]
    mov [Op1DY],ax
    mov ax,[DSP1VARS+4]
    mov [Op1DZ],ax
    pushad
    call DSPOp1D
    popad
    mov ax,[Op1DF]
    mov word[DSP1RET],ax
    mov ax,[Op1DL]
    mov word[DSP1RET+2],ax
    mov ax,[Op1DU]
    mov word[DSP1RET+4],ax
    mov byte[DSP1RLeft],3
    pop eax
    ret
DSP1_2D:  ; Convert from global to object coords Matrix C
    push eax
    mov ax,[DSP1VARS]
    mov [Op2DX],ax
    mov ax,[DSP1VARS+2]
    mov [Op2DY],ax
    mov ax,[DSP1VARS+4]
    mov [Op2DZ],ax
    pushad
    call DSPOp2D
    popad
    mov ax,[Op2DF]
    mov word[DSP1RET],ax
    mov ax,[Op2DL]
    mov word[DSP1RET+2],ax
    mov ax,[Op2DU]
    mov word[DSP1RET+4],ax
    mov byte[DSP1RLeft],3
    pop eax
    ret
DSP1_03:  ; Convert from object to global coords Matrix A
    push eax
    mov ax,[DSP1VARS]
    mov [Op03F],ax
    mov ax,[DSP1VARS+2]
    mov [Op03L],ax
    mov ax,[DSP1VARS+4]
    mov [Op03U],ax
    pushad
    call DSPOp03
    popad
    mov ax,[Op03X]
    mov word[DSP1RET],ax
    mov ax,[Op03Y]
    mov word[DSP1RET+2],ax
    mov ax,[Op03Z]
    mov word[DSP1RET+4],ax
    mov byte[DSP1RLeft],3
    pop eax
    ret
DSP1_13:  ; Convert from object to global coords Matrix B
    push eax
    mov ax,[DSP1VARS]
    mov [Op13F],ax
    mov ax,[DSP1VARS+2]
    mov [Op13L],ax
    mov ax,[DSP1VARS+4]
    mov [Op13U],ax
    pushad
    call DSPOp13
    popad
    mov ax,[Op13X]
    mov word[DSP1RET],ax
    mov ax,[Op13Y]
    mov word[DSP1RET+2],ax
    mov ax,[Op13Z]
    mov word[DSP1RET+4],ax
    mov byte[DSP1RLeft],3
    pop eax
    ret
DSP1_23:  ; Convert from object to global coords Matrix C
    push eax
    mov ax,[DSP1VARS]
    mov [Op23F],ax
    mov ax,[DSP1VARS+2]
    mov [Op23L],ax
    mov ax,[DSP1VARS+4]
    mov [Op23U],ax
    pushad
    call DSPOp23
    popad
    mov ax,[Op23X]
    mov word[DSP1RET],ax
    mov ax,[Op23Y]
    mov word[DSP1RET+2],ax
    mov ax,[Op23Z]
    mov word[DSP1RET+4],ax
    mov byte[DSP1RLeft],3
    pop eax
    ret
DSP1_0B:  ; Calculation of inner product Matrix A
    push eax
    mov ax,[DSP1VARS]
    mov [Op0BX],ax
    mov ax,[DSP1VARS+2]
    mov [Op0BY],ax
    mov ax,[DSP1VARS+4]
    mov [Op0BZ],ax
    pushad
    call DSPOp0B
    popad
    mov ax,[Op0BS]
    mov word[DSP1RET],ax
    mov byte[DSP1RLeft],1
    pop eax
    ret
DSP1_1B:  ; Calculation of inner product Matrix B
    push eax
    mov ax,[DSP1VARS]
    mov [Op1BX],ax
    mov ax,[DSP1VARS+2]
    mov [Op1BY],ax
    mov ax,[DSP1VARS+4]
    mov [Op1BZ],ax
    pushad
    call DSPOp1B
    popad
    mov ax,[Op1BS]
    mov word[DSP1RET],ax
    mov byte[DSP1RLeft],1
    pop eax
    ret
DSP1_2B:  ; Calculation of inner product Matrix C
    push eax
    mov ax,[DSP1VARS]
    mov [Op2BX],ax
    mov ax,[DSP1VARS+2]
    mov [Op2BY],ax
    mov ax,[DSP1VARS+4]
    mov [Op2BZ],ax
    pushad
    call DSPOp2B
    popad
    mov ax,[Op2BS]
    mov word[DSP1RET],ax
    mov byte[DSP1RLeft],1
    pop eax
    ret
DSP1_14:  ; 3D angle rotation
    push eax
    mov ax,[DSP1VARS]
    mov [Op14Zr],ax
    mov ax,[DSP1VARS+2]
    mov [Op14Xr],ax
    mov ax,[DSP1VARS+4]
    mov [Op14Yr],ax
    mov ax,[DSP1VARS+6]
    mov [Op14U],ax
    mov ax,[DSP1VARS+8]
    mov [Op14F],ax
    mov ax,[DSP1VARS+10]
    mov [Op14L],ax
    pushad
    call DSPOp14
    popad
    mov ax,[Op14Zrr]
    mov word[DSP1RET],ax
    mov ax,[Op14Xrr]
    mov word[DSP1RET+2],ax
    mov ax,[Op14Yrr]
    mov word[DSP1RET+4],ax
    mov byte[DSP1RLeft],3
    pop eax
    ret

NEWSYM Dsp1ProcAsmEnd

⌨️ 快捷键说明

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