一小段程序不明白,请帮助解惑..

helanshan 2007-10-18 08:58:12
初学,第一次提问..解决后马上给分..先谢谢!!
这段求字符串长度的程序,在调用子程序时,传给string 的是不是地址啊?
.DATA
 buff DB "This is a example.", 0
.CODE
Strlen PROC USES AX BX, String:PTR BYTE
MOV BX, String ;要是string保存的是字符串的地址,那BX怎么实现下面的加1运算
XOR CX, CX
MOV AL, [BX]
.WHILE AL!=0
INC CX
INC BX ;这里的加1怎么理解?
MOV AL, [BX]
.ENDW
RET
Strlen ENDP
.STARTUP
INVOKE Strlen, ADDR buff ;调用子程序,我觉得应该传的是地址.
.EXIT 0
END
...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
大熊猫侯佩 2007-10-19
  • 打赏
  • 举报
回复
//那么string中是字符串的地址还是字符串啊?

Strlen PROC USES AX BX, String:PTR BYTE

你自己定义了:指向 byte 的地址
helanshan 2007-10-18
  • 打赏
  • 举报
回复
是不是拷贝地址的空间给string?
helanshan 2007-10-18
  • 打赏
  • 举报
回复
那么string中是字符串的地址还是字符串啊?
evileagle 2007-10-18
  • 打赏
  • 举报
回复
+1表示取内存中下一个地址里的字符,然后判断是否为0
大熊猫侯佩 2007-10-18
  • 打赏
  • 举报
回复
// INC BX ;这里的加1怎么理解?

指向string的地址+1

// INVOKE Strlen, ADDR buff ;调用子程序,我觉得应该传的是地址.

yes
内容概要:本文系统介绍了嵌入式应用层感知底层变化的三种典型方式——轮询、回调函数和观察者模式,通过温控系统的实际案例对比分析其原理与优劣。轮询由应用层主动周期性查询数据,实现简单但占用CPU资源且实时性差;回调机制由底层在数据变化时主动通知应用层,提升了实时性和效率,但仅支持单一响应且存在耦合;观察者模式通过“订阅-通知”机制实现一对多的事件广播,彻底解耦模块间依赖,扩展性强,适用于复杂系统。文章还简要提及消息队列与事件总线作为更高级的异步通信方案,并指出这些技术背后对应的设计模式思想,强调在嵌入式开发中掌握软件架构设计的重要性。; 适合人群:具备C语言基础和嵌入式开发经验的初级至中级研发人员,尤其适合正在学习模块解耦与系统架构设计的工程师。; 使用场景及目标:①理解嵌入式系统中模块间通信的不同实现方式及其适用条件;②掌握如何从轮询过渡到观察者模式以提升系统实时性、可维护性和扩展性;③学习在资源受限环境下应用设计模式解决实际问题的方法。; 阅读建议:此资源以实际代码示例贯穿始终,建议读者结合文中提供的C语言实现代码进行动手实践,深入体会每种方式在中断处理、CPU利用率和模块耦合度方面的差异,并尝试将其应用于自己的项目中进行对比优化。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