问题标签 [68hc11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
147 浏览

memory - 使用带有 68HC11 的汇编将值存储在内存地址中

我是汇编编程的新手,所以我正在使用 THRSim11 来编写一些汇编示例。我试图在内存地址 $0142 中存储一个值,但似乎这个内存地址中的值没有改变。

我首先用 00 值加载 Acc A,然后尝试将此值存储到内存地址 $0142,但它不会从 $FF 更改值。如果我使用地址 $40 执行此操作,它可以工作......

我究竟做错了什么?

提前感谢您的回答。

0 投票
1 回答
161 浏览

assembly - 二进制搜索程序集 68HC11

我必须在程序集(69HC11)中使用循环制作二进制搜索算法。这就是我所做的:

问题是我想计算中间位置的循环,然后将位于该位置的值存储在 D 中。我试图写类似 $MID 的东西,但不可行。

0 投票
1 回答
230 浏览

assembly - 在汇编中增加一个表 (68HC11)

我有一个包含两个数据表和一个结果表的程序

我的程序循环遍历每个表中的值,并将它们传递给找到它们最大公分母的函数。返回值通过堆栈传递,需要存储在 Result 表中。这是我到目前为止所拥有的

上面的代码和我的子程序一样工作正常。我不知道如何增加我的 RESULT 变量。我尝试使用循环计数器作为偏移量,但由于某种原因,下面的代码存储在位置 $B019 而不是 $B010

如果有任何不清楚或您认为问题不好,请发表评论,我会解决它。

0 投票
1 回答
112 浏览

68hc12 - 反汇编没有入口点向量的 68xx 代码

我正在尝试从包含 68xx(类似 68hc12)微控制器的旧收音机中反汇编代码。问题是,我无法访问ROM顶部的micro的中断向量,所以我不知道从哪里开始看。我只有顶部下方的代码。有一些关于在哪里或如何在代码数据中找到有意义的例程的建议?

0 投票
0 回答
234 浏览

assembly - 试图从 68hc11 上的 DIP 开关向 LCD 显示两个数字

我试图弄清楚如何显示从 husky 11 板上的拨码开关读取的两个十六进制数字。我们实验室只要求我们显示1个数字,但我很好奇如何显示2个数字。我只想在按下 Pa0 按钮时读取开关,就像在我的第一个实验室中那样。下面的代码在我按下 pa0 按钮时显示了这两个值,但最右边的 lcd(显示下半字节)在我释放按钮后立即关闭。我该如何解决?我试过做几个不同的延迟,但它不起作用。谢谢。

0 投票
2 回答
634 浏览

c - 使用用户输入的十六进制值读取 c 中的内存地址

目的是允许用户输入一个内存地址(十六进制)并打印出地址的内容。

该代码在摩托罗拉 68HC11 上运行。

到目前为止,我能够使用硬编码值读取内存地址:

但是,我尝试了多种使用用户输入数据的方法,例如:

^^ 其中 *arr 是输入的十六进制值。如:40a

我还尝试将十六进制值硬编码为 char 数组,例如:

这也不起作用,并给了我一个不同的内存地址。

任何想法将不胜感激,我可能非常愚蠢!

更新:如何调用函数

userInput is : dm 40a size is: 在这种情况下 userInput 的数字部分的长度 3

0 投票
2 回答
1096 浏览

assembly - 在不检测溢出的 16 位架构中如何存储 32 位字?

如果该系统无法检测到溢出,32 位数字码字将如何存储在假设的 16 位架构中?

它将如何存储在真正的68HC11系统中?

令我困惑的是,在没有检测到溢出的系统中,我不确定是否可以存储大于 16 位的值?

0 投票
1 回答
113 浏览

c - 如何修复 68HC11 编译器生成无效的 JMP/BRA 代码

我正在编译 C 代码以对设备的 EPROM 进行编程。使用的编译器是 Hi-Tech C Compiler。我相信它是 7.80 版本。

当我(重新)制作我的代码时,它会生成一个二进制 (*.BIN) 文件,用于闪存到 EPROM。

我发现编译后的代码通常在程序集中带有一行代码,这会破坏代码并导致设备在到达时关闭。似乎编译器正在将 Branch-Always (BRA) 语句更改为错误地执行BRA 0,当转换为十六进制操作码时JMP 0000,编译器会将其转换为。这会导致代码到达代码的意外区域,从而导致设备关闭。

重新制作代码时,这个错误的分支总是在同一个地方。但是我发现,如果我对代码进行小幅更改,不同的 BRA 调用会得到完全相同的损坏。

我现在觉得我需要深入研究 *.BIN 文件本身,找到错误的 BRA/JMP 调用,然后手动修复它。这样做的问题是,每当我对代码进行更改然后创建一个新的二进制文件时,我都需要追踪这个错误的 BRA/JMP 调用,计算应该存在的 BRA 调用的正确操作码是什么,并自己编辑。我宁愿每次进行更改时都不必这样做,因为这会占用大量时间。

这是错误 BRA 调用及其周围代码的示例。很抱歉,我无法为此提供完整的源代码,因为它适用于专有系统,但我可以围绕该问题分享汇编代码和十六进制代码。

等效的 C 代码,并添加了错误 BRA/JMP 发生位置的注释:

这是来自已编译的 *.AS 程序集文件:

上述bra 0程序集无效。在这种特殊情况下,根据汇编文件中的标签,它应该是bra l28(注意,这是 L28,带有小写 L,以避免混淆。它是在汇编代码中定义较低的标签,其中此分支应该去)。

这将产生以下十六进制操作码:

以下摘录来自 *.LST 列表文件。

可以看出,它将 转换bra 0JMP 0000(7E 0000)。

我想找到一个可以彻底解决这种情况的解决方案,这样编译器就不会再破坏程序集中的随机 BRA 助记符,不需要我挖掘二进制文件、找到 JMP 调用并手动修复它。是时候更改代码了。

为了澄清,我理解这BRA 0与 不同JMP 0000,但是编译器出于未知原因(1)放入BRA 0程序集文件而不是BRA l28它应该是什么,以及(2)JMP 0000在创建二进制文件时将其转换为。

0 投票
1 回答
63 浏览

assembly - Copy memory with 2 instructions?

I am using 68HC11. I need to transfer content of the memory:

  • content of $0098 to $0011
  • content of $0097 to $0010

But there is a limitation so I can not solve this. I have to use at most two instructions for this.

0 投票
1 回答
148 浏览

assembly - 68hc11 组装(第一步)- 分拣

我刚刚爱上了这个特殊的微控制器,68hc11具有惊人的架构。

我不是专家,但我想改进,组装有点困难,但我想对这个微控制器进行编程。

该汇编代码将从 100 美元开始执行,将在 800 美元处分配一个 200 字节的数组,并将使用值 200、199、... 1 初始化该数组。(降序)。

我想从给定数组中获取两个最高值。我的意思是,我想创建一个数组,给出 10 个值(存储在一个数组中),最后获得两个最高值:

例子:

该数组可能包含以下值:

我想获得这个输出:

可以帮我做到这一点吗?我有点迷路了:/