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

📄 strgsnder0.asm

📁 汇编编写查询式的pc双机通信
💻 ASM
字号:
DATAS  SEGMENT
       DW 120 DUP('')
DATAS  ENDS

STACKS  SEGMENT
INFORM  DB  'Press 1 to recieve,2 to transmit,and others to exit:',13,10,'$'
STACKS  ENDS

CODES SEGMENT
      ASSUME CS:CODES,SS:STACKS,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    
INI:MOV DX,3FBH        ;initialize UART.传输线控制寄存器
    MOV AL,80H         ;set DLAB=1,then cpu can operate with DLL and DLM.
    OUT DX,AL
    MOV DX,3F8H        ;set bit rate 9600b/s.
    MOV AL,12           置除数锁存器
    OUT DX,AL
    INC DX            
    MOV AL,0            不允许中断
    OUT DX,AL
    MOV AL,0BH         ;odd check,one stop bit.
    MOV DX,3FBH         ;8位,停止位1位 有奇偶校验
    OUT DX,AL
    MOV AL,03H         ;set Modem Control Register.
    MOV DX,3FCH       ;  DTR RTS位有效
    OUT DX,AL

CHOOSE:
    LEA DX,INFORM
    MOV AH,09H
    INT 21H

    MOV AH,01H        ; 键入并显示一个字符
    INT 21H
    CMP AL,'1'
    JZ RECIEVE
    CMP AL,'2'
    JZ TRANSMIT
    JMP EXIT


TRANSMIT:
    MOV DX,3FDH          ;the module to check the Line Statement Register.传输线状态寄存器
    IN AL,DX             ;read the data of LSR. 输入传输线状态 

    TEST AL,20H         ; 判断传输线是否空闲
    JZ TRANSMIT

    MOV AH,01H           ;the module for transmiting strings.
    INT 21H
    MOV DX,3F8H
    OUT DX,AL
    
    CMP AL,1BH           ?
    JZ CHOOSE            ;return to press '1' or '2'.
    JMP TRANSMIT
   
RECIEVE:
    MOV DX,3FDH        ;the module to check the Line Statement Register.
    IN AL,DX           ;read the data of LSR. 输入传输线状态

    TEST AL,16H        ;judgeing from this,the UART can know how about BI,FE and OE.
    JNZ ERROR
    TEST AL,01H        ;判断传输线是否空闲
    JZ RECIEVE         ;if RBR is full,jump to recieve module.

    MOV DX,3F8H        ;read the data recieved.
    IN AL,DX

    MOV AH,02H         ;print the character recieved on the screen.显示收到的数据
    MOV DL,AL
    INT 21H
    CMP AL,1BH
    JZ CHOOSE
    JMP RECIEVE

ERROR:
     MOV AH,02H        ;print '!' on the screen to figure something wrong happened.
     MOV DL,'!'
     INT 21H
     JMP RECIEVE

EXIT:MOV AH,4CH        ;return to DOS.
     INT 21H

CODES ENDS
      END START

⌨️ 快捷键说明

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