⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 b.asm

📁 显示与键盘实验数码管动态显示的原理
💻 ASM
字号:
OUTBIT   equ 8002h  ;位码输出地址
OUTSEG   equ 8004h  ;段码输出口地址
data   segment
LEDBuf db  6 dup(?)  ; 显示缓冲区
Num    db  1 dup(?)  ; 显示的起始数字
DelayT db  1 dup(?) ;显示LEDBuf区数字的重复次数
LEDMAP:              ; 八段管显示段码表
       db  3fh,06h,5bh,4fh,66h,6dh,7dh,,07h
       db  7fh,6fh,77h,7ch,39h,5eh, 79h,71h
data   ends
code   segment
       assume cs:code, ds:data
Delay  proc  near ; 延时过程
       push  ax
       push  cx
       mov   al, 0
       mov   cx,ax
       loop  $
       pop   cx
       pop   ax
       ret
Delay  endp
DisplayLED proc near;显示过程
       mov   bx, offset LEDBuf
       mov   cl, 6         ; 共6个八段管
       mov   ah, 00100000b ; 从左边开始显示
DLoop: mov   dx, OUTBIT
       mov   al, 0       ; 关闭所有八段管
       out   dx,al
       mov   al, [bx]    ;开始逐位显示
       mov   dx, OUTSEG
       out   dx,al
       mov   dx, OUTBIT 
       mov   al, ah
       out   dx, al       ; 显示一位八段管
       push  ax
       mov   ah, 0fh
       call  Delay
       pop   ax
       shr   ah, 1
       inc   bx
       dec   cl
       jnz   DLoop
       mov   dx, OUTBIT
       mov   al, 0
       out   dx,al        ; 关所有八段管
       ret
DisplayLED endp
Start  proc near  ;主过程
       mov   ax, data
       mov   ds, ax
       mov   Num, 0
MLoop: inc   Num   ;从数字1开始显示
       mov   ch,Num
       mov   ah,0
       mov   cl,6
       mov   bx,offset LEDBuf
FillBuf: mov   si, offset LEDMap
       mov   al,ch
       and   al,0fh ;只显示一位数字
       add   ax,si
       mov   si,ax
mov   al,[si]        ; 数据转换成显示段码
       mov   [bx], al ; 显示码存入显示缓冲
       inc   bx
       inc   ch
       dec   cl
       jnz   FillBuf
       mov   DelayT,8  ;LEDBuf区的6个数字显示8次
DispAgain:
       call  DisplayLED       ; 显示
       dec   DelayT
       jnz   DispAgain
       jmp   MLoop
Start  endp
code   ends
       end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -