mov eax, 0
mov ebx, 0
mov edx, 0
mov ax, 31
mul cx
mov bx, 12
div bx
add bp, ax
mov eax, 0
mov ebx, 0
mov bp, bp
mov al, 7
div al
任何人都可以告诉我这段代码中的div al指令有什么问题,所以我正在调试我计算的每个bp数,当我除以al时它给我1作为余数,为什么会发生这种情况?
剩下的应该存回啊寄存器
提前谢谢
编辑代码:
mov eax, 0
mov ebx, 0
mov edx, 0
mov ax, 31
mul cx
mov bx, 12
div bx
add bp, ax
mov eax, 0
mov ebx, 0
mov ax, bp
mov bl, 7
div bl
mov al, 0
答案 0 :(得分:4)
您无法使用al
作为除数,因为div
命令假定ax
为被除数。
这是将bp
除以7
mov ax,bp // ax is the dividend
mov bl,7 // prepare divisor
div bl // divide ax by bl
这是8位除法,所以余数将存储在ah
中。结果在al
。
澄清:如果您写信至al
,则部分覆盖ax
!
|31..16|15-8|7-0|
|AH.|AL.|
|AX.....|
|EAX............|
答案 1 :(得分:1)
编辑代码:
mov eax, 0
mov ebx, 0
mov ax, 31
mul cx
mov bx, 12
div bx
add bp, ax
mov eax, 0
mov ebx, 0
mov edx, 0
mov ax, bp
mov bx, 7
div bx
mov esi, edx
mov eax, 0