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

📄 send3.asm

📁 串行通信8250全双工 微机原理
💻 ASM
字号:
;*******************************;
;*******273********cs0<->cs273,D0~D7依次接LED1~LED8*
;*****A/D转换******cs1<->cs0809,AN0<->ADIN0,CS2<->CS244,EOC<->IN0
;*****D/A转换******cs3<->cs0832,DAOUT<->示波器,DS跳线1<->2 
;*******244********cs2<->cs244,IN0~IN7依次接k1~k8 *; 
;       调节电位器V.ARJ可以调整AN0处的电压
;       模数转换,前端数码管显示,后端在屏幕上显示 
;*******************************;
;1: allowio 0xdc80 0xdc82 0xdc84 0xdc86 0xdc88 0xdc8A 0xdc8C 0xdc90 0xdc92 0xdca0 0xdcb0 0xdcd0 0xdcd2 0xdcc0	
;2: send1.exe 
;------数据段--------------------- 
    DATA  SEGMENT
      IOPORT  EQU       0DC00H

       LS273  EQU       IOPORT+0A0H ;273
      
     IO0809A  EQU       IOPORT+0B0H ;0809 

      ; CS259  EQU       IOPORT+0C0H

                                    ;0832
     IO0832L  EQU       IOPORT+0D0H ;LATCH DATA ADDRESS
     IO0832S  EQU       IOPORT+0D2H ;START TRANSLATE ADDRESS
                                           
       CS244  EQU       IOPORT+0C0H ;244
       
        ADDR1 EQU       IOPORT+80H  ;8250
       ADDR2  EQU       IOPORT+82H  ;interrupt enable register/ LOW BYTE OF DIVI
       INTFR  EQU       IOPORT+84H  ;interrupt flag register
         LCR  EQU       IOPORT+86H  ;line control register
         MCR  EQU       IOPORT+88H  ;modem control register
         LSR  EQU       IOPORT+8AH  ;line status register
         MSR  EQU       IOPORT+8CH  ;modem status register

     DAT8279  EQU       IOPORT+090H ;8279
     CON8279  EQU       IOPORT+092H
            
         LED  DB        3FH,06H,5BH,4FH,66H,6DH,7DH,07H
              DB        7FH,6FH,77H,7CH,39H,5EH,79H,71H,0FFH

        DATA  ENDS
;---------代码段----------------------- 
        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA,ES:DATA
      START:  MOV       AX,DATA
              MOV       DS,AX
              MOV       ES,AX
              

              MOV       DX,LCR
              MOV       AX,80H
              OUT       DX,AX       ;SET THE DLAB,ACCESS THE DIVI REGISTER
              MOV       DX,ADDR1
              MOV       AX,0CH
              OUT       DX,AX       ;9600,SET  divisor gene
              MOV       DX,ADDR2
              MOV       AX,0H
              OUT       DX,AX       ;no interupt
              MOV       DX,LCR
              MOV       AX,07H      ;no pe,8 bit, 1 stop
              OUT       DX,AX
              MOV       DX,ADDR2
              MOV       AX,0
              OUT       DX,AX       ;no interupt
              MOV       DX,MCR
              MOV       AX,03H
              OUT       DX,AX       ;双机通讯                
              MOV       DX,LSR
              IN        AX,DX
              MOV       DX,ADDR1
              IN        AX,DX       

              MOV       AX,0012H    ;设屏幕显示方式为VGA 640X480模示
              INT       10H                     


      START1:
              MOV       AX,0600H
              INT       10H         ;清屏
              AND       CX,0        ;cx为横坐标
              PUSH      CX
       AGAINX:
              MOV       DX,400
              MOV       AL,07H
              MOV       AH,0CH      ;画点
              INT       10H
              CMP       CX,639      ;一行是否满
              JE        START2      ;是则转start1
              INC       CX          ;继续画点
              JMP       AGAINX 
      START2: ; CALL       DELAY         
             ;/////    作 Y 轴 
            
              MOV       DX,0
      AGAINY: MOV       CX,0
              MOV       AL,07H
              MOV       AH,0CH
              INT       10H
              INC       DX
              CMP       DX,400
              JE        START3
              JMP       AGAINY
        START3:
            ; CALL      DELAY            
                                        
              POP       CX   
              
;--------A/D转换------------------------
      DRAW:   MOV       DX,IO0809A  ;启动A/D转换器
              OUT       DX,AX
       
              PUSH      CX
              MOV       CX,100
      WAITE:  LOOP      WAITE
              POP       CX
              MOV       DX,IO0809A
              IN        AX,DX       ;从A/D转换器输入数据    转换结束\
             
              push      cx
              mov       cx,0
              mov       dx,4880
              mov       ah,86h
              int       15h
              pop       cx

              PUSH      AX          ;保护模拟量
                
          
             

;------从244读入逻辑开关状态----------------             
              MOV       DX,CS244
              IN        AX,DX                   
              
              CALL      DISP0        
 
              CALL      SEND        ;发送数字量
                           
              POP       AX

              CALL      DISP3

              CALL      SEND        ;发送模拟量
              
              CALL      RECV
      
              CALL      DISP4

              MOV       DX,LS273
              OUT       DX,AX       ;从273输出读到的数据

              CALL      RECV

              AND       AH,0
              MOV       DX,400      ;dx为纵坐标
              SUB       DX,AX
              MOV       AL,05H      ;设置颜色
              MOV       AH,0CH      ;画点
              INT       10H
              ;CALL      DELAY
              CMP       CX,639      ;一行是否满
              JZ        START1          ;是则转start1
              INC       CX          ;继续画点
              PUSH      DX
              MOV       AH,06H      ;是否有键按下
              MOV       DL,0FFH
              INT       21H
              POP       DX
              JE        DRAW        ;无,则继续画点
              MOV       AX,0003     ;有恢复屏幕为字符方式
              INT       10H    

           
              
       EXIT:  MOV       AX,4C00H
              INT       21H

;---------子程序部分--------------------------

;-----------输出子程序--------------
    DISP0   PROC
            PUSH       BX
            PUSH       CX
           
            ;PUSH       AX
            ;MOV        DX,0101H            
            ;MOV        AH,02H
            ;INT        10H      
            ;POP        AX 
 
            ;PUSH        AX
            ;MOV         DX,410
            ;MOV         CX,40
            ;MOV         AH,0CH
            ;INT         10H
            ;POP         AX

            PUSH       AX
            MOV        DX,0128H
            MOV        AH,02H
            INT        10H
            POP        AX

            MOV        BX,AX
            MOV        CL,4
            SHR        AL,CL
            CMP        AL,9
            JLE        DISP1
            ADD        AL,37H
            MOV        DL,AL 
            MOV        AH,02H
            INT        21H
            JMP        JS0        
    DISP1:  ADD        AL,30H
            MOV        AH,02H
            MOV        DL,AL
            INT        21H
            
    JS0:     MOV        AX,BX
            AND        AL,0FH
            CMP        AL,9
            JLE        DISP2
            ADD        AL,37H
            MOV        AH,02H
            MOV        DL,AL
            INT        21H
            JMP        JS1        
    DISP2:  ADD        AL,30H
            MOV        AH,02H
            MOV        DL,AL
            INT        21H
      JS1:  MOV        AX,BX
            POP        CX
            POP        BX
           
         RET
      DISP0  ENDP


;-----------输出子程序--------------
    DISP3   PROC
            PUSH       BX
            PUSH       CX

            PUSH       AX
            MOV        DX,0228H
            MOV        AH,02H
            INT        10H
            POP        AX  
        
            MOV        BX,AX
            MOV        CL,4
            SHR        AL,CL
            CMP        AL,9
            JLE        DISP13
            ADD        AL,37H
            MOV        DL,AL 
            MOV        AH,02H             
            INT        21H
            JMP        JS3        
   DISP13:  ADD        AL,30H
            MOV        AH,02H
            MOV        DL,AL
            INT        21H
            
    JS3:    MOV        AX,BX
            AND        AL,0FH
            CMP        AL,9
            JLE        DISP23
            ADD        AL,37H
            MOV        AH,02H
            MOV        DL,AL
            INT        21H
            JMP        JS13       
   DISP23:  ADD        AL,30H
            MOV        AH,02H
            MOV        DL,AL
            INT        21H
    JS13:   MOV        AX,BX
            POP        CX
            POP        BX
            RET
      DISP3  ENDP

;-----------输出子程序--------------
    DISP4   PROC
            PUSH       BX
            PUSH       CX
           
            ;PUSH       AX
            ;MOV        DX,0101H            
            ;MOV        AH,02H
            ;INT        10H      
            ;POP        AX 
 
            ;PUSH        AX
            ;MOV         DX,410
            ;MOV         CX,40
            ;MOV         AH,0CH
            ;INT         10H
            ;POP         AX

            PUSH       AX
            MOV        DX,0328H
            MOV        AH,02H
            INT        10H
            POP        AX

            MOV        BX,AX
            MOV        CL,4
            SHR        AL,CL
            CMP        AL,9
            JLE        DISP14
            ADD        AL,37H
            MOV        DL,AL 
            MOV        AH,02H
            INT        21H
            JMP        JS04        
    DISP14:  ADD        AL,30H
            MOV        AH,02H
            MOV        DL,AL
            INT        21H
            
    JS04:     MOV        AX,BX
            AND        AL,0FH
            CMP        AL,9
            JLE        DISP24
            ADD        AL,37H
            MOV        AH,02H
            MOV        DL,AL
            INT        21H
            JMP        JS14        
    DISP24:  ADD        AL,30H
            MOV        AH,02H
            MOV        DL,AL
            INT        21H
      JS14:  MOV        AX,BX
            POP        CX
            POP        BX
           
         RET
      DISP4  ENDP

;-----------发送-----------------------------
       SEND   PROC
              PUSH      BX
              MOV       BX,AX    ;将待发送值存到BX中 
              PUSH      AX
              PUSH      DX
      SEND1:  MOV       DX,LSR
              IN        AX,DX
              TEST      AX,20H
              JNZ       SEND2
              JMP       SEND1
      SEND2:  MOV       AL,BL    
              MOV       DX,ADDR1
              OUT       DX,AL
              POP       DX
              POP       AX
              POP       BX
              RET
      SEND    ENDP

;--------接收子程序-------------------------- 
       RECV   PROC 
              MOV       DX,LSR
              IN        AX,DX
              TEST      AX,01H      ;TEST THE FLAG OF RECIEVE
              JNZ       RECV1
              JMP       RECV
      RECV1:  MOV       DX,ADDR1
              IN        AL,DX
              RET
      RECV    ENDP
;---------延时子程序--------------------------------
 DELAY  PROC      NEAR
           ;   PUSH      AX
              PUSH      CX
           ;   MOV       AX,50H
 DELAY1:
              MOV       CX,60000
      LOOP1:  LOOP      LOOP1
           ;   DEC       AX
          ;    JNZ       DELAY1
              POP       CX
           ;   POP       AX
              RET
       DELAY  ENDP



;------代码段结束-----------------     
        CODE  ENDS
              END  START

⌨️ 快捷键说明

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