惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
Arctic Wolf
博客园 - 聂微东
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
小众软件
小众软件
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
L
LangChain Blog
A
About on SuperTechFans
阮一峰的网络日志
阮一峰的网络日志
I
Intezer
T
The Blog of Author Tim Ferriss
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
S
Secure Thoughts
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
P
Privacy & Cybersecurity Law Blog
O
OpenAI News
H
Heimdal Security Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Help Net Security
Help Net Security
C
Cyber Attacks, Cyber Crime and Cyber Security
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
G
Google Developers Blog
博客园 - Franky
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
Kaspersky official blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tor Project blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tenable Blog
Google Online Security Blog
Google Online Security Blog
PCI Perspectives
PCI Perspectives

Yesterday17's Blog

2026 新年解密红包 / Melody Flag | Yesterday17's Blog 谈谈 Iori 的设计思路(二):如何实现一个 Showroom 录制工具? | Yesterday17's Blog 谈谈 Iori 的设计思路(一):从 Nico Timeshift 说起 | Yesterday17's Blog Iori Minyami 0.1.0 发布 | Yesterday17's Blog 2025 新年解密红包 / Melody Flag | Yesterday17's Blog 使用 Cloudflare Warp 解决罗森票务的海外登录问题 | Yesterday17's Blog How To Blog 04: The Astro v5 Era | Yesterday17's Blog 谈谈 tokio::select! 的公平性 | Yesterday17's Blog Learning Pingora 05 - Connect with TLS | Yesterday17's Blog Leaving Bytedance | Yesterday17's Blog 大橋彩香 AsiaTour「Reflection」上海公演 个人向记录 & Repo | Yesterday17's Blog Recoving from burnout - What happened? | Yesterday17 Yubikey 重建手册 | Yesterday17's Blog How To Blog 03: Heimus | Yesterday17's Blog 🪧 Blog Migration Accouncement | Yesterday17's Blog Learn Your IDE - VSCode 是如何仅重启插件的? | Yesterday17's Blog How To Blog 02: Astro❤️Password | Yesterday17's Blog How To Blog 01: Why, How, and the Future | Yesterday17's Blog Learning Pingora 04 - Establish L4 Connection | Yesterday17's Blog Learning Pingora 03 - Upstreams and Peers | Yesterday17's Blog Learning Pingora 02 - A Simple HTTP Server | Yesterday17's Blog Learning Pingora 01 - Getting Started | Yesterday17's Blog 2024 新年解密红包 / Melody Flag | Yesterday17's Blog 向新的一年飞驰——记录 2023 | Yesterday17's Blog 「サクラノ刻」对话选摘(2) | Yesterday17's Blog PGP Key Revocation 注销声明 | Yesterday17's Blog 「サクラノ刻」对话选摘(1) | Yesterday17's Blog 2023 新年解密红包 / Melody Flag | Yesterday17's Blog 『蒼の彼方のフォーリズム』通关感想 | Yesterday17's Blog 单显卡直通教程 | Yesterday17's Blog 对博客与笔记的思考 | Yesterday17's Blog Project Anni 之旅(3)自动化 Flutter 应用 CI/CD 上架流程 | Yesterday17's Blog AsobiStage 直接播放链接 | Yesterday17 如何在后分P时代进行投稿——sswa使用详解 | Yesterday17's Blog JSON RPC 与 LSP 协议基础 | Yesterday17's Blog Grajapa Shueisha / BookEnd 加密方式调查 | Yesterday17's Blog 【2022篇+WriteUp】如何再收一个新年红包? | Yesterday17's Blog 如何将良心云的良心功能清理干净 | Yesterday17's Blog 【油猴脚本】bilibili 投稿页面返回旧版+旧版页面强制允许分P上传 | Yesterday17's Blog Cloudr1v1 授权方式分析 | Yesterday17 Typora 1.0.2 逆向实录 | Yesterday17's Blog Project Anni 之旅(2)ValueAfterTable——toml-rs的实现与限制 | Yesterday17's Blog IPv4透明代理+IPv6 Passthrough——树莓派单臂软路由折腾记 | Yesterday17's Blog Chaos; Child 汉化补丁 神秘编码探索 | Yesterday17's Blog 镣铐与舞蹈——个性与共性之迷思 | Yesterday17's Blog Go 学习笔记 02 - 找准 io 之道 | Yesterday17's Blog NAT Slipstreaming v1 原理浅析 | Yesterday17's Blog 绕过「9-nine-」的 CDKEY 验证——KrkrPlugin 正(?)向实录 | Yesterday17's Blog 静流的青春纪念册——「サクラノ刻 -櫻の森の下を歩む-」体验版感言 | Yesterday17's Blog Project Anni 之旅 01 - 从 clap-builder 到 derive | Yesterday17's Blog [Google CTF 2021] CPP WriteUp | Yesterday17's Blog 获取 アソビステージ 的实际播放链接 | Yesterday17's Blog 90 行 Rust 代码实现 AsyncTeeReader | Yesterday17's Blog 或许还算有价值一读的文章列表 | Yesterday17's Blog 从零开始的 Seedbox 之旅 | Yesterday17's Blog [随笔]技术型博客行文迷思(1) | Yesterday17's Blog 浅谈 git fetch 的工作方式 | Yesterday17's Blog 『ソーサレス*アライヴ! ~the World's End Fallen Star~』通关感想" | Yesterday17's Blog Rust std::fmt 格式语法简述 | Yesterday17's Blog 日亚修改居住国的解决方案 | Yesterday17's Blog [Windows/Linux] GC553 的 Switch 完美采集之路 | Yesterday17's Blog 【翻译】Subtyping and Variance / 子类型与变型 | Yesterday17's Blog Berd's Red Envelope 2021 WriteUp | Yesterday17's Blog 【中英对照】ALSA 音频 API 使用教程/A Tutorial on Using the ALSA Audio API | Yesterday17's Blog 从 cue_scanner.l 看 CUE Sheet 的词法单元 | Yesterday17's Blog Postman 历史记录导出的解决方案 | Yesterday17's Blog 《恋爱绮谭 不存在的夏天》通关感想 | Yesterday17's Blog [微机实验/TD-PITE] 微机接口综合实验 | Yesterday17's Blog [微机实验/TD-PITE] 键盘扫描及数码管显示实验 | Yesterday17's Blog Airsonic Advanced+Google Drive+Caddy 部署纪实 | Yesterday17's Blog X-NUCA 2020 - hellowasm 题解 | Yesterday17's Blog [微机实验/TD-PITE] 8251 串行接口实验 | Yesterday17's Blog Node.js child_process.fork 与 env 污染 RCE | Yesterday17's Blog EP.01 「夜の向日葵」 | Yesterday17's Blog [微机实验/TD-PITE] 8254 定时/计数器实验+选做实验 | Yesterday17's Blog [JLU CTF/2020] babywasm WriteUp | Yesterday17's Blog PHP 反序列化与经典利用 | Yesterday17's Blog WebAssembly 逆向简述 | Yesterday17's Blog 『彼女、お借りします』一期完结点评 | Yesterday17's Blog [微机实验/TD-PITE] D/A 转换实验+选做实验 | Yesterday17's Blog [微机实验/TD-PITE] A/D 转换实验+选做实验 | Yesterday17's Blog 开源项目申请 JetBrains Open Source License 简单流程 | Yesterday17's Blog 微软拼音与 JetBrains 搜索快捷键冲突的解决方案 | Yesterday17's Blog [微机实验/TD-PITE] 8259 中断优先级实验+选做实验 | Yesterday17's Blog IFTTT 测试(续) | Yesterday17 IFTTT 测试 | Yesterday17's Blog [微机实验/TD-PITE] 存储器扩展实验+选做实验 | Yesterday17's Blog 新版 GCC 针对 -fdump-translation-unit 的替代方案 | Yesterday17's Blog 一次 HSTS 策略配置的排错之旅 | Yesterday17's Blog YukiNative 踩坑记——Windows 的消息队列 | Yesterday17's Blog 我是我自己——论获取 HTTPS 证书时的验证步骤 | Yesterday17's Blog 【设计文档】对 PUG 的大规模设计修订(1.1) | Yesterday17's Blog GS65 折腾记(2)加装固态,分区,Grub2 引导 Manjaro LiveCD | Yesterday17's Blog 「さくら、もゆ。」的空白字体列表——一次逆向问题定位过程实录 | Yesterday17's Blog GSuite 探索篇(1)使用 Service Account 向 Google Drive 传输文件 | Yesterday17's Blog 『サクラノ詩 -櫻の森の上を舞う-』通关感想 | Yesterday17's Blog 《ATRI -My Dear Moments-》通关感想 | Yesterday17's Blog [工具][VSCode 扩展] AegiKit——方便 Aegisub 使用的工具箱 | Yesterday17's Blog 贝塞尔曲线、字体矢量化与曲线运算 | Yesterday17's Blog NAT 类型初探 | Yesterday17's Blog
[微机实验/TD-PITE] 数码管显示实验 | Yesterday17's Blog
Yesterday17 · 2020-11-16 · via Yesterday17's Blog

