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

推荐订阅源

The Last Watchdog
The Last Watchdog
S
Securelist
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Attack and Defense Labs
Attack and Defense Labs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Know Your Adversary
Know Your Adversary
P
Privacy International News Feed
W
WeLiveSecurity
P
Palo Alto Networks Blog
O
OpenAI News
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
L
Lohrmann on Cybersecurity
NISL@THU
NISL@THU
T
Tor Project blog
T
Threatpost
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
A
Arctic Wolf
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Latest news
Latest news
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tenable Blog
量子位
L
LINUX DO - 最新话题
Webroot Blog
Webroot Blog
F
Fortinet All Blogs
C
CERT Recently Published Vulnerability Notes
Hacker News: Ask HN
Hacker News: Ask HN
U
Unit 42
T
Tailwind CSS Blog
WordPress大学
WordPress大学
N
News | PayPal Newsroom
C
CXSECURITY Database RSS Feed - CXSecurity.com
N
Netflix TechBlog - Medium
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Stack Overflow Blog
Stack Overflow Blog
Cloudbric
Cloudbric
C
Check Point Blog
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
The Hacker News
The Hacker News
B
Blog

faryou的博客

出租车上的对话 faryou的博客-告别小高一 faryou的博客-中考 · 竞赛 · 生活 · 思考 5月月考 - faryou的博客 - 日记 faryou的博客-五一回老家 【汇编 - 功能】中断安装中断实现 【汇编&硬件】时钟中断的具体实现 faryou的博客-这些年,我不再看《熊出没》 【汇编&硬件】关机中断的具体实现 【汇编&硬件】网络连接相关中断的具体实现 faryou的博客-年初小记 【汇编&硬件】鼠标控制中断的具体实现 【汇编&硬件】声音输出中断的具体实现 【汇编&硬件】屏幕输出中断的具体实现 【汇编&硬件】磁盘读取中断的具体实现 【汇编&硬件】键盘读取中断的具体实现 【汇编】汇编环境的搭建及Debug的使用教程 【汇编】漫谈:学习汇编后的一些思考 faryou的博客-关于本站即日起实行“一站三体”运营制度 【汇编基础教程】完结篇 写在最后:前言 【汇编基础教程】使用BIOS的中断实现键盘输入及磁盘I/O 【汇编基础教程】中断 【汇编基础教程】端口 【汇编基础教程】标志寄存器 【汇编基础教程】再谈栈 【汇编基础教程】段 【汇编基础教程】来存一些数据! 【汇编基础教程】寄存器和内存&一些基本命令的说明 【汇编基础教程】来写个“函数” 【汇编基础教程】更灵活的定位内存 【汇编基础教程】跳一跳! faryou的博客-我的竞赛经历&对人生的一些思考 faryou的博客-关于现在中小学计算机课的一些想法及思考 faryou的博客-2025年度总结 faryou的博客-临平山下十五年 faryou的博客-Windows 10即将停止支持,谈谈自己从小到大用电脑的感受 faryou的博客-谈谈一名10后的怀旧情怀 【汇编基础教程】8086CPU工作原理 【C语言】指针的理解与应用 【算法教程】【C/C++】DP(动态规划):区间DP——程序设计思路与代码实现 【算法教程】【C/C++】BFS(广度优先搜索)——程序设计思路与代码实现 【算法教程】【C/C++】DFS(深度优先搜索)——程序设计思路与代码实现 【算法教程】【C/C++】单源最短路径——程序设计思路与代码实现 【算法教程】【C/C++】最小生成树——程序设计思路与代码实现 【算法教程】【C/C++】并查集——程序设计思路与代码实现 【算法教程】【C/C++】DP(动态规划):背包DP——程序设计思路与代码实现 【算法教程】【C/C++】DP(动态规划):简单动规问题——程序设计思路与代码实现 【算法教程】【C/C++】递推——程序设计思路与代码实现 【算法教程】【C/C++】三分算法——程序设计思路与代码实现 【算法教程】【C/C++】二分答案——程序设计思路与代码实现 【算法教程】【C/C++】二分查找——程序设计思路与代码实现 【算法教程】【C/C++】贪心算法——程序设计思路与代码实现 【算法教程】【C/C++】基础数学:快排——程序设计思路与代码实现 【算法教程】【C/C++】基础数学:快速幂——程序设计思路与代码实现 【算法教程】【C/C++】基础数学:进制转换——程序设计思路与代码实现 一文弄懂C++中的自定义函数 faryou的博客-2024年度总结
【汇编基础教程】理解一下[bx]和loop指令
作者: faryou · 2026-01-30 · via faryou的博客

前言

在汇编中,我们有时会遇到需要循环的情况,这时就需要loop指令来简化代码,而[bx]和loop指令联用则能达到更方便的功能。

先补点寄存器知识

在8086CPU下,寄存器eax为位寄存器,ah、al分别为ax的高、低8位寄存器,即ax的前、后两半。bx、cx、dx同理~
需要注意的是,汇编中的mov、add等指令只能对同样长度的寄存器&空间使用。

简说[bx]

来看看下面的代码:

mov ax,[bx]

它的功能很简单,即将位于内存中ds:bx的数据送入ax寄存器。
而下面的代码:

mov [bx],ax

则是与上面相反,将ax寄存器中的数据送入内存中ds:bx的位置。
可以看到,[bx]的含义即将ds视为段地址、bx视为偏移地址所指向的内存中数据。

loop指令

有点高级语言编程基础的人一看到loop一定会知道是循环。的确,汇编中loop也是循环指令,但它和其他语言的循环有着不小的区别。
首先了解一下loop指令的格式:loop 标号。当程序执行到loop指令时,会进行如下操作:
(1)cx寄存器中的值自减1
(2)判断cx寄存器的值是否为0,为0则向下执行,不为0则转到标号处运行
由此可见,loop指令可以通过改变cx的值实现计数。
简单做个题目~
用循环计算2100

assume cs:code
code segment
    mov ax,1
    mov cx,100
p:  add ax,ax
    loop p
    mov ax,4c00h
    int 21h
code ends
end

联合使用[bx]和loop指令
直接做个题吧:
计算ffff:0~ffff:b单元中数据的和,结果存在dx中。
首先要明确:ffff:0~ffff:b单元中的数据为8位,而dx为16位寄存器,故不能直接累加。
解决办法:用16位寄存器ax作中介,先将一个单元的数据转到al(ax的后八位,见第一节),再用ax累加到dx上。
代码:

assume cs:code
code segment
    mov ax,0ffffh
    mov ds,ax
    mov bx,0
    mov dx,0
    mov cx,12
s:  mov al,[bx]
    mov ah,0
    add dx,ax
    inc bx
    loop s
    mov ax,4c00h
    int 21h
code ends
end

再来一个:
将ffff:0~ffff:b单元的数据复制到0:200~0:20b单元中
说明:由于CPU限制,mov指令不能直接把单元中的数据转移到另外一个单元,故要用一个寄存器中转。

assume cs:code
code segment
    mov ax,0ffffh
    mov ds,ax
    mox ax,0020h
    mov es ax
    mox bx,0
    mov cx,12
s:  mov dl,[bx]
    mov es:[bx],dl
    inc bx
    loop s
    mov ax,4c00h
    int 21h
code ends
end