;在1000H开始的内存中,放有1000个ASCII字符,请设计一程序,将这串ASCII字符以异步串行通信方式从8255A PB0输出,采用偶校验、一位起始位、一位终止位、波特率500 (可调用1ms软件定时程序 “D1MS”):参考程序如下,但是我看不懂他的意思,麻烦 高手帮我注释下哈,谢谢

MOV    SI ,1000H
MOV    CX ,1000
MOV    DX ,30FH               ;(口地址共4分)
MOV    AL ,10000000B          ;(控制字1分)
OUT        DX,AL                  ;
MOV    DX,30DH                 ;这是PB口的地址吗?
MOV    AL ,0FFH               ;发停止位,为什么要有这个呢?停止位可不可以自己
                                     定 义?
OUT    DX ,AL
CALL    D1MS
CALL    D1MS
L1:     MOV    BL ,8            ; 这句话的作用?
MOV    AL ,0
OUT    DX ,AL              ;发起始位
CALL    D1MS
CALL    D1MS
MOV    AL ,[SI]
AND     AL ,AL
JP    L2
OR    AL  ,80H
L2:    OUT    DX ,AL
CALL    D1MS
CALL    D1MS
ROR    AL,1
DEC    BL
JNZ    L2
MOV    AL  ,0FFH
OUT    DX ,AL
CALL    D1MS
CALL    D1MS
INC    SI 
LOOP    L1
HLT;