ToC

  • 实验内容
  • 实验接线
  • 代码
    • 数字滚动
    • 持久显示
  • 实验效果
  • 选做实验
    • 选做实验 1-2
      • 说明
      • 实现
    • 选做实验 3
      • 说明
      • 实现
      • 效果
    • 选做实验 4
      • 说明
      • 实现

实验内容

使七段共阴极数码管显示如下内容:

  1. 从右到左逐位显示移动的数字 0~9。即一开始是 0 从右到左移动,然后是 1,然后是 2,以此类推。最后在 9 移动完后返回 0,继续循环。
  2. 使六位数码管从左到右显示稳定的数字 123456

实验接线

照着书上连就可以了。在这个实验中,PC 甚至可以不连(笑)

代码

数字滚动

A8255 EQU 0600H

B8255 EQU 0602H

C8255 EQU 0604H

CON8255 EQU 0606H

SSEG SEGMENT STACK

DW 0, 0, 0, 0

SSEG ENDS

DATA SEGMENT

TBL:

DB 3FH ;; 0

DB 06H ;; 1

DB 5BH ;; 2

DB 4FH ;; 3

DB 66H ;; 4

DB 6DH ;; 5

DB 7DH ;; 6

DB 07H ;; 7

DB 7FH ;; 8

DB 6FH ;; 9

