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

📄 jsfile1.asm

📁 读取百灵达的花样文件并在屏幕上显示出花样
💻 ASM
字号:
stack         SEGMENT
          DW      100h DUP (?)
stack         ENDS
;****************************
data          SEGMENT
file      DB      'A:dh18.dsb',0
handle    DW        ?
buff      DB        2800h DUP (?)
count     DW        ?
data         ENDS
;******************************
code          SEGMENT
            ASSUME    CS:code,DS:data,SS:stack
 main       PROC      FAR
            MOV       AX,data
            MOV       DS,AX
            MOV       SS,AX
              
            MOV       DX,OFFSET file
            MOV       AH,3dh
            MOV       AL,02h
            INT       21h
            JNC       t0  
            JMP       RETurn
 t0:        MOV       handle,AX
                        
            MOV       BX,handle     
            MOV       DX,OFFSET buff
            MOV       AH,3fh
            MOV       CX,2800h
            INT       21h
        ;    MOV       DX,0
        ;    MOV       CX,AX
        ;    SUB       AX,200h
        ;    MOV       AX,CX
        ;    MOV       BX,3
        ;    DIV       BX
        ;    MOV       DI, AX
        ;    PUSH      DI 
            MOV       AL,4               ;置显示模式4
            MOV       AH,0
            INT       10h       
             
            MOV       AX,0b800h
            MOV       ES,AX
            
            MOV       count,0 
            
            MOV       BX,OFFSET buff
            ADD       BX,200h
              
            MOV       CX,50
            MOV       DX,150      
 p2:        MOV       AL,[BX]
            TEST      AL,20h
            JNZ       p0
            MOV       AH,0
            MOV       AL,[BX+2]           ;计算x坐标的值  
            SHR       AL,1
       ;     SHR       AL,1 
       ;     SHR       AL,1
       ;     SHR       AL,1 
    
            ADD       CX,AX            
            JMP       p3
  p0:       MOV       AH,0
            MOV       AL,[BX+2]             
            SHR       AL,1
        ;    SHR       AL,1
        ;    SHR       AL,1
        ;    SHR       AL,1
      
            SUB       CX,AX
  p3:       MOV       AL,[BX]
            TEST      AL,40h
            JNZ       p1
            MOV       AH,0
            MOV       AL,[BX+1]            ;计算y坐标的值
            SHR       AL,1
       ;     SHR       AL,1
       ;     SHR       AL,1
       ;     SHR       AL,1
      
            SUB       DX,AX
            JMP       p4
  p1:       MOV       AH,0
            MOV       AL,[BX+1]
            SHR       AL,1
       ;     SHR       AL,1
       ;     SHR       AL,1
       ;     SHR       AL,1
       
            ADD       DX,AX
            MOV       AX,[BX]
            TEST      AX,08h 
            JZ        p4
            AND       AX,07h
            JMP       p5                   
  p4:       MOV       AX,03h  
  p5:       CALL      draw_point            ;调用画点的子程序
            ADD       BX,3
            INC       count
            CMP       count ,2000
            JNE       p2    
      
             
 RETurn:    MOV       AX,4c00h
            INT       21h
            RET
 main       ENDP
;********************************
draw_point    PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              
              PUSH      AX
              MOV       BX,0
              TEST      DX,01h
              JZ        draw1
              ADD       BX,2000h
    draw1:    SHR       DL,1
              MOV       AL,80 
              MUL       DL
              ADD       BX,AX
              
              PUSH      CX
              SHR       CX,1
              SHR       CX,1
         ;     SHR       CX,1
              ADD       BX,CX
              POP       CX
              
              AND       CX,03h
              INC       CX
              
              POP       AX
              MOV       DL,11111100b   
   SHIFT:     ROR       AL,1
              ROR       AL,1
              ROR       DL,1
              ROR       DL,1
              LOOP      SHift 
              
              AND       ES:[BX],DL
              OR        ES:[BX],AL
              
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
draw_point      ENDP
;************************************
 code        ENDS
             END       main

⌨️ 快捷键说明

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