8085汇编程序的时钟周期和内存使用
Clock cycle and memory usage of an 8085 assembler program
我有一个用汇编语言编写的小程序,可以计算一个数的平方。
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 的循环不仅仅是其部分的总和。
例如,我在 上的回答包括代码大小/性能分析。
or example: lxi hl, 2010h ---- 3 bytes and 10 clock cycles. mov b, m --- 1 byte and 7 clock cycles.
And the sum of the two would be just 4 bytes and 7 clock cycles ? Is it that straightforward or am I missing something?
我假设你的意思是 17 个时钟周期,但是,是的,在一个基本块(无分支)中就这么简单。
8085 是如此原始,它甚至在获取下一条指令之前就完全完成了一条指令的执行。
当然,正如 Erik 指出的那样,您必须通过循环跟踪执行以获得 动态 指令 count/mix:jnz
被采用 9次而不是一次。
代码大小取决于静态指令组合(每条指令只计算一次),但周期时间计算每条指令执行的次数。
我有一个用汇编语言编写的小程序,可以计算一个数的平方。
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 的循环不仅仅是其部分的总和。
例如,我在
or example: lxi hl, 2010h ---- 3 bytes and 10 clock cycles. mov b, m --- 1 byte and 7 clock cycles. And the sum of the two would be just 4 bytes and 7 clock cycles ? Is it that straightforward or am I missing something?
我假设你的意思是 17 个时钟周期,但是,是的,在一个基本块(无分支)中就这么简单。
8085 是如此原始,它甚至在获取下一条指令之前就完全完成了一条指令的执行。
当然,正如 Erik 指出的那样,您必须通过循环跟踪执行以获得 动态 指令 count/mix:jnz
被采用 9次而不是一次。
代码大小取决于静态指令组合(每条指令只计算一次),但周期时间计算每条指令执行的次数。