错误:"操作数类型不正确"

时间:2017-04-13 12:28:33

标签: assembly x86-16

这是一个8086汇编程序,用于将8位十进制数转换为十六进制数 在第14行,为什么我会得到下一个错误?

  

不正确的操作数类型

.model small
.data
d1 DB 81d
d1 DB 16d
res DB ?
.code
mov ax,@data
mov ds,ax
xor ax,ax
xor bx,bx
mov al,d1
mov bl,d2
div bl
ror ah,4   ;Error occurs here
add ah,al
mov ax,res
int 3h
align 16
End

1 个答案:

答案 0 :(得分:7)

立即操作数大于1的

ROR(以及ROL / SHL / SHR / etc)仅可从80186处理器开始提供。它在8086/88上不可用。另一种方法是在将ROR ah, 1设置为4之后执行4 ROR ah, cl 的序列,或使用 CL

请参阅https://en.wikipedia.org/wiki/X86_instruction_listings#Added_with_80186.2F80188