【发布时间】: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