SEQ:

DB 00011111B ;; POS 0

DB 00101111B ;; POS 1

DB 00110111B ;; POS 2

DB 00111011B ;; POS 3

DB 00111101B ;; POS 4

DB 00111110B ;; POS 5

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:SSEG

START PROC

MOV AX, DATA

MOV DS, AX

MOV AL, 10001001B ;; A B OUT, C IN

MOV DX, CON8255

OUT DX, AL

MOV AX, 0000H

LO:

CALL PUT

CALL DELAY

INC AL

CMP AL, 6

JNE LO

MOV AL, 0

INC AH

CMP AH, 10

JNE LO

MOV AH, 0

JMP LO

MOV AX, 4C00H

INT 21H

START ENDP

;; NUM: AH

;; POS: AL

PUT PROC

PUSH AX

;; SELECT POS

LEA BX, SEQ

PUSH AX

MOV AH, 0

MOV SI, AX

;; OUTPUT POS

MOV DX, A8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

;; SELECT NUM

LEA BX, TBL

MOV AL, AH

MOV AH, 0

MOV SI, AX

;; OUTPUT DATA

MOV DX, B8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

RET

PUT ENDP

DELAY PROC

MOV CX, 0FFFFH

LOOP $

MOV CX, 0FFFFH

LOOP $

RET

DELAY ENDP

CODE ENDS

END START

持久显示

A8255 EQU 0600H

B8255 EQU 0602H

C8255 EQU 0604H

CON8255 EQU 0606H

SSEG SEGMENT STACK

DW 0, 0, 0, 0

SSEG ENDS

DATA SEGMENT

TBL:

DB 3FH ;; 0

DB 06H ;; 1

DB 5BH ;; 2

DB 4FH ;; 3

DB 66H ;; 4

DB 6DH ;; 5

DB 7DH ;; 6

DB 07H ;; 7

DB 7FH ;; 8

DB 6FH ;; 9

SEQ:

DB 00011111B ;; POS 0

DB 00101111B ;; POS 1

DB 00110111B ;; POS 2

DB 00111011B ;; POS 3

DB 00111101B ;; POS 4

DB 00111110B ;; POS 5

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:SSEG

START PROC

MOV AX, DATA

