【发布时间】:2017-12-12 11:58:10
【问题描述】:
谁能帮我详细了解这段代码的工作原理。目前我只了解前三行...
MOV AL,99H
OUT 06H,AL
MOV AL,2
NEXT1: MOV CX,0FFFFH
NEXT2: LOOP NEXT2
OUT 02H,AL
ROL AL,1
JMP NEXT1
END
【问题讨论】:
-
您能告诉我们到底是什么困扰着您吗?
loop和rol指令?该代码似乎只是使用(可能)一组 LED 或其他东西来初始化自定义 FPGA/设备。在真实的 PC 中,端口 02h 是只读的,并且与端口 06 一起属于第一个传统 DMA 控制器。 -
是的,它初始化了一个自定义 FPGA,但是 MOV CX,0FFFFH 是什么意思?
-
你肯定不会被一个简单的
MOV迷惑了吧?它只是将CX设置为0FFFFh。它用于延迟循环。 -
对8086指令here有一个很好的总结。有时要了解指令的作用,您必须继续阅读源代码:) 尝试确定控制流程。
-
@MargaretBloom:我怀疑他们使用的是 flight86 培训板。这是一块 4.9152mhz 8086 板,内存高达 64kb。有几个8255。一个可用于端口 0x00(端口 A)、端口 0x02(端口 B)、端口 0x04(端口 C)、端口 0x06(控制端口)。将 99h 写入控制端口将使端口 A 和端口 C 输入端口和端口 B (0x02) 成为输出端口,因此在这种情况下,代码确实有意义。
标签: loops assembly x86 counter