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

📄 aaa.asm

📁 用8255新片连接输入输出电路,输入设备是一组(8)个开关
💻 ASM
字号:
    MY8255_A  EQU       0C860H
    MY8255_B  EQU       0C861H
    MY8255_C  EQU       0C862H
    MY8255_M  EQU       0C863H
       DATAS  SEGMENT
           X  DB        ?
       SPEED  DB        ?
      CHOICE  DB        ?
         MES  DB        'WELCOME! $'
       DATAS  ENDS
        CODE  SEGMENT
        MAIN  PROC      FAR
              ASSUME    CS:CODE,DS:DATAS
      START:  
              MOV       AX,DATAS
              MOV       DS,AX
              
              MOV       CX,0FFFFH
              MOV       DX,MY8255_M
              MOV       AL,82H      ;b为输入a为输出
              OUT       DX,AL
              MOV       DX,OFFSET MES
              MOV       AH,09H
              INT       21H
              SUB       AX,AX
         A0:  MOV       DX,MY8255_B
              IN        AL,DX
              MOV       X,AL
              MOV       DX,MY8255_A
              OUT       DX,AL
              ;CALL      DELAY
              MOV       AL,X
              MOV       SPEED,AL
              MOV       CHOICE,AL            ;选项后四项为CHOICE
              AND       CHOICE,00001111B
             
              AND       AL,01110000B 
              MOV       BL,AL
              MOV       AL,CHOICE
              ;求速度
              
              ROL       BL,1
              AND       X,10000000B
              CMP       X,10000000B          ;最高位为1时左移
              JNZ       RIGHT
              SUB       CX,CX
              MOV       CL,SPEED
              CMP       CHOICE,1H
              JZ        CIRCUIT1
              CMP       CHOICE,3H
              JZ        CIRCUIT2
              CMP       CHOICE,7H
              JZ        CIRCUIT3
              CMP       CHOICE,15
              JZ        CIRCUIT4
              CMP          CHOICE ,12
              JZ         CIRCUIT5   
              JMP       A0
     RIGHT:   SUB       CX,CX
              MOV       CL,SPEED
              CMP       CHOICE,1H
              JZ        CIRCUIT1_R
              CMP       CHOICE,3H
              JZ        A3
              CMP       CHOICE,7H
              JZ        A4
              CMP       CHOICE,15
              JZ        A5
              CMP       CHOICE ,12
              JZ        A6
              A1:      JMP       A0
              A3:      JMP       CIRCUIT2_R  
              A4:      JMP       CIRCUIT3_R
              A5:      JMP       CIRCUIT4_R 
              A6:      JMP       CIRCUIT5_R
           

CIRCUIT1:  ROL       AL,1
              MOV       DX,MY8255_A
              OUT       DX,AL
              CALL      DELAY
              CMP       AL,80H
              JZ        A1
              JMP       CIRCUIT1
   CIRCUIT2:  ROL       AL,1
              MOV       DX,MY8255_A
              OUT       DX,AL
              CALL      DELAY
              CMP       AL,0C0H
              JZ        A1
              JMP       CIRCUIT2
   CIRCUIT3:  ROL       AL,1

              MOV       DX,MY8255_A
              OUT       DX,AL
              CALL      DELAY
              CMP       AL,0E0H
              JZ        A1
              JMP       CIRCUIT3
   CIRCUIT4:  ROL       AL,1
              MOV       DX,MY8255_A
              OUT       DX,AL
              CALL      DELAY
              CMP       AL,0F0H
              JZ        A1
              JMP       CIRCUIT4
   CIRCUIT5:  MOV      AL,00H
              MOV      DX,MY8255_A
              OUT      DX,AL       
              CALL     DELAY 
              MOV      DX, MY8255_A
              MOV      AL,0FFH 
              OUT      DX,AL     
              CALL        DELAY
              JZ       A1
              A2: JMP  A1             
   CIRCUIT1_R:ROR       AL,1
              MOV       DX,MY8255_A
              OUT       DX,AL
              CALL      DELAY
              CMP       AL,1H
              JZ        A2
              JMP       CIRCUIT1_R
   CIRCUIT2_R:ROR       AL,1
              MOV       DX,MY8255_A
              OUT       DX,AL
              CALL      DELAY
              CMP       AL,3H
              JZ        A2
              JMP       CIRCUIT2_R
   CIRCUIT3_R:ROR       AL,1
              MOV       DX,MY8255_A
              OUT       DX,AL
              CALL      DELAY
              CMP       AL,7H
              JZ        A2
              JMP       CIRCUIT3_R
  CIRCUIT4_R: ROR       AL,1
              MOV       DX,MY8255_A
              OUT       DX,AL
              CALL      DELAY
              CMP       AL,15
              JZ        A2
              JMP       CIRCUIT4_R
 
  CIRCUIT5_R: MOV       AL,00H
              MOV       DX,MY8255_A
              OUT       DX,AL       
              CALL      DELAY 
              MOV       AL,0FFH
              MOV       DX,MY8255_A
              OUT       DX,AL       
              CALL      DELAY 
              JZ        A2


        MAIN  ENDP
 DELAY PROC NEAR  
      MOV CX,0FFFFH
      D1:MOV DX,0FFFH
      D2:DEC DX
         JNZ D2
        LOOP D1
         RET
          
         
       DELAY  ENDP
        CODE  ENDS
              END       START

⌨️ 快捷键说明

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