使用8086汇编语言,在8255上设计一个7段数码管动态显示的程序

要求:用8255 控制两个7段数码管(共阴极)从00~99循环显示,每秒钟变化一次,按任意键退出。
端口地址PA口:0c000 PB口:0c001 PC口:0c002 控制字: 0xc003
(最好写出注解,如果注解详细,额外加分)

第1个回答  2016-05-15
正好我们做了这个实验
你知道的,把数据段中的端口地址改为你的计算机可识别的8255A的端口地址

;从键盘接收数字,在七段数码管上显示

data segment
ioport equ 2400h-0280h
io8255a equ ioport+288h
io8255b equ ioport+28bh
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
mesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,io8255b ;使8255的A口为输出方式
mov ax,10000000b ;80h,A组方式0,A口输出,B组方式0,B口输出,C口输出
out dx,al
sss:
mov dx,offset mesg1 ;显示提示信息
mov ah,09h
int 21h
mov ah,01 ;从键盘接收字符
int 21h
cmp al,'0' ;是否小于0
jb sss ;若是则退出
cmp al,'9' ;是否大于9
ja sss ;若是则退出
and al,0fh ;将所得字符的ASCII码减30H
mov bx,offset led ;bx为数码表的起始地址
xlat ;求出相应的段码
mov dx,io8255a ;从8255的A口输出
out dx,al
jmp sss ;转SSS
exit:
mov ah,4ch ;返回DOS
int 21h
code ends
end start本回答被提问者和网友采纳
第2个回答  2016-04-30
我明白这个道理,肯定好的 好的
第3个回答  2016-04-30
定时一秒钟,怎么弄,提示一下。追问

延时多久随意,我不介意

相似回答