1

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


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

关于这个程序,我有几个问题。

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

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

4

1 回答 1

4

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

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

例如,我对Find the absolute value of a number in 8085 微处理器汇编语言的回答包括代码大小/性能分析。

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

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

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

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

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

于 2019-12-11T23:51:00.740 回答