回 帖 发 新 帖 刷新版面

主题:请高手帮忙解释一下下面的程序

CODE    SEGMENT
        ASSUME CS:CODE,DS:CODE,ES:CODE
        ORG 35C0H               ;TX=RX
H11:    JMP START
Z8251   EQU 0FFE1H
D8251   EQU 0FFE0H
COM_MOD EQU 04EH
COM_COM EQU 25H
ZXK     EQU 0FFDCH
ZWK     EQU 0FFDDH
LED     DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
        DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H
BUF     DB ?,?,?,?,?,?
START:  MOV BX,0400H
        MOV AL,[BX]
        CMP AL,00H
        JNZ SR0
SR8251: MOV DX,Z8251
        MOV AL,COM_MOD
        OUT DX,AL
        MOV AL,COM_COM
        OUT DX,AL
        MOV AL,01H
        MOV BX,0400H
        MOV [BX],AL
SR0:    CALL WP
        MOV SI,4000H
        MOV DI,5000H
        MOV CX,0010H
SR1:    MOV AH,[SI]
        CALL SEND
        CALL RX
        MOV [DI],AH
        INC SI
        INC DI
        LOOP SR1
SR2:    CALL DIS
        JMP SR2
RX:     MOV DX,Z8251
RX1:    IN AL,DX
        TEST AL,02H
        JZ RX1
        MOV DX,D8251
        IN AL,DX
        MOV AH,AL
        RET
;------------------------
WP:     MOV BUF,11H
        MOV BUF+1,10H
        MOV BUF+2,10H
        MOV BUF+3,10H
        MOV BUF+4,10H
        MOV BUF+5,10H
        RET
;--------------------------
SEND:   MOV DX,Z8251
W1:     IN AL,DX
        TEST AL,01H
        JZ W1
        MOV DX,D8251
        MOV AL,AH
        OUT DX,AL
        RET
;---------------------------
DIS:    MOV CL,20H
        MOV BX,OFFSET BUF
DIS1:   MOV AL,[BX]
        PUSH BX
        MOV BX,OFFSET LED
        XLAT
        POP BX
        MOV DX,ZXK
        OUT DX,AL
        MOV AL,CL
        MOV DX,ZWK
        OUT DX,AL
        PUSH CX
        MOV CX,0100H
DELAY:  LOOP $
        POP CX
        CMP CL,01H
        JZ EXIT
        INC BX
        SHR CL,1
        JMP DIS1
EXIT:   MOV AL,00H
        MOV DX,ZWK
        OUT DX,AL
        RET
;--------------------------
CODE    ENDS
        END H11

回复列表 (共4个回复)

沙发

这段代码是用于8251USART进行查询方式的串行通讯的。

板凳

谢谢,能具体一点吗?比如说每段具体做了哪些事?

3 楼

有些代码需要作者自己说明,例如那个led定义的数据是什么东西,还有往buf里面填的那些数据代表什么等等。

4 楼

该程序是用来结合8251芯片来实现下面的功能的:

利用本实验系统内的8251接口芯片,采用自发自收的方法,实现数据收发通信实验。发送的数据为4000H开始的16个源RAM区单元内容,接收到的数据放在5000H开始的RAM单元中,核对接收的数据是否和发送的数据一致。

我来回复

您尚未登录,请登录后再回复。点此登录或注册