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

📄 c.asm

📁 汇编课程设计
💻 ASM
字号:
STACK    SEGMENT STACK
       DB 200 DUP(0)
STACK    ENDS

DATA     SEGMENT
    X  = 50
    Y  = 10
    
    original_x DB 0
    original_y DB 0
    
DATA     ENDS

CODE     SEGMENT
       ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN:      MOV    AX,DATA
            MOV    DS,AX
           
            
            MOV    CX,Y             ;豆子的行数
  L2:       PUSH   CX                
                      
            MOV    CX,X             ;豆子的列数
            
  L1:       MOV    DL,2EH            ;打印一行豆子
            MOV    AH,2
            INT    21H                 
            LOOP  L1 
            
            MOV    DL,0AH            ;输出换行    
            MOV    AH,2
            INT    21H
            MOV    DL,0DH
            MOV    AH,2
            INT    21H
            
            POP    CX
            
            LOOP   L2
                       
            MOV    AH,01              ;隐藏光标,设置光标大小
            MOV    CX,0C00H
            INT    10H
   
            MOV    AH,3              ;读当前光标属性,位置什么的啦
            INT    10H               ;调试时 使用
            
            MOV    AH,2              ;设置光标位置
            MOV    BH,0
            SUB    DH,Y
            INT    10H
            
            MOV    original_X,DL     ;保存原点坐标
            MOV    original_Y,DH
            
            MOV    AX,0943H          ;在当前位置写字符C
            MOV    BH,0
            MOV    BL,14H
            MOV    CX,1
            INT    10H
            
            
   d:       MOV    AH,3              ;读光标位置
            INT    10H
            
            MOV    AH,0              ;获取按键
            INT    16H
            
            CMP    AL,'S'            ;向下
            JE     d1
            CMP    AL,'D'            ;向右
            JE     d2
            CMP    AL,'W'            ;向上
            JE     d3
            CMP    AL,'A'            ;向左
            JE     d4
            CMP    AL,'Q'
            JE     EXIT
            
            JMP    d                ;其他字符不做任何处理
            
  d1:       MOV     AL,original_Y
            ADD     AL,Y-1
            CMP     DH,AL  
            JGE     d
                                   ;写空白到当前光标,相当于吃豆子
            MOV    AH,0AH
            MOV    AL,0
            MOV    BH,0
            MOV    CX,1
            INT    10H
            
            INC    DH
            JMP    PRINT
            
  d2:       
            MOV    AL,original_X
            ADD    AL,X-1
;            CMP     DL,original_X+X-1  
            CMP    DL,AL
            JGE    d
                                   ;写空白到当前光标,相当于吃豆子
            MOV    AH,0AH
            MOV    AL,0
            MOV    BH,0
            MOV    CX,1
            INT    10H
            
            INC    DL
            JMP    PRINT
               
  d3:       
            MOV    AL,original_Y
            INC    AL
;            CMP     DH,original_Y+1  
            CMP    DH,AL
            JL      d
                                   ;写空白到当前光标,相当于吃豆子
            MOV    AH,0AH
            MOV    AL,0
            MOV    BH,0
            MOV    CX,1
            INT    10H
            
            DEC    DH            
            JMP    PRINT
               
  d4:       
            MOV    AL,original_X
            INC    AL
;            CMP     DL,original_X+1  
            CMP    DL,AL
            JL      d
                                   ;写空白到当前光标,相当于吃豆子
            MOV    AH,0AH
            MOV    AL,0
            MOV    BH,0
            MOV    CX,1
            INT    10H
            
            DEC    DL
            
  PRINT:     
            MOV    AH,2              ;设置光标位置
            MOV    BH,0
            INT    10H 
                                     ;打印C
            MOV    AX,0943H          ;在当前位置写字符C
            MOV    BH,0
            MOV    BL,14H
            MOV    CX,1
            INT    10H   
            
            JMP    d                      
                                               
                         ;到最后应还原光标位置                        
  EXIT:     MOV    AH,4CH
            INT    21H
CODE     ENDS
      END  BEGIN

⌨️ 快捷键说明

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