庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>汇编语言>相关源码>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

汇编的的各类源码--BURNOUT

 作者:本站收集   日期:2005-8-1 15:39:27
字号选择〖 〗/ 双击滚屏 单击停止   
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 files
stderr equ 2
 
; ----- General equates
DOS         equ 21H                     ; DOS interrupt
TERMINATE   equ 20H                     ; Exit to DOS
 
PRINT       equ 09H                     ; DOS "print" string to stdout
FOPEN       equ 3D02H                   ; DOS file open, read/write
FREAD       equ 3FH                     ; DOS file read
FWRITE      equ 40H                     ; DOS file write
 
CR          equ 13                      ; ASCII carriage return
LF          equ 10                      ; ASCII line fine
 
code segment
assume cs:code,ds:code
 
org 80H                                 ; Parm storage area in PSP
ParmLength label byte                   ; Length of parms
org 81H
Parameters label byte                   ; Start of parms
 
org 100H                                ; Org for .COM
main proc far
        jmp start                       ; Hate to execute data
 
DevName         db 'BRNDEV',0           ; Burnout device name
handle          dw ?                    ; Storage for handle
Flush           db '@'                  ; Char to flush device I/O
Execute         db '#'                  ; Char to execute device commands
 
NotInstalled    db 'Burnout device is not installed',13,10
NotInstalledL   equ $ - NotInstalled
 
Status          db 'Current status: '   ; Status message
StatInsert      db 40 dup (?)           ; brndev will store status here
 
; ----- Open the device
start:
        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 device
A1:
        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 status
A2:
        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 DOS
main endp
code ends
end main

上一篇:汇编的的各类源码--CALC    下一篇:汇编的的各类源码--BRK2  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-8-1 15:39:27
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