七段数码管代码问题

晴空飞一鹤 2014-12-29 10:09:33

data segmentio8255a
equ 28ahio8255b
equ 28bhio8255c
equ 288h
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码
buffer1 db 0,0 ;存放要显示的十位和个位
bz dw ? ;位码
data ends
code segment
assume cs:code,ds:data
start: mov ax,data mov ds,ax
mov dx,io8255b ;将8255设为A口输出
mov al,80h
out dx,al
mov di,offset buffer1 ;设di为显示缓冲区
loop1: mov cx,030h ;循环次数

最后为何循环次数是30H
loop2: mov bh,02
lll: mov byte ptr bz,bh
push di
dec di
add di, bz
mov bl,[di] ;bl为要显示的数
pop di
mov bh,0
mov si,offset led ;置led数码表偏移地址为SI add si,bx ;求出对应的led数码 mov al,byte ptr [si] mov dx,io8255c ;自8255A的口输出 out dx,al mov al,byte ptr bz ;使相应的数码管亮 mov dx,io8255a out dx,al push cx mov cx,100 delay: loop delay ;延时 pop cxmov al,00h out dx,al mov bh,byte ptr bz shr bh,1 jnz lll loop loop2 ;循环延时 mov ax,word ptr [di] cmp ah,09 jnz set cmp al,09 jnz set mov ax,0000 mov [di],al mov [di+1],ah jmp loop1set: mov ah,01 int 16h jne exit ;有键按下则转exit mov ax,word ptr [di] inc al aaa mov [di],al ;al为十位 mov [di+1],ah ;ah中为个位 jmp loop1exit: mov dx,io8255a mov al,0 ;关掉数码管显示 out dx,al mov ah,4ch ;返回 int 21hcode ends end start
...全文
214 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