16 位汇编操作对象位数不一致问题
寄存器与数值
若是数值超过了寄存器位数,编译器会报溢出错误;否则将数值解释为与寄存器位数相同,高位补 \(0\)。
寄存器与寄存器
编译器会强行将低位寄存器转为对应的高位寄存器,如 mov ax, bl 会被改为 mov ax, bx。
P.S.
在 debug 中尝试用 a 指令写入操作对象位数不一致的汇编指令,debug 都会报错。
若是数值超过了寄存器位数,编译器会报溢出错误;否则将数值解释为与寄存器位数相同,高位补 \(0\)。
编译器会强行将低位寄存器转为对应的高位寄存器,如 mov ax, bl 会被改为 mov ax, bx。
在 debug 中尝试用 a 指令写入操作对象位数不一致的汇编指令,debug 都会报错。