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

📄 proc.asm

📁 按时大法师的噶速度啊施法速度发送方艾丝凡 按我国阿斯蒂芬
💻 ASM
字号:
.MODEL  TINY,STDCALL
.386
OPTION SEGMENT:USE16

INCLUDE LONG.INC                   ;proc1 may be used in proc2 here,

CODE    SEGMENT BYTE PUBLIC 'CODE'
        ASSUME CS:CODE

;------------------------------------------------
;input  :a char
;output :
SHOW_CHAR       PROC    NEAR    PUBLIC  USES AX BX,
                CHAR:BYTE
        MOV     AL,CHAR
        MOV     AH,0EH
        MOV     BX,000FH
        INT     10H
        RET
SHOW_CHAR       ENDP
;-------------------------------------------------
;input  :pointer to a $-terminated string
;output :
SHOW_STRING     PROC    NEAR    PUBLIC  USES AX DX,
                ADDRESS:WORD
        MOV     DX,ADDRESS
        MOV     AH,09H
        INT     21H
        RET
SHOW_STRING     ENDP
;-------------------------------------------------
;input  :
;output :(dh,dl)==cursor location
READ_CURSOR     PROC    NEAR    PUBLIC USES AX BX
        MOV     AH,03
        MOV     BH,0
        INT     10H
        RET
READ_CURSOR     ENDP
;-------------------------------------------------
;intput : cursor location(x,y)
;output :
SET_CURSOR     PROC    NEAR     PUBLIC  USES AX BX,
                X:BYTE,Y:BYTE
        MOV     AH,02
        MOV     BH,0
        MOV     DH,X
        MOV     DL,Y
        INT     10H
        RET
SET_CURSOR     ENDP
;-------------------------------------------------
;input: start_1(cursor starting scan line),end_1(ending scan line)
;output:
SET_CURSOR_TYPE PROC    NEAR    PUBLIC,
                START_1:BYTE,END_1:BYTE
        MOV     AH,01
        MOV     CH,START_1
        MOV     CL,END_1
        INT     10H
        RET
SET_CURSOR_TYPE ENDP
;-------------------------------------------------
;input:
;output:al==ascii of character, at the cursor location
READ_CHARACTER  PROC    NEAR    PUBLIC
        MOV     AH,08
        MOV     BH,0
        INT     10H
        RET
READ_CHARACTER  ENDP
;-------------------------------------------------
;input  :cursor location (x,y),mode is text  80*25  only
;output :ax : vga pointer,ascii position
MAKE_VGA_POINTER        PROC    NEAR    PUBLIC,
                        X:BYTE,Y:BYTE
        MOV     CL,80
        MOV     AL,X
        MUL     CL
        MOVZX   CX,Y
        ADD     AX,CX
        SHL     AX,1
        RET
MAKE_VGA_POINTER        ENDP
;------------------------------------------------
;input  :attribute,(top,left),(bottom,right)
;output :
DRAW_WINDOW     PROC    NEAR    PUBLIC,
                ATTRIBUTE:BYTE,TOP:BYTE,LEFT:BYTE,BOTTOM:BYTE,RIGHT:BYTE                        
        MOV     AH,06H
        MOV     AL,0
        MOV     BH,ATTRIBUTE
        MOV     CH,TOP
        MOV     CL,LEFT
        MOV     DH,BOTTOM
        MOV     DL,RIGHT
        INT     10H
        RET
DRAW_WINDOW     ENDP
;-------------------------------------------------
;input  :     
;output :
EXIT         PROC    NEAR    PUBLIC
        MOV     AH,0
        MOV     AL,03
        INT     10H
        MOV     AH,4CH
        INT     21H
        RET
EXIT    ENDP
;------------------------------------------------
;input:file name== a pointer of a null-terminated string
;output:ax==ducument code
CREATE_FILE     PROC    NEAR    PUBLIC USES CX,
                FILENAME_P:WORD
        MOV     DX,FILENAME_P
        MOV     AH,3CH
        MOV     CX,0           ;file attrubute
        INT     21H
        RET
CREATE_FILE     ENDP
;-------------------------------------------------
;input  :1.doc_code;2.file_length;3.(pointer)seg buff;4.(pointer)offset buff
;output:
WRITE_FILE      PROC    NEAR    PUBLIC,
                DOC_CODE_P:WORD,FILE_LENGTH_P:WORD,SEG_BUFF_P:WORD,OFFSET_BUFF_P:WORD
        PUSH    DS
        MOV     BX,DOC_CODE_P
        MOV     CX,FILE_LENGTH_P
        MOV     DX,OFFSET_BUFF_P
        MOV     AX,SEG_BUFF_P
        MOV     DS,AX
        MOV     AH,40H
        INT     21H
        POP     DS
        RET
WRITE_FILE      ENDP
;-------------------------------------------------
;input : doc_code
;output:
CLOSE_FILE      PROC    NEAR    PUBLIC,
                DOC_CODE_P:WORD
        MOV     BX,DOC_CODE_P
        MOV     AH,3EH
        INT     21H
        RET
CLOSE_FILE      ENDP
;-------------------------------------------------
;input  :pointer to a NULL-termilated string(file name)
;output :ax==document code
OPEN_FILE       PROC    NEAR    PUBLIC,
                FILENAME_P:WORD
                MOV     DX,FILENAME_P
                MOV     AL,02
                MOV     AH,3DH
                INT     21H
                RET
OPEN_FILE       ENDP
;-------------------------------------------------
;input  :1.document code;2.read length;3.seg buff;4.offset buff
;output :
READ_FILE       PROC    NEAR    PUBLIC,
                DOC_CODE_P:WORD,FILE_LENGTH_P:WORD,SEG_BUFF_P:WORD,OFFSET_BUFF_P:WORD
        PUSH    DS
        MOV     BX,DOC_CODE_P
        MOV     CX,FILE_LENGTH_P

        MOV     DX,OFFSET_BUFF_P
        MOV     AX,SEG_BUFF_P
        MOV     DS,AX
        MOV     AH,3FH
        INT     21H
        POP     DS
        RET
READ_FILE       ENDP
;-------------------------------------------------
CODE    ENDS
        END     SHOW_CHAR

⌨️ 快捷键说明

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