汇编语言学习笔记(五)bx和loop指令

汇编语言(王爽)--实验4 [bx]和loop的使用 本人使用的是emu8086软件完成的实验。(1)编程,向内存0:200~0:23F依次传送数据0~63(3FH)assume cs:code code segment mov ax,0000H mov ds,ax mov bx,200H mov dx,0 mov cx,64 s: mov [bx],dx inc bx ... 阅读详情
5.1
[bx]
和[0]类似
[0]表示偏移地址长度,段地址默认在bs中,
但是[0]在debug中跟asm中表示的不一样,[0]在asm中ml之后会变成数值0
为解决mov ax,[1]在axm编译后变成mov ax,1;可以写成mov ax,ds:[1]
四种:mov al,[0];mov al,ds:[0];mov al,[bx];mov ds:[bx]

loop:与循环有关
(ax)=0010H;用()表示ax中的内容为
2000:1000的内容为0010:(21000H)=0010H
mov ax,[2] 描述为:(ax)=((ds)*16+2);
push ax 可以描述:
(sp) = (sp)-2
((ss)*16+(sp))=(ax)
pop ax
(ax)=((ss)*16+(sp))
(sp) = (sp)+2

约定符合idata表示常量
mov ax,[idata]
mov ax,[bx]即:(ax)=((ds)*16+(bx))

INC bx inc表示(bx)自增+1

5.2 loop指令
cx默认是存放程序的大小;
loop操作要进行两个指令:
(cx)=(cx)-1
判断cx中的值,如果不为0,则跳转到标号处执行,如果为0则向下执行
2^n次方:
assume cs:code
code segment
start:mov ax,2
    mov cx,11
    s:add ax,ax
    loop s

    mov ax,4c00h
    int 21h
code ends
end
三个要点:
cx存放循环次数(cx值最好是放在标号前一行)
loop指令的标号地址要放在前面
要执行的程序代码要写在标号和loop之间

实现ffff:0006单元向ax赋值
(ah)=0,(al)=(ffff6H)
mov ax,0ffffH(注意,由于汇编源程序中,数据不允许以字母开头,所以要加0)

debug引入G命令和P命令来解决循环调试问题:
如果loop指令在0012;
G 0014(偏移地址);表示之间循环完成跳转到0014处的代码;
p ;表示之间完成循环,跳转到结束后的代码


5.5loop和[bx]的联合应用
有关计算题的存储问题,一定要先考虑会不会超出存储范围;
内存单元中的数据是8位的, 不能直接加到16位中。
在多次循环中,如果仅仅是偏移地址发生变化,可以引入新的bx或者其他的通用寄存器,用来做累加


5.7一段安全的空间
随意改写内存空间很危险。
0:200h~0:2FFh是默认的安全空间
拷贝,元单元ffff:x和目标单元0:200h~0:2FFh
先将0:200~02ff表示为:0020:0~002f:f
好将偏移地址用一个变量来表示
s:mov ax,0ffffh
mov ds,ax
mov dl,[bx]
mov ax,0020h
mov ds,ax
mov [bx],dl
inc bx
loop s
因为两个数据是不同的段,所以要每次循环设置两次ds
可以借用es来将ds,ax es,ax放入循环外面

汇编语言——第5章 [BX]和loop指令 阅读详情

相关推荐

通达信强龙趋势幅图指标 - 精准捕捉趋势,把握强势行情,多角度分析个股,强弱一目了然

STICKLINE(趋势>0 AND SJTJ,4.8,5.8,1.5,0),COLORYELLOW;STICKLINE(资金>0 AND SJTJ,1.2,2.2,1.5,0),COLOR0080FF;STICKLINE(异动>0 AND SJTJ,0,1,1.5,0),COLORFF0080;STICKLINE(异动=0 AND SJTJ,0,1,1.5,1),COLORGRAY;

Q1809330692的博客 5629

《汇编语言》- 读书笔记 - 第1章-基础知识(0:200-0:2FF 空闲可用于练习)

此为第1章笔记涉及机器语言与汇编语言的关系,汇编语言由助记符、伪指令和其他符号组成。解释了存储器的重要性,指令和数据在内存中的区别,以及存储单元和内存地址空间的概念。讨论了CPU通过总线与存储器交互,包括地址总线、数据总线和控制总线的作用。文章还提及了内存地址空间的组成,以及主板和接口卡的功能。最后,提供了一个空闲内存地址段供练习使用,并总结了CPU总线宽度对性能的影响。

灵台方寸山斜月三星洞 1842

手把手教你用NetToPLCsim搭建西门子S7-1200仿真环境(附避坑指南)

本文详细指导如何利用NetToPLCsim与PLCSIM搭建西门子S7-1200仿真环境,实现无硬件条件下的PLC程序测试与上位机通信开发。内容涵盖软件选型、环境部署、关键参数配置及通信测试,并重点提供了连接失败、数据读写错误等常见问题的深度避坑指南,帮助工程师高效构建可靠的虚拟调试工作流。

