如何在 8051 程序集中的内存字段中右对齐 ASCII 字符串
Posted
技术标签:
【中文标题】如何在 8051 程序集中的内存字段中右对齐 ASCII 字符串【英文标题】:How to right align a ASCII String in a memory field in 8051 Assembly 【发布时间】:2022-01-11 22:02:46 【问题描述】:我是微控制器领域的初学者,但在用汇编语言对 8051 微控制器进行编程时遇到问题 我必须复制“代码存储器”中给出的句子,例如“ABC”,它将 0x041、0x042、0x043 和 0x000 提供给“数据存储器”字段。 我可以做到,除了我必须复制它并向右对齐(屏幕上的示例) 我已经在互联网上搜索了信息和帮助,但我没有找到任何关于此 8051 微控制器的语言对齐的主题。
Right-Alignment in the data memory for the sentence "ABC"
我希望有人可以帮助我,因为我对这种语言有点迷茫。 感谢您的宝贵时间
因此,我将向您展示我首先将代码存储器复制到数据存储器中的操作。 Left aligned
Left-aligned in the data memory
而且我真的不知道如何在同一行右对齐 41、42、43。我不认为我们可以使用 C,而在这里只能使用汇编语言。
【问题讨论】:
在代码字符串的开头指向一个reg,在数据缓冲区的末尾指向一个寄存器,(可能少一个以允许终止NUL),然后加载,检查NUL,存储if不是,增加源指针 reg,减少目标指针 reg,冲洗,重复。 字节、字符和字符串操作是算法性的,而不是特定于语言的。你能用 C 或伪代码来做吗?如果没有,那么先处理它,然后你就会知道你在组装部件时要做什么。学习汇编时,只考虑汇编从头开始开发算法是非常困难的。 欢迎来到 ***!请拨打tour 并阅读“How to Ask”以了解本网站的运作方式。 -- 请edit您的问题并提供您解决此任务的尝试。 ——你到底在哪里磕磕绊绊?可以左对齐复制吗? 对不起,我要编辑我的问题 【参考方案1】:如果你仔细观察你的右对齐图片,你会发现从内存地址 0x40 到 0x4D,单元格被值 20 填充。该值是ASC2表中的空格字符值。由于我们知道内存表中的每一行由 16 个单元组成,我们可以在 DB
定义中使用相同的技巧。这不是最好的解决方案,但会起作用。只需像这样用前导 13 个空格定义您的 DB
并尝试一下:
DB " ABC"
【讨论】:
以上是关于如何在 8051 程序集中的内存字段中右对齐 ASCII 字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android TextView 或 EditText 中右对齐文本?