MOV DS, AX

MOV AL, 10001001B ;; A B OUT, C IN

MOV DX, CON8255

OUT DX, AL

MOV AX, 0000H

LO:

MOV AX, 0105H

CALL PUT

CALL DELAY

MOV AX, 0204H

CALL PUT

CALL DELAY

MOV AX, 0303H

CALL PUT

CALL DELAY

MOV AX, 0402H

CALL PUT

CALL DELAY

MOV AX, 0501H

CALL PUT

CALL DELAY

MOV AX, 0600H

CALL PUT

CALL DELAY

JMP LO

MOV AX, 4C00H

INT 21H

START ENDP

;; NUM: AH

;; POS: AL

PUT PROC

PUSH AX

;; SELECT POS

LEA BX, SEQ

PUSH AX

MOV AH, 0

MOV SI, AX

;; OUTPUT POS

MOV DX, A8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

;; SELECT NUM

LEA BX, TBL

MOV AL, AH

MOV AH, 0

MOV SI, AX

;; OUTPUT DATA

MOV DX, B8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

RET

PUT ENDP

DELAY PROC

MOV CX, 0FFH

LOOP $

RET

DELAY ENDP

CODE ENDS

END START

实验效果

这里就只展示数字滚动的效果好了(

选做实验

选做实验 1-2

说明

编写显示子程序,实现一个或多个数码管的稳定显示。使用入口参数定义拟显示的位置和显示的内容。

利用(1)实现的子程序,重新完成基本实验 1)和 2)。

实现

这部分其实在上面的实验里已经实现了,就是这个 PUT 函数。它可以将 AH 的数字显示在 AL 的位置上。

;; NUM: AH

;; POS: AL

PUT PROC

PUSH AX

;; SELECT POS

LEA BX, SEQ

PUSH AX

MOV AH, 0

MOV SI, AX

;; OUTPUT POS

MOV DX, A8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

;; SELECT NUM

LEA BX, TBL

MOV AL, AH

MOV AH, 0

MOV SI, AX

;; OUTPUT DATA

MOV DX, B8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

RET

PUT ENDP

选做实验 3

说明

在数码管上显示学号后 6 位,并使用 6 个开关控制对应数码管的亮灭。

实现

通过开关控制就可以了,只需要多连一个 8255 即可。

A8255 EQU 0600H

B8255 EQU 0602H

C8255 EQU 0604H

CON8255 EQU 0606H

SSEG SEGMENT STACK

DW 0, 0, 0, 0

SSEG ENDS

DATA SEGMENT

TBL:

DB 3FH ;; 0

DB 06H ;; 1

DB 5BH ;; 2

DB 4FH ;; 3

DB 66H ;; 4

DB 6DH ;; 5

DB 7DH ;; 6

DB 07H ;; 7

DB 7FH ;; 8

DB 6FH ;; 9

SEQ:

DB 00011111B ;; POS 0

DB 00101111B ;; POS 1

DB 00110111B ;; POS 2

DB 00111011B ;; POS 3

DB 00111101B ;; POS 4

DB 00111110B ;; POS 5

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:SSEG

START PROC

MOV AX, DATA

MOV DS, AX

MOV AL, 10001001B ;; A B OUT, C IN

MOV DX, CON8255

OUT DX, AL

MOV AX, 0000H

;; DISPLAY 181117

LO:

MOV AX, 0105H

CALL PUT_COND

MOV AX, 0804H

CALL PUT_COND

MOV AX, 0103H

CALL PUT_COND

MOV AX, 0102H

CALL PUT_COND

MOV AX, 0101H

CALL PUT_COND

MOV AX, 0700H

CALL PUT_COND

JMP LO

MOV AX, 4C00H

INT 21H

START ENDP

;; NUM: AH

;; POS: AL

PUT_COND PROC

PUSH AX

MOV BX, 1

MOV CL, AL

SHL BL, CL

MOV DX, C8255

IN AL, DX

TEST BL, AL

JZ PUT_EXIT

POP AX

PUSH AX

CALL PUT

CALL DELAY

PUT_EXIT:

POP AX

RET

PUT_COND ENDP

;; NUM: AH

;; POS: AL

PUT PROC

PUSH AX

;; SELECT POS

LEA BX, SEQ

PUSH AX

