AAM
ASCII 在乘法后调整 AX
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
D4 0A | AAM | ZO | 无效 | 有效 | ASCII在乘法后调整AX. |
D4 ib | AAM imm8 | ZO | 无效 | 有效 | 乘以数字基数 imm8 后调整 AX 。 |
实测开销
未实测:不在 64 位处理器上运行。
涉及的标志位
CF进位PF奇偶AF辅助进位ZF零SF符号OF溢出
说明
调整两个未拆卸的 BCD 值的乘法结果,以创建一对未拆卸的 (第 10 个基数) BCD 值. AX 寄存器是此指令的隐含源和 目标操作数 。 AAM指令只有在遵循MUL指令时才有用,该指令将两个解开的BCD值(二进制乘法)相乘,并在AX寄存器中存储一个单词结果. AAM指令随后调整了AX寄存器的内容,以包含正确的2位无包装(第10基)BCD结果.
本指令的通用版本允许调整AX的内容,以创建任意数字基数的两个无包装数字(见下文"操作"部分). 在此,imm8字节设置为选定的数字基数(例如八进制的08H,十进制的0AH,或十二进制的0CH). AAM mnemonic被所有组装器解释为指调整到ASCII(基础10)值. 要适应另一个数字基中的值,指令必须在机器代码(D4 imm8)中进行手编码.
此指令以兼容模式和遗留模式执行 。 在64位模式下无效 。
行动
IF 64-Bit Mode
THEN
#UD;
ELSE
tempAL := AL;
AH := tempAL / imm8; (* imm8 is set to 0AH for the AAM mnemonic *)
AL := tempAL MOD imm8;
FI;
The immediate value (imm8) is taken from the second byte of the instruction.受影响的旗帜
SF,ZF,和PF旗按照AL登记册中产生的二进制值设置. OF, AF,和CF旗没有定义.
异常
保护模式
#DE | 如果使用 0 的直接值。 |
#UD | 如果使用 LOCK 前缀 。 |
实地址模式
| 与保护模式相同的例外. |
虚拟 8086 模式
| 与保护模式相同的例外. |
兼容模式
| 与保护模式相同的例外. |
64 位模式
#UD | 如果在64位模式下. |