本文共 1447 字,大约阅读时间需要 4 分钟。
掌握数码管显示数字的原理。
stack segment stack db 200 dup(0)stack endsdata segment APORT equ 288h CPORT equ 28ah CTRL equ 28bh num db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh ;0~9data endscode segment assume cs:code,ds:data,ss:stack delay MACRO local loop_delay local flag push cx push bx xor bx, bx flag:mov cx, 0ffffh loop_delay:loop loop_delay inc bx cmp bx, 10 jnz flag pop bx pop cx ENDMmain: mov ax,data mov ds,ax mov ax, stack mov ss, ax mov dx, CTRL mov al, 80h ;写入控制字 out dx, al xor si, si xor di, diloop1:cmp si, 10 ;检查个位是否已经增加到10 jz carry ;进位 mov dx, CPORT mov al, 02h out dx, al mov dx, APORT mov al, num[di] ;显示十位 out dx, al delay mov dx, CPORT mov al, 01h out dx, al mov dx, APORT mov al, num[si] ;显示个位 out dx, al inc si ;个位+1 delay jmp loop1 ;还没有进位个位继续增加carry:xor si, si ;进位后将个位清零 cmp di, 10 ;十位增加到10就从00重新开始 jz exit mov dx, CPORT mov al, 02h out dx, al mov dx, APORT mov al, num[di] out dx, al inc di ;十位+1 delay jmp loop1 exit:xor di, di jmp loop1 mov ah,4ch int 21hcode ends end main
转载地址:http://cmiqf.baihongyu.com/