Slo*_*ald 4 ram assembly memory-address 8-bit
让我困惑的是8位计算机如何访问超过256字节的RAM.我知道它必须使用两个寄存器,但任何人都可以向我展示汇编代码中的这个样子吗?
喜欢:
mov a, [x] ???
Run Code Online (Sandbox Code Playgroud)
让我们假设我们在寄存器L和H中具有LOWER和更高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]
Run Code Online (Sandbox Code Playgroud)
CPU中存在许多寻址模式.所以我们可以有一个不同的例子,例如只有一个寄存器和一个直接地址:
mov h, 80h
mov a, [2] ;a <-- [h*256 + immediate]
Run Code Online (Sandbox Code Playgroud)
它始终取决于特定的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
Run Code Online (Sandbox Code Playgroud)
注意: 那些旧的8位CPU使用8位累加器,即它们只能在8位寄存器中计算数学和其他算术内容,因此它们在软件计算级别上为8位.并且它们的存储器访问单元是8位,即它一次只能读取或写入一个字节的存储器,因此它们在硬件级别上也是8位.这些16位指令很慢,它们实际上连续进行了一对8位操作.
| 归档时间: |
|
| 查看次数: |
2228 次 |
| 最近记录: |