【发布时间】:2018-05-23 15:59:06
【问题描述】:
我有一个代码在 MDA-8086 的点阵显示器中显示“A”。就是这样:
ORG 1000H
MOV AL, 10000000B ;Activate Signal
OUT 1EH, AL ;Writing Activate signal to Control Register
MOV AL, 11111111B ;Off Signal
OUT 18H, AL ;Writing off signal to Port A
L1: MOV SI, OFFSET FONT ;Assigning source address to Memory address/ ;offset of FONT Variable
MOV AH, 00000001B
L2: MOV AL, BYTE PTR CS:[SI]
OUT 1AH, AL
MOV AL, AH
OUT 1CH, AL
CALL TIMER
INC SI
CLC
ROL AH, 1
JNC L2
JMP L1
INT 3
TIMER: MOV CX, 300
TIMER1: NOP
NOP
NOP
NOP
LOOP TIMER1
RET
FONT: DB 11111111B
DB 11001001B
DB 10110100B
DB 10110110B
DB 10110110B
DB 10110110B
DB 10000000B
DB 11111111B
现在我不明白这些行了; MOV SI, OFFSET FONT 和 MOV AL, BYTE PTR CS:[SI]。谁能告诉我这些行是做什么的?
编辑:
我还想知道DB 在FONT 中的工作方式以及每个DB 的评估方式。
【问题讨论】:
-
MOV SI, OFFSET FONT将 FONT 的地址放入 SI。MOV AL, BYTE PTR CS:[SI]将 CS:[SI] 处的字节移动到 AL 寄存器中。 -
你标记了这个
emu8086,但这看起来不像是给emu8086的
标签: assembly x86-16 dot-matrix