MOV AH, 0

MOV SI, AX

;; OUTPUT POS

MOV DX, A8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

;; SELECT NUM

LEA BX, TBL

MOV AL, AH

MOV AH, 0

MOV SI, AX

;; OUTPUT DATA

MOV DX, B8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

RET

PUT ENDP

DELAY PROC

MOV CX, 0FFH

LOOP $

RET

DELAY ENDP

CODE ENDS

END START

效果

注意左下角的开关(

选做实验 4

说明

在左侧的三个数码管上显示 123,每隔 1 秒钟向右移动一位(循环)。

实现

这里用到的是 8254 延时,不过实验的时候 8254 好像出了什么状况不大行。因此以下代码仅供参考。

A8255 EQU 0600H

B8255 EQU 0602H

C8255 EQU 0604H

CON8255 EQU 0606H

C008254 EQU 0640H

C018254 EQU 0642H

C028254 EQU 0644H

CON8254 EQU 0646H

SSEG SEGMENT STACK

DW 0, 0, 0, 0

SSEG ENDS

DATA SEGMENT

TBL:

DB 3FH ;; 0

DB 06H ;; 1

DB 5BH ;; 2

DB 4FH ;; 3

DB 66H ;; 4

DB 6DH ;; 5

DB 7DH ;; 6

DB 07H ;; 7

DB 7FH ;; 8

DB 6FH ;; 9

SEQ:

DB 00011111B ;; POS 0

DB 00101111B ;; POS 1

DB 00110111B ;; POS 2

DB 00111011B ;; POS 3

DB 00111101B ;; POS 4

DB 00111110B ;; POS 5

POS DB 05

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:SSEG

START PROC

;; INIT 8255

MOV AL, 10001001B

MOV DX, CON8255

OUT DX, AL

;; MIR6

MOV AX, OFFSET MIR6

MOV SI, 38H

MOV [SI], AX

MOV AX, CS

MOV SI, 3AH

MOV [SI], AX

MOV AX, DATA

MOV DS, AX

;; INIT 8259

CLI

MOV AL, 11H

OUT 20H, AL

MOV AL, 08H

OUT 21H, AL

MOV AL, 04H

OUT 21H, AL

MOV AL, 07H

OUT 21H, AL

MOV AL, 2FH

OUT 21H, AL

STI

;; INIT 8254

MOV DX, CON8254

MOV AL, 00110110B

OUT DX, AL

MOV DX, C008254

MOV AL, 00H

OUT DX, AL

MOV AL, 48H

OUT DX, AL

MOV AX, 0000H

LO:

MOV AH, 01H

MOV AL, POS

CALL PUT_PRE

CALL PUT

CALL DELAY

INC AH

DEC AL

CALL PUT_PRE

CALL PUT

CALL DELAY

INC AH

DEC AL

CALL PUT_PRE

CALL PUT

CALL DELAY

JMP LO

MOV AX, 4C00H

INT 21H

START ENDP

MIR6:

DEC AX

DEC POS

CMP POS, 0

JGE MIR6_END

ADD POS, 6

MIR6_END:

IRET

PUT_PRE PROC

CMP AH, 0

JGE SKIP_AH

ADD AH, 10

SKIP_AH:

CMP AL, 0

JGE FIN_PRE

ADD AL, 6

FIN_PRE:

RET

PUT_PRE ENDP

;; NUM: AH

;; POS: AL

PUT PROC

PUSH AX

;; SELECT POS

LEA BX, SEQ

PUSH AX

MOV AH, 0

MOV SI, AX

;; OUTPUT POS

MOV DX, A8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

;; SELECT NUM

LEA BX, TBL

MOV AL, AH

MOV AH, 0

MOV SI, AX

;; OUTPUT DATA

MOV DX, B8255

MOV AL, [BX+SI]

OUT DX, AL

POP AX

RET

PUT ENDP

DELAY PROC

MOV CX, 0FFH

LOOP $

RET

DELAY ENDP

DELAY_LONG PROC

MOV CX, 0FFFFH

LOOP $

MOV CX, 0FFFFH

LOOP $

MOV CX, 0FFFFH

LOOP $

MOV CX, 0FFFFH

LOOP $

RET

DELAY_LONG ENDP

CODE ENDS

END START