刚刚完成了一个程序,用8255控制七段显示器从0-999记数.请朋友帮我看看可有错误,因为没有实验箱我不能上机调试,只能用汇编编译器马马虎虎的测试下,感觉没什么问题.
STACK SEGMENT STACK
STACK1 DW 80H DUP(?)
STACK ENDS
;
DATAS SEGMENT
PORT8255 EQU 63H
PORTA EQU 60H
PORTB EQU 61H
PORTC EQU 62H
LEDDRIVE DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,18H,08H,03H,46H,21H,06H,0EH
DISNUM DB 0,0,0,0
DISPORT DB 0EH,0DH,0BH,07H
DATAS ENDS
;
CODE SEGMENT
ASSUME CS:CODE,DS:DATAS,SS:STACK
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,PORT8255
MOV AL,80H
OUT DX,AL ;CHOSE 8255 MODLE
MOV DI,0
AGAIN:
MOV SI,0
MOV CX,4
DIS: MOV AH,DISPORT[SI]
MOV AL,0
OUT PORTC,AL ;CUT SHOW
MOV AL,DISNUM[SI]
MOV BX,OFFSET LEDDRIVE
XLAT
OUT PORTA,AL ;SHOW NUM
MOV AL,AH ;OPEN LED
OUT PORTC,AL
PUSH CX
MOV CX,350H
DELAY1:LOOP DELAY1
POP CX
INC DI
CMP DI,300
JAE FIRST
JMP OV
FIRST:
MOV DI,0
INC DISNUM
CMP DISNUM,10
JAE SECOND
JMP OV
SECOND:
MOV DISNUM,0
INC [DISNUM+1]
CMP [DISNUM+1],10
JAE THIRD
JMP OV
THIRD:
MOV [DISNUM+1],0
INC [DISNUM+2]
CMP [DISNUM+2],10
JAE FOUR
JMP OV
FOUR:
MOV [DISNUM+2],0
INC [DISNUM+3]
CMP [DISNUM+3],10
JAE ZF
JMP OV
ZF:
MOV [DISNUM+3],0
OV:
INC SI
LOOP DIS
JMP AGAIN
CODE ENDS
END START