问题标签 [8085]
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.
microprocessors - 为什么 CMP 是 8085 微处理器中隐式寻址模式的一个例子?
隐式寻址方式的定义为:
这种模式不需要任何操作数;数据由操作码本身指定。
CMP B:
该指令将 B 与 A 的内容进行比较。这里,操作码是 CMP,操作数是 B。
那么为什么 CMP 是隐式寻址的一个例子呢?
assembly - 8085-进位标志的奇怪行为
我正在使用 GNUSim8085 (培训师的结果也相同)
我对指令越来越熟悉,ADC
下面的指令似乎没有按我想要的方式工作。
我希望设置进位标志,因为我们要添加 11111111+00000000+00000001 ,所以这显然会产生进位但未设置进位标志。为什么会这样。你能解释一下吗?
还有为什么在下面的代码中而不是在上面的代码中生成进位:
flags - 8085微处理器将减数转换为2的补码时进位标志是否补码?
我正在学习网络课程,并找到了一个解释减法运算的示例。在那个例子中,
A= A5H , B= 9BH
并且执行了操作SUB B。
由于8085微处理器中的减法运算是通过将减数转换为2的补码然后将其与被减数相加,因此得到的答案是A =(0000 1010)2 (见图)
由于操作后产生了进位是很明显的,所以必须设置CY标志,即进位标志。但他们解释如下:
“CY 位似乎是‘1’。但它是补码后存储的。因此,CY 位存储为‘0’。”
我不明白为什么要称赞carry flag?是因为减数被转换为2的补码还是其他什么?
java - 如何检查为 8085 模拟器设置的标志
我正在构建一个 8085 模拟器,在算术和逻辑指令下,我试图找到一种可靠的方法来检查何时设置或取消设置 5 个标志。
在这 5 个中,符号标志、零标志和奇偶标志很容易检查,但是进位和辅助进位标志变得复杂。我的接近检查进位标志和辅助进位标志的方法贴在上面,看起来不太可靠。
欢迎任何更好/更清洁/更优化的解决方案。我也一直在使用 www.sim8085.com 来检查我的迷你代码片段并检查哪些标志被打开,这是我到达下一个问题的地方:
当我运行此代码时,辅助标志被设置。据我所知,只有从低半字节到高半字节有进位,辅助标志才会被设置。因此,我无法理解其背后的逻辑。
还想知道所有标志是否仅受累加器更改或其他影响?
编辑:
我尝试使用此逻辑来查看它是否适用于所有数学运算,显然这并不能可靠地检查是否应设置进位或辅助进位标志。请帮助我弄清楚如何可靠地检查操作是否导致设置或取消设置进位标志和辅助进位标志。
cpu-registers - 8085微处理器中算术运算的临时寄存器需要什么?
我知道ALU
是accumulator
和temporary
寄存器的两个输入。我有点好奇为什么我们将中间结果存储在临时寄存器中,为什么数据总线不直接连接到。微处理器ALU
中的临时寄存器需要什么?8085
assembly - 如何在程序集 8085 中检测辅助进位为 1
我正在尝试制作一个在 bcd 中添加两个数字的小程序,但我无法使用 DAA 命令。我怎样才能检测到辅助进位是一个?
assembly - RST 5.5 中断时的堆栈指针 (SP) 调整
在微处理器 8085 中,我们运行命令CALL 3000H。程序计数器 (PC) 等于(PC)=2000H,堆栈指针等于(SP)=4000H。在执行命令的过程中,我们有一个 RST 5.5 中断。我想定义 PC 和 SP 的新值。我还想找到堆栈的内容以及例程返回之前和之后发生的操作。
我认为由于中断发生在命令 CALL 3000H 开始之后,因此命令将完成。完成后,中断发生。程序计数器 (PC) 需要存储在堆栈中,以便程序可以返回到进行调用的点。这意味着 (SP) 被调整。程序计数器 (PC) 将在 RST 5.5 中断后取值 (PC) = 002CH。
我的方法正确吗?如果是这样,我仍然对堆栈指针(SP)和堆栈感到有些困惑。堆栈和(SP)值的调整究竟会发生什么?