AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > 汇编语言

汇编源码--BURNOUT

51自学网 http://www.51zixue.net
COMMENT *   Demo (and semi-useful) program to read/set burnout device parameters.   Usage: burnout [ticks] [C+-] [V+-] [H+-]   Parameters can be separated by almost anything.  With no parameters, program simply returns current status.   Examples:    burnout 5000                (sets time to 5000 ticks)    burnout 5000H+              (time=5000, use hardware blanking)    burnout 5000,h+             (ditto, separators don't matter)    burnout c+h-v+              (continuous clear, software, monitor video)    burnout /C+ /H- /V+         (ditto)    burnout                     (return status only)   Assembly/link:    masm burnout;    link burnout;  (ignore NO STACK warning message)    exe2bin burnout burnout.com   By CJDunford  20-Mar-1985     Compuserve 76703,2002 ======================================================================* stdout equ 1                            ; DOS output filesstderr equ 2 ; ----- General equatesDOS         equ 21H                     ; DOS interruptTERMINATE   equ 20H                     ; Exit to DOS PRINT       equ 09H                     ; DOS "print" string to stdoutFOPEN       equ 3D02H                   ; DOS file open, read/writeFREAD       equ 3FH                     ; DOS file readFWRITE      equ 40H                     ; DOS file write CR          equ 13                      ; ASCII carriage returnLF          equ 10                      ; ASCII line fine code segmentassume cs:code,ds:code org 80H                                 ; Parm storage area in PSPParmLength label byte                   ; Length of parmsorg 81HParameters label byte                   ; Start of parms org 100H                                ; Org for .COMmain proc far        jmp start                       ; Hate to execute data DevName         db 'BRNDEV',0           ; Burnout device namehandle          dw ?                    ; Storage for handleFlush           db '@'                  ; Char to flush device I/OExecute         db '#'                  ; Char to execute device commands NotInstalled    db 'Burnout device is not installed',13,10NotInstalledL   equ $ - NotInstalled Status          db 'Current status: '   ; Status messageStatInsert      db 40 dup (?)           ; brndev will store status here ; ----- Open the devicestart:        mov dx,offset DevName           ; DS:DX => device name        mov ax,FOPEN        int DOS        jnc A1                          ; Continue if no error        mov bx,stderr                   ; Message to stderr        mov cx,NotInstalledL        mov dx,offset NotInstalled        mov ah,FWRITE        int DOS        jmp exit ; ----- Flush any pending I/O to/from the deviceA1:        mov handle,ax                   ; Save device handle        mov dx,offset Flush             ; Point to the "@"        mov cx,1                        ; Writing one byte        mov bx,handle                   ; Device handle        mov ah,FWRITE                   ; Write "@" to device        int DOS ; ----- Send and execute parameters if present        mov cl,ParmLength               ; Parm length to CL        or cl,cl                        ; Any parms present?        jz A2                           ; Skip if not        xor ch,ch                       ; CX = parm length        mov dx,offset Parameters        ; DS:DX => parms        mov bx,handle                   ; BX = device handle        mov ah,FWRITE                   ; Write parms to device        int DOS         mov dx,offset Execute           ; Execute the parms        mov cx,1                        ; Writing one byte        mov bx,handle                   ; Device handle        mov ah,FWRITE                   ; Write "#" to device        int DOS ; ----- Get and display device statusA2:        mov dx,offset StatInsert        ; DS:DX => where to put status        mov cx,0FFH                     ; Ask for lots of data; DOS will ...                                        ; ... fetch only until CR found.        mov bx,handle                   ; Device handle        mov ah,FREAD                    ; Read device info        int DOS         mov cx,ax                       ; CX = actual # bytes read        mov di,offset StatInsert        ; Where the stat data is stored        add di,cx                       ; Add length of input read        mov al,CR                       ; Store a CR/LF/'$' at end        cld        stosb        mov al,LF        stosb        mov al,'$'        stosb        mov dx,offset Status            ; Write status to stdout        mov ah,PRINT        int DOS exit:        int TERMINATE                   ; Exit to DOSmain endpcode endsend main

 

 

 
上一篇:汇编源码--CALC  下一篇:汇编源码--BRK2