这个是题目的要求:
实现8255三个口编程从一个口输出数据再从另一个口输入数据,判断输入的数据和输出的数据是否吻合,若吻合,再反过来,从原来的输入口输出数据再从原来的输出口输入数据,若吻合,则证明这两个口是好的,否则就是有问题。
以下是我写的程序,不知道哪里有问题,请指教
A口和B口用数据线连起来,在用一条数据线,一端插C口,另一端用导线将高低四位对应连起来。
code segment
assume cs:code
start:
;A口向B口送数
mov dx,203h;控制口地址
mov al,90h
out dx,al
mov dx,200h;A口地址
mov al,0ffh
out dx,al
mov dx,201h
in al,dx
cmp al,0ffh
jnz a
;B口向A口送数
mov dx,203h
mov al,82h
out dx,al
mov dx,201h
mov al,0ffh
out dx,al
mov dx,200h
in al,dx
cmp al,0ffh
jnz a
;c口第四位输入,高四位输出
mov dx,203h
mov al,81h
out dx,al
mov dx,202h
mov al,0ffh
;out dx,al
and al,0fh ;屏蔽c口高4位
mov cl,4 ;左移4位到高位
shl al,cl
out dx,al ;输出高4位
mov dx,202h
in al,dx
and al,0fh ;屏蔽c口高4位
mov cl,4 ;左移4位到高位
shl al,cl
cmp al,0f0h
jnz a
;C口高四位输入,地四位输出
mov dx,203h
mov al,88h
out dx,al
mov dx,202h
mov al,0ffh
and al,0fh ;屏蔽c口高4位
out dx,al ;输出高4位
mov dx,202h
in al,dx
and al,0f0h ;屏蔽c口低4位
mov cl,4 ;右移4位到高位
shr al,cl
cmp al,0fh
jnz a
mov ah,4ch
int 21h
a:mov dx,210h
mov al,0fh
out dx,al
call delay
delay proc near
push cx
mov cx,0ffh
loop $
pop cx
ret
delay endp
code ends
end start