用汇编语言编写七段数码管显示1~9,用8255A接口芯片,用中断方式控制。

如题所述

第1个回答  2010-06-13
正好我们做了这个实验
你知道的,把数据段中的端口地址改为你的计算机可识别的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本回答被提问者采纳