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

📄 inout.asm

📁 学分管理系统的分析
💻 ASM
字号:
include macro.lib
extrn  busy:byte,openkeyboard:byte,color:word,movflag_key:byte,old_pos_x:word,new_pos_x:word
extrn  new_pos_y:word,old_pos_y:word,closeintr:byte
extrn  store_b:far
public printf,printf1,printf2,printf3,putchar,putint

extern writepoint:far,drawline:far
;===================================
data segment para public 'data'
  hzkname db 'fontlib\hzk16',0
  ascname db 'fontlib\asc16',0
  filecode dw 0
  buf db 32 dup(0)
  length_read dw 0
  x dw 0
  y dw 0
  x1 dw 0
  y1 dw 0
  asc dw 0
  textcolor dw 0
  backcolor dw 0
  address dd 0
  time db 3
  number db 5 dup(0)
  wei_num  db  0
data ends
;==============================================
code segment   public 'code'
  assume cs:code,ds:data,es:data
.386
;==============================================
;功能:显示汉字串
;入口参数:ax---x,bx--y为起始坐标,di指向待显示的字符串
;bp 文本颜色,SI写入方式固定为P_COPY
;出口参数:无
printf  proc far 
        pusha
        push ds
        push es
        
        mov  si, P_COPY
        
        mov dx,ds
        mov es,dx
        mov dx,data
        mov ds,dx
        mov textcolor,bp
      
        mov x,ax
        mov y,bx
        
        openfile hzkname,0                 ;打开汉字库
        jc exit
        mov filecode,ax
lopa:   mov bx,es:[di]               ;取出内码
        cmp bx,0                  ;判断是否结束
        je next
        sub bh,0a1h               ;计算字模地址
        sub bl,0a1h
        mov al,94
        mul bl
        movsx bx,bh
        add ax,bx
        mov cx,32
        mul cx
        mov cx,dx                 ;移动文件指针
        mov dx,ax
        mov al,0
        mov ah,42h
        mov bx,filecode
        int 21h
        readfile filecode,buf,32   ;读字模
        push di
        call write_zi
        pop  di
        inc di
        inc di
        jmp lopa
next:   closefile filecode
exit:   pop es
        pop ds
        popa
        ret
printf  endp
;====================================================
;功能:显示汉字
;入口参数:textcolor为文本颜色
;          x,y为起始坐标,buf为字模缓冲区
;出口参数:x,y为下一个字符的显示位置

write_zi   proc  near
	
        lea di,buf
        mov cl,16
        mov ax,y
        mov bx,x
lopb:   mov ch,16
        mov dx,[di]
        xchg dh,dl
lopc:   shl dx,1
        jnc next
        mov bp,textcolor
	call writepoint
next: 	
        inc bx
        dec ch
        jne lopc
        inc ax
        mov bx,x
        inc di
        inc di
        dec cl
        jne lopb
	add x,16
	
        ret
write_zi endp
;===========================================
;功能:显示字符串
;入口参数:ax,bx为起始坐标,DI指向待显示的字符串
;BP 文本颜色,SI写入方式固定为P_COPY
;出口参数:无

printf1  proc far 
        pusha
        push ds
        push es

        mov cx,ds
        mov es,cx
        mov cx,data
        mov ds,cx
           
        mov x,ax
        mov y,bx
      
        openfile ascname, 0                 ;打开ASCII字库
        jc exit
        mov filecode,ax
lopd:   mov bl,es:[di]               ;取出ASCII码
        cmp bl,0                  ;判断是否结束
        je next3
        
        movsx bx,bl
        mov ax,16
        mul bx
        mov cx,dx                 ;移动文件指针
        mov dx,ax
        mov al,0
        mov ah,42h
        mov bx,filecode
        int 21h
        readfile filecode,buf,16   ;读字模
        push di
        call write_asc
        pop  di
        inc  di
        jmp lopd
next3:   closefile filecode
exit:	pop es
        pop ds
        popa
        ret
printf1  endp
;==================================================
;功能:显示字符
;入口参数:textcolor为文本颜色
;          x,y为起始坐标,buf为字模缓冲区
;出口参数:x,y为下一个字符的显示位置

write_asc   proc   near
        lea di,buf
        mov cl,16
        mov ax,y
	mov bx,x
	mov si,P_COPY
lope:   mov ch,8
        mov dl,[di]
lopf:   shl dl,1
        jnc next
    
	 call writepoint
