问题标签 [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.
memory - 使用带有 68HC11 的汇编将值存储在内存地址中
我是汇编编程的新手,所以我正在使用 THRSim11 来编写一些汇编示例。我试图在内存地址 $0142 中存储一个值,但似乎这个内存地址中的值没有改变。
我首先用 00 值加载 Acc A,然后尝试将此值存储到内存地址 $0142,但它不会从 $FF 更改值。如果我使用地址 $40 执行此操作,它可以工作......
我究竟做错了什么?
提前感谢您的回答。
assembly - 二进制搜索程序集 68HC11
我必须在程序集(69HC11)中使用循环制作二进制搜索算法。这就是我所做的:
问题是我想计算中间位置的循环,然后将位于该位置的值存储在 D 中。我试图写类似 $MID 的东西,但不可行。
assembly - 在汇编中增加一个表 (68HC11)
我有一个包含两个数据表和一个结果表的程序
我的程序循环遍历每个表中的值,并将它们传递给找到它们最大公分母的函数。返回值通过堆栈传递,需要存储在 Result 表中。这是我到目前为止所拥有的
上面的代码和我的子程序一样工作正常。我不知道如何增加我的 RESULT 变量。我尝试使用循环计数器作为偏移量,但由于某种原因,下面的代码存储在位置 $B019 而不是 $B010
如果有任何不清楚或您认为问题不好,请发表评论,我会解决它。
68hc12 - 反汇编没有入口点向量的 68xx 代码
我正在尝试从包含 68xx(类似 68hc12)微控制器的旧收音机中反汇编代码。问题是,我无法访问ROM顶部的micro的中断向量,所以我不知道从哪里开始看。我只有顶部下方的代码。有一些关于在哪里或如何在代码数据中找到有意义的例程的建议?
assembly - 试图从 68hc11 上的 DIP 开关向 LCD 显示两个数字
我试图弄清楚如何显示从 husky 11 板上的拨码开关读取的两个十六进制数字。我们实验室只要求我们显示1个数字,但我很好奇如何显示2个数字。我只想在按下 Pa0 按钮时读取开关,就像在我的第一个实验室中那样。下面的代码在我按下 pa0 按钮时显示了这两个值,但最右边的 lcd(显示下半字节)在我释放按钮后立即关闭。我该如何解决?我试过做几个不同的延迟,但它不起作用。谢谢。
c - 使用用户输入的十六进制值读取 c 中的内存地址
目的是允许用户输入一个内存地址(十六进制)并打印出地址的内容。
该代码在摩托罗拉 68HC11 上运行。
到目前为止,我能够使用硬编码值读取内存地址:
但是,我尝试了多种使用用户输入数据的方法,例如:
^^ 其中 *arr 是输入的十六进制值。如:40a
我还尝试将十六进制值硬编码为 char 数组,例如:
这也不起作用,并给了我一个不同的内存地址。
任何想法将不胜感激,我可能非常愚蠢!
更新:如何调用函数
userInput is : dm 40a size is: 在这种情况下 userInput 的数字部分的长度 3
assembly - 在不检测溢出的 16 位架构中如何存储 32 位字?
如果该系统无法检测到溢出,32 位数字码字将如何存储在假设的 16 位架构中?
它将如何存储在真正的68HC11系统中?
令我困惑的是,在没有检测到溢出的系统中,我不确定是否可以存储大于 16 位的值?
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 0
为JMP 0000
(7E 0000)。
我想找到一个可以彻底解决这种情况的解决方案,这样编译器就不会再破坏程序集中的随机 BRA 助记符,不需要我挖掘二进制文件、找到 JMP 调用并手动修复它。是时候更改代码了。
为了澄清,我理解这BRA 0
与 不同JMP 0000
,但是编译器出于未知原因(1)放入BRA 0
程序集文件而不是BRA l28
它应该是什么,以及(2)JMP 0000
在创建二进制文件时将其转换为。
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.
assembly - 68hc11 组装(第一步)- 分拣
我刚刚爱上了这个特殊的微控制器,68hc11具有惊人的架构。
我不是专家,但我想改进,组装有点困难,但我想对这个微控制器进行编程。
该汇编代码将从 100 美元开始执行,将在 800 美元处分配一个 200 字节的数组,并将使用值 200、199、... 1 初始化该数组。(降序)。
我想从给定数组中获取两个最高值。我的意思是,我想创建一个数组,给出 10 个值(存储在一个数组中),最后获得两个最高值:
例子:
该数组可能包含以下值:
我想获得这个输出:
可以帮我做到这一点吗?我有点迷路了:/