gpt4 book ai didi

assembly - 8位和16位处理器如何通过两个寄存器访问更多RAM?

转载 作者:行者123 更新时间:2023-12-04 16:47:52 26 4
gpt4 key购买 nike

一直让我感到困惑的是8位计算机如何访问超过256字节的RAM。我知道它必须使用两个寄存器,但是任何一个都可以给我展示一下汇编代码中的示例吗?

喜欢:

mov a, [x]   ???

最佳答案

假设我们在寄存器L和H中具有地址的低8位和高8位一半。例如,我们要从地址32770 dec = 8002 hex中读取字节。

mov l, 02h  ;lower byte of address
mov h, 80h ;higher byte of address
mov a, [hl] ;a <-- [h*256 + l]


CPU中存在许多寻址模式。因此,我们可以有一个不同的示例,例如只需一个寄存器和一个直接地址:

mov h, 80h
mov a, [2] ;a <-- [h*256 + immediate]


它始终取决于特定的CPU体系结构。例如,Zilog Z80被称为8位CPU,但它也包含许多16位指令。您可以像这样对它进行索引寻址:

mov ix, 8002h  ;base address of an array
mov a,[ix+20] ;a <-- [ix + 20] i.e. read a byte from an array like ix[20] in C


注意:
这些旧的8位CPU使用8位累加器,即它们只能在8位寄存器中计算数学和其他算术运算,因此它们在软件计算级别上为8位。它们的内存访问单元是8位的,即它一次只能读取或写入一个字节的内存,因此它们在硬件级别上也是8位的。那些16位指令很慢,它们实际上连续执行一对8位运算。

关于assembly - 8位和16位处理器如何通过两个寄存器访问更多RAM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com