?? b.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 + -