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

📄 rece1.asm

📁 串行通信8250全双工 微机原理
💻 ASM
字号:
                                                         ;**************************
;*     8250串行通信接收程序       *
;通过超级终端发送数据,设置波特率为9600,8位数据
;1位停止位,无奇偶校验。本程序负责接受
;并回送数据,同时显示在屏幕上.
;1: allowiio 0xDC80 0xDC82 0xDC84 0xDC86 0xDC88 0xDC8A  0xDC8C 
;2: receive1
;**************************
        DATA  SEGMENT
      IOPORT  EQU       0DC00H
       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
        DATAR  DB        100H DUP(?)
        DATA  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA
      START:  MOV       AX,DATA
              MOV       DS,AX
             
              MOV       SI,OFFSET DATAR
              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
              MOV       DX,ADDR2
              MOV       AX,0H
              OUT       DX,AX       ;9600,SET  divisor gene
              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
              
              
        CRD:  CALL      RECV
              
              MOV       AH,06H      ;判断是否有键按下
              MOV       DL,0FFH
              INT       21H
              JE        CRD

       ;EXIT: 
              MOV       AX,4C00H
              INT       21H
              ;JMP       OUTE
;--------接收子程序-------------------------- 
       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
              MOV       DS:[SI],AL  ;SAVE THE READING DATA
              ;CMP       AL,1BH       ;IF THE DATA IS EOC THE EXIT
              ;JNZ       DISP1
              ;MOV       AH,4CH
             ; INT       21H

      DISP1:  mov       bl,al
              mov       cl,4
              shr       al,cl
              cmp       al,9;/////
              jle        LLL
              jmp       DDD
      LLL:    add       al,30h
              jmp       disp2
      DDD:    add       al,37h
      disp2:  MOV       AH,02h      
              MOV       DL,AL
              int       21h         ;输出高四位 
              mov       al,bl
              and       al,0fh
              cmp       al,9;/////
              jle       LLL1 
              jmp       DDD1
      LLL1:   
              add       al,30h
              jmp       disp3
      DDD1:   add       al,37h
      disp3:               
              mov       dl,al       
              mov       ah,02h
              INT       21H         ;输出低四位 
              mov       ah,02h
              mov       dl,' '
              int       21h
              RET
      RECV    ENDP
;--------程序结束---------------------- 
       ;OUTE:
        CODE  ENDS                  ;end of code segment
              END       START       ;end assembly

⌨️ 快捷键说明

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