汇编 `mov si, ah` 产生 "invalid combination of opcode and operands"

Assembly `mov si, ah` produces "invalid combination of opcode and operands"

所以我试图在按下某个键时在屏幕上打印一个字符。
我收到此错误:

src/kernel/main.asm:20: error: invalid combination of opcode and operands

mov ah, 00h
int 16h

mov si, ah ;where the error is
mov si, ah

上面混合了一个 8 位操作数 (ah) 和一个 16 位操作数 (si)。你不能用 MOV 做到这一点。使用MOV指令时,操作数必须大小相同

一样,如果你想像这样混合操作数大小,你将需要使用像 MOVSX 或 MOVZX 这样的指令。