next:
	inc bx
        dec ch
        jne lopf
        inc ax
        mov bx,x
        inc di
        dec cl
        jne lope
        add x,8
        ret
write_asc endp
;==========================================================
;功能:显示字符
;入口参数:bp为文本颜色
;          bx--x, cx---y为起始坐标,al字符ASCII码
;出口参数:无

putchar proc far
        pusha
        push ds
        mov di,data
        mov ds,di
	mov x,bx
	mov y,cx
	xor cx,cx
	mov cl,al
        
        openfile ascname, 0                 ;打开ASCII字库
        jc exit
        mov filecode,ax
        mov ax,16
        mul cx
        mov cx,dx                 ;移动文件指针
        mov dx,ax
        mov al,0
        mov ah,42h
        mov bx,filecode
        int 21h
        readfile filecode,buf,16   ;读字模
        call write_asc
exit:	closefile filecode
        pop ds
        popa
        ret
putchar  endp
;=================================================
;输出一个整数
;入口参数:AX ---x, BX--y ,BP---COLOR,dx--为要输出的整数
putint  proc  far
	pusha
	push  ds
	mov   cx, data
	mov   ds, cx
	mov  cx, bx
	mov  bx, ax
	mov  ax, dx
	mov  dl, 10
again:  div  dl
	or   al, al
	jz   next
	mov  dh, al
	mov  al, ah
	mov  ah, 0
	push ax
	inc  wei_num
	mov  ax, 0
	mov  al, dh
	jmp  again
next:
	mov  al, ah
	mov  ah, 0
	push ax
	inc  wei_num
	
	.REPEAT 
	pop  ax
	add  ax, 30h
	call putchar
	add  bx,8
	dec  wei_num
	.UNTIL  wei_num == 0
	
	pop  ds
	popa
	ret

putint  endp	
;==============================================================
;动画字,延迟出字
;入口参数:ax---x,bx--y为起始坐标,di指向待显示的字符串
;bp 文本颜色,SI写入方式固定为P_COPY
;出口参数:无
printf2  proc far 
        pusha
        push ds
        push es
        
        mov  si, P_COPY
        
        mov dx,ds
        mov es,dx
        mov dx,data
        mov ds,dx
        mov textcolor,bp
      
        mov x,ax
        mov y,bx
        
        openfile hzkname,0                 ;打开汉字库
        jc exit
        mov filecode,ax
lopa:   mov bx,es:[di]               ;取出内码
        cmp bx,0                  ;判断是否结束
        je next
        sub bh,0a1h               ;计算字模地址
        sub bl,0a1h
        mov al,94
        mul bl
        movsx bx,bh
        add ax,bx
        mov cx,32
        mul cx
        mov cx,dx                 ;移动文件指针
        mov dx,ax
        mov al,0
        mov ah,42h
        mov bx,filecode
        int 21h
        readfile filecode,buf,32   ;读字模
        push di
        call write_zi
	
	delay  10
        pop  di
        inc di
        inc di
        jmp lopa
next:   closefile filecode
exit:   pop es
        pop ds
        popa
        ret
printf2  endp
;动画字,延迟出字
;入口参数:ax---x,bx--y为起始坐标,di指向待显示的字符串
;bp 文本颜色,SI写入方式固定为P_COPY
;出口参数:无
printf3  proc far 
        pusha
        push ds
        push es
        
        mov  si, P_COPY
        
        mov dx,ds
        mov es,dx
        mov dx,data
        mov ds,dx
        mov textcolor,bp
      
        mov x,ax
        mov y,bx
        
        openfile hzkname,0                 ;打开汉字库
        jc exit
        mov filecode,ax
lopa:   mov bx,es:[di]               ;取出内码
        cmp bx,0                  ;判断是否结束
        je next
        sub bh,0a1h               ;计算字模地址
        sub bl,0a1h
        mov al,94
        mul bl
        movsx bx,bh
        add ax,bx
        mov cx,32
        mul cx
        mov cx,dx                 ;移动文件指针
        mov dx,ax
        mov al,0
        mov ah,42h
        mov bx,filecode
        int 21h
        readfile filecode,buf,32   ;读字模
        push di
        call write_zi
	delay	1
        pop  di
        inc di
        inc di
        jmp lopa
next:   closefile filecode
exit:   pop es
        pop ds
        popa
        ret
printf3  endp
         


code   ends
      end

⌨️ 快捷键说明

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