我有一个用汇编语言编写的小程序,用于将数字平方。
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
我对此程序有几个问题。
第一个任务是确定每个程序存储单元正好存储一个信息字节时所需的程序存储单元数。第二项任务是确定运行程序所需的时钟周期。
这里的逻辑是什么?我将如何计算这些东西?我一点都不明白,将不胜感激。干杯。
[https://pastraiser.com/cpu/i8085/i8085_opcodes.html具有每8085条指令的指令大小和周期时间。
8085是非流水线的,因此性能分析非常简单:每条指令都有固定的成本,您可以累加起来,这与现代CPU不同,在现代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所指出的,您必须在循环中跟踪执行以获取dynamic指令计数/混合:jnz
被执行9次,而不被执行一次。
代码大小取决于静态指令的混合(仅对每条指令计数一次),但是循环时间对每条指令的执行次数进行计数。