如何在 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 中右对齐文本?

如何在 iOS7 中右对齐 UISearchbar 的文本

如何对齐 3 个 div 左中右? [复制]

如何在 ImGui Columns 中右对齐文本?

如何在 ListView.Builder 中右对齐卡片中的行?

CSS img align:如何在 DIV 中设置 img 中右对齐