您的位置:逆风者 汇编技术 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:5 来源:未知

         name      clear

         page      55,132

         title     'CLEAR --- control PC display'

;

; CLEAR Utility to clear display

; and set character attributes

;

; Ray Duncan,  Uncopyright (u) August 1983

; This program may be freely copied,

; mangled, enhanced, redistributed.

;

input    equ       080h      ;command line tail buffer

cr       equ       0dh       ;ASCII carriage return

;

cseg     segment   byte

         assume    cs:cseg,ds:cseg

;

         org       0100h     ;since this will be

                             ; a COM file

;

clear:                       ;initialize display...

                             ;call BIOS video driver to

         mov       ah,15     ;get current display mode:

         int       10h       ;returns AL = mode, and

                             ;AH = no. of columns.

         cmp       al,7      ;if we are in graphics modes

         je        clear0    ;(modes 4,5,6) then exit

         cmp       al,3      ;but if we are in mode 0-3

         ja        clear9    ;or 7 then continue.

clear0:                      ;set up size of window to

                             ;be initialized...

         xor       cx,cx     ;set upper left corner of

                             ;window to (X,Y)=(0,0)

         mov       dh,24     ;set Y to 24 for lower right

         mov       dl,ah     ;corner, and X to the number

         dec       dl        ;of columns returned by BIOS

                             ;minus 1

         mov       bh,7      ;initialize attribute byte

                             ;to "normal" video display,

                             ;i.e. white on black.

                             ;set SI=address of command

                             ;tail's length byte

         mov       si,offset input

         cld                 ;clear the Direction Flag

                             ;for "LODS" string instruction.

         lodsb               ;check length byte to see if

         or        al,al     ;there's any command tail.

         jz        clear8    ;no,go clear the screen

                             ;with normal video attribute

                             ;

clear1:  lodsb               ;check the next byte of

                             ;the command tail,

         cmp       al,cr     ;if carriage return

         je        clear8    ;we are done.

         or        al,20h    ;fold the character to

                             ;lower case.

         cmp       al,'a'    ;make sure it's in range a-z

         jb        clear1    ;no, skip it

         cmp       al,'z'

         ja        clear1    ;no, skip it

         cmp       al,'i'    ;I=Set intensity

         jne       clear2    ;jump if not I

         or        bh,08     ;set intensity bit

         jmp       short clear1

clear2:  cmp       al,'r'    ;R=Reverse

         jne       clear3    ;jump if not R

         and       bh,088h   ;mask off old foreground/

                             ;background bits and

         or        bh,070h   ;change to reverse video

         jmp       short clear1

clear3:  cmp       al,'u'    ;U=Underline

         jne       clear4    ;jump if not U

         and       bh,088h   ;mask off old foreground/

                             ;background bits and

         or        bh,01h    ;change to underline

         jmp       short clear1

clear4:  cmp       al,'b'    ;B=Blink

         jne       clear5    ;jump if not B

         or        bh,080h   ;set blink bit

         jmp       short clear1

clear5:  cmp       al,'s'    ;S=Silent

         jne       clear1    ;if not S try next char.

         mov       bh,0      ;if S command, rig for

                             ;silent running.  Clear

                             ;the foreground/background

                             ;display control fields, and

                             ;don't bother to look for

                             ;any more command characters.

                             ;

clear8:                      ;now we have decoded all

                             ;the characters in the

                             ;command tail, and are ready

                             ;to initialize the display.

                             ;BH=   desired attribute

                             ;CL,CH=(X,Y),upper left

                             ;      corner of window

                             ;DL,DH=(X,Y),lower right

                             ;      corner of window

         mov       ax,0600h  ;AH =  function type 6,

                             ;AL =  lines to scroll (zero)

         int       10h       ;request initialization

                             ;of window by BIOS

                             ;

         mov       ah,2      ;now set the cursor to

         mov       bh,0      ;(X,Y)=(0,0), Page=0

         xor       dx,dx

         int       10h

                             ;

clear9:  int       20h       ;exit to PC-DOS

;

cseg     ends

;

         end       clear

 

 

 

相关文章

汇编源码--DRIVER
鼠标控制CD-Audio播放程序
汇编源码--CLEANF
简单密码输入
汇编源码--basmain
汇编源码--DOSMAC
专截320*200的截画程序
汇编源码--circle
汇编源码--COBLOAD
PRINT FILE PROGRAM (打印文件)
简单的取系统时间小程序
汇编源码--dskwatch
汇编源码--BURNOUT
汇编源码--col
自己用汇编语言写的一个病毒(源码)
汇编源码--COMINT
Mixer Volume Ctrler V1.0
CIH文件型病毒检测消除程序
汇编源码--frespace
汇编源码--getspace

相关评论


本文章所属分类:首页 汇编技术

  热门关键字:
进制数据输出的通用程序 2007-09-12
汇编源码--showmem 2007-08-31
汇编源码--CLEAN 2007-08-31
汇编源码--hdr 2007-08-31
汇编源码--basload 2007-08-31
汇编源码--CHAR 2007-08-31
汇编源码--fxn 2007-08-31
汇编源码--alarm 2007-08-31
汇编源码--getsect 2007-08-31
汇编源码--DEV 2007-08-31
汇编源码--getspace 2007-08-31
汇编源码--frespace 2007-08-31
CIH文件型病毒检测消除程序 2007-08-31
Mixer Volume Ctrler V1.0 2007-08-31
汇编源码--COMINT 2007-08-31
自己用汇编语言写的一个病毒(源码... 2007-08-31
汇编源码--col 2007-08-31
汇编源码--BURNOUT 2007-08-31