【问题标题】:Clock cycle and memory usage of an 8085 assembler program8085 汇编程序的时钟周期和内存使用情况
【发布时间】:2019-12-11 22:42:41
【问题描述】:

我有一个用汇编语言编写的小程序,可以对数字求平方。


Org 2010h
Db 0ah        

Org 2013h
Db 00h        

Org 1000h     
mvi a, 00h    
lxi hl, 2010h 

mov b, m
mov c, m      

CYCLE:
add b         
dcr c         
jnz CYCLE     

lxi hl, 2013h 
mov m, a       

hlt

我有几个关于这个计划的问题。

如果每个存储单元恰好存储一个字节的信息,则第一个任务是确定将程序部分存储在内存中所需的程序存储单元的数量。 第二个任务是确定运行程序需要多少时钟周期。

这里的逻辑是什么? 我将如何计算这些东西? 我完全不明白这一点,任何帮助将不胜感激。 干杯。

【问题讨论】:

  • 汇编语言是处理器解释的人类可读版本,称为机器代码。机器代码将所有内容编码为数字,包括指令和操作数。您需要确定此指令序列的机器代码编码——这将告诉您将程序部分存储在内存中需要多少字节。至于时钟周期,您需要一个周期参考备忘单,然后将其计算出来——这可以从程序集中完成。该代码有一个do-while循环,其循环体将执行10次。
  • @ErikEidt:pastraiser.com/cpu/i8085/i8085_opcodes.html 具有每条 8085 指令的指令大小和循环时间。 @ OP:非流水线的 8085 使得性能分析变得非常简单:每条指令都有一个固定的成本,你可以加起来,不像现代 CPU,循环不仅仅是其部分的总和。
  • @PeterCordes @ ErikEidt 非常感谢你。那么,如果我理解正确,那么看看上面非常原始的程序,我可以使用您提供的链接并将与每个特定指令对应的值相加吗?例如:lxi hl, 2010h ---- 3 个字节和 10 个时钟周期。 mov b, m --- 1 个字节和 7 个时钟周期。两者的总和只有 4 个字节和 7 个时钟周期?是这么简单还是我错过了什么?干杯
  • 是的,对于像这样的旧处理器,就是这么简单。
  • 感谢您抽出宝贵时间,您的回复非常有帮助。问候。

标签: performance assembly machine-code 8085 code-size


【解决方案1】:

https://pastraiser.com/cpu/i8085/i8085_opcodes.html 具有每条 8085 指令的指令大小和循环时间。

8085 是非流水线的,因此性能分析非常简单:每条指令都有一个固定的成本,您可以将其相加,不像现代 CPU,其中循环不仅仅是其部分的总和。

例如,我对Finding the absolute value of a number in 8085 microprocessor assembly language 的回答包括代码大小/性能分析。

或示例:lxi hl, 2010h ---- 3 个字节和 10 个时钟周期。 mov b, m --- 1 个字节和 7 个时钟周期。 两者的总和只有 4 个字节和 7 个时钟周期?是这么简单还是我错过了什么?

我假设您的意思是 17 个时钟周期,但是是的,在一个基本块中就这么简单(没有分支)。

8085 非常原始,它在获取下一条指令之前就完全执行完一条指令。

当然,正如 Erik 指出的那样,您必须通过循环跟踪执行以获取 动态 指令计数/混合:jnz 被执行了 9 次,并且没有被执行一次。

代码大小取决于静态指令组合(每条指令只计算一次),但循环时间计算每条指令的执行次数。

【讨论】:

  • 感谢您对这篇文章和我之前的一篇文章的详细回复。感觉自己像个笨蛋,但我猜这是学习过程:)感谢您抽出宝贵时间,这确实推动了我朝着正确的方向前进。问候。
  • @franklin:哦,我没有注意到之前的 8085 问题来自同一个人!呵呵。是的,当事后看来很明显时,这意味着你学到了一些东西 :) (或者是在胡思乱想。两者之一:P)
  • :) 只是另一个后续问题:如果我有一个更复杂的程序并且时钟周期数可能是数千,我将如何计算其中的时钟周期案子?我的任务之一就是做到这一点,程序相当复杂,所以在手动计算周期时,我一定会在某些时候犯错。一定有更简单的方法,对吧?问候
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
相关资源
最近更新 更多