a3b4c5的博客 614

汇编第五节-[bx]和loop指令

G M T 检测语言世界语中文简体 中文繁体丹麦语乌克兰语 乌兹别克语乌尔都语亚美尼亚语 伊博语俄语保加利亚语 僧伽罗语克罗地亚语冰岛语 加利西亚语加泰罗尼亚语匈牙利语 南非祖鲁语卡纳达语印地语 印尼巽他语印尼爪哇语印尼语 古吉拉特语哈萨克语土耳其语 塔吉克语塞尔维亚语塞索托语 威尔士语孟加拉语宿务语 尼泊尔语巴斯克语布尔语(

The Road Of Sec 861

工业异常检测评价指标(I-AUROC、PRO等)

模型评价指标:TPR、FPR、Recall、ROC、AUC、AUROC、IoU、PRO、AUPRO等

qq_1532145264的博客 7432

【Python爬虫】股票信息定向爬取

【Python爬虫】股票信息定向爬取:通过requests-bs4-re技术路线爬虫获取上交所和深交所所有股票的名称和交易信息

qq_39321802的博客 1503

《汇编语言》第5章 [BX]和loop指令

本章讲解[bx]和loop指令的应用、意义和相关的内容,[bx]是什么呢?和[0]有些类似,[0]表示内存单元,它的偏移地址是0;[bx]同样也表示一个内存单元,它的偏移地址在bx中。而loop这个指令表示循环的意思。

chenyijun的专栏 3042

21、博弈中的对抗搜索算法解析

本文深入解析了博弈中的对抗搜索算法,涵盖极小极大算法、阿尔法-贝塔剪枝、移动排序与换位表等核心技术。文章分析了算法的数学基础与实现机制,探讨了其在国际象棋、围棋等复杂游戏中的应用,并扩展至多人游戏中的联盟与合作行为。通过对比不同类型策略的优劣,展示了对抗搜索在实际博弈系统中的演进方向与优化路径,为人工智能决策提供了理论支持与实践指导。

rust6ferris的博客 128

汇编语言入门

在现代社会中,汇编似乎很少有人会用,是否这就代表着它的没落呢?其实不然,汇编在一些我们不太知道的小众领域仍然发光发热,如逆向工程(外挂制作、软件破解)、驱动程序设计等,此外,汇编是一种低级语言,它比任何一门计算机语言都贴近计算机底层,是所有高级语言的鼻祖,学习它,能让你真正理解高级语言,从一个使用者,变成一个真正的编程大牛!如果你在使用java,学习汇编,你可以深入理解jvm底层运行机制,而不再陷入熟读八股文但是却造不出一个轮子的困境,

xuxuxux123的博客 1万+

【异常】‘build.plugins.plugin.version‘ for org.apache.maven.plugins:maven-resources-plugin is missing

maven-compiler-plugin 插件版本信息没有指定导致了错误提示如下字面意思就是没有指定版本信息。

奶爸的编程之路,也就一周冷个三天 4599

一文读懂 SAP Web Dispatcher 配置参考:让 Gateway、OData 与后端服务各走各路

SAP Web Dispatcher在Fiori项目中常被低估,实际上它作为企业系统的HTTP(s)入口,承担着流量分发和安全防护双重职责。该组件通过URL路径规则(如/sap/opu/odata/转发至Gateway系统)实现多系统路由,隐藏后端复杂性,提供统一访问入口。配置要点包括HTTPS参数设置、客户端证书转发、端口定义以及系统冲突处理策略。合理的配置能确保前端统一访问、网络边界清晰可控,同时降低跨团队协作成本。生产环境需根据实际网络架构调整官方示例配置。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 156

带你用汇编写循序

1.写在前面 上一篇博客,我已经简单的介绍汇编语言的一些常用的知识,同时也写了一个简单的程序。这篇博客,我会带着大家写一些循环的程序,废话不多说,直接开始。 2.本篇博客的概述 3.[BX]和loop指令 3.1前置知识 [bx]是什么呢?和[0]有些类似,[0]表示内存单元,它的偏移地址是0。要完整的描述一个内存单元,需要两种信息:内存单元的地址;内存单元的长度(类型) [BX]表示的意思就是偏移地址是BX寄存器中的值。 为了描述上的简洁,在以后的博客中,我们将使用一个描述性的符号()来表示一个寄存器活

了不起的盖茨比的博客 441

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【汇编语言】[BX]和loop指令(一)—— 初识[BX]和loop指令

本文初步让读者认识到[BX]和loop指令,知道了在汇编中也能使用循环语句。

2301_80191662的博客 1963

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【汇编语言】[BX]和loop指令(三)—— Debug与masm的指令处理差异与loop,[bx]的联合应用

本文主要讲解了Debug和编译器masm的指令处理差异以及loop和[bx]的联合应用

2301_80191662的博客 1653

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[汇编语言][bx]和loop指令

汇编语言中,[bx]和loop指令相关知识点总结

Protein_zmm的博客 4533

汇编语言王爽第四版 实验四(包括对【bx】,loop详解)

本文是对王爽第四版汇编语言第五章的重点知识的详解,最后包含了实验四的答案和解析,希望能够帮助到大家

CrazyRabbitttt 9603

汇编(六):[BX] 和 Loop 指令

文章目录[bx] [bx] 1、[bx]是什么呢? 和[0]类似,[0]表示内存单元,它的偏移地址是0;   2、内存单元的描述 我们要完整地描述一个内存单元,需要两种信息: (1)内存单元的地址; (2)内存单元的长度(类型); 用[0]表示一个内存单元时,0表示单元的偏移地址,段地址默认在 ds 中,单元的长度(类型)可以由具体指令中的其他操作对象(比如说寄存器)指出; [bx]同样也表示一个内存单元,它的偏移地址在bx中,比如下面的指令: mov ax,[bx] mov al,[bx] &

sid10t. 3万+

【汇编语言】第五章 [BX]和loop指令

从0开始学汇编

qq_62068476的博客 2990

[从零学习汇编语言] - BX寄存器与loop指令

文章目录前言一、 Bx寄存器与[偏移地址]二、 loop指令与jmp指令 前言 点赞再看,养成习惯! 该系列博文基于王爽老师 <汇编语言 第四版> 一书,需要的同学链接自取: 链接:https://pan.baidu.com/s/1NAgD1Z15LtK1BuH92xmICA 提取码:xlzb 另外书中提到的DosBox软件不想去官网下载的小伙伴也可以自取: 链接:https://pan.baidu.com/s/1O6PnLb_hN-WUS2avicNpcw 提取码:xlzb 最后如

xiaoai1994的博客 3317

汇编语言知识点总结之五:第五章《[bx]和loop指令》

1、[bx]和内存单元的描述 [0]表示内存单元,它的偏移地址是0。比如在Debug中使用,如下指令: mov ax, [0] 代表:将一个内存单元的内容送入ax,这个内存单元的长度为2字节(字单元),存放一个字,偏移地址为0,段地址在ds中。 mov al, [0] 代表:将一个内存单元的内容送入al,这个内存单元的长度为1个字节(字节单元),存放一个字节,偏移地址为0,段地址在ds中。 我们要完整地描述一个内存单元,需要两种信息: (1)内存单元的地址; (2)内存单元的长度(类型)。

wuwuku123的博客 6026

第5章 [BX]和loop指令

我不是天才

yyhshm520的博客 1184

《汇编语言》第五章:[BX] 和 LOOP 指令

《汇编语言》第五章[BX] 和 LOOP 指令

生活是修行的博客 1258

汇编语言 第五章-[BX]和loop指令

和[0]有些类似,[0]表示内存单元,它的偏移地址是0。他是。【bx】的出现是因为,masm不能识别【0】这个中括号。他在编译的时候,假如有一条语句是mov ax,【0】 那么他会直接将0赋值给ax,中括号在这里不起作用。所以我们需要将使用到的偏移地址给先赋值给bx,然后使用【bx】来使用这个偏移地址。在8086CPU 中,只有这可以用在“[…]” 中来进行内存单元的寻址。我们要完整地描述一个内存单元,需要两种信息:(1)内存单元的地址;(2)内存单元的长度(类型)。

2302_80490510的博客 1217

汇编语言(五)-- [bx]和loop指令

第五章 [bx]和loop指令 [bx]是什么呢? 和[0]有些类似,[0]表示内存单元,它的偏移地址是0 我们要完整地描述一个内存单元,需要两种信息: 内存单元的地址; 内存单元的长度(类型)。 我们用[0]表示一个内存单元时,0 表示单元的偏移地址,段地址默认在ds中,单元的长度(类型)可以由具体指令中的其他操作对象(比如说寄存器)指出。 [bx]同样也表示一个内存单元,它的偏移地址在...

qq_44671752的博客 1544

汇编语言(王爽版)学习笔记 第五章 [BX]和loop指令(1)

文章目录前言[bx]和内存单元的描述5.1 [BX]问题5.15.2 Loop指令问题5.35.3 在Debug中跟踪用loop指令实现的循环程序 前言 [bx]和内存单元的描述 [bx]是什么呢? 和[0]有些类似,但[0]表示内存单元,它的偏移地址是0。 我们要完整地描述一个内存单元,需要两种信息: 1. 内存单元的地址 2. 内存单元的长度(类型) 我们用[0]表示一个内存单元时,0...

Kni9hT's Blog 1709
上一篇: 汇编语言学习笔记(四)第一个应用demo
下一篇: 汇编语言学习笔记(六)包含多个段的程序
阳小良
博客等级 码龄17年 54粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值