2016-05-12 53 views
0

我正在编写一个简单的程序,它将两个数字加在一起并给出它们的平均值。我的麻烦在于师。我设置bl = 2,然后用它分成具有正确整数的ax寄存器,但我似乎无法得到正确的答案。例如,当我将8除以2时,我在al寄存器中得到1c。划分汇编问题

mov dl, bl  
add dx, 30h; two user entered numbers add together and converted 
mov ah, 2h 
int 21h 

;mov dx, 0h 
mov ax, dx ; 
mov bl, 2 
div bl ; al, ah for results 

回答

7

您加入30hdx,所以你将38h,不8。和38h/2 == 1Ch。作为一个方面说明,在特殊情况下,你除以2的幂(如2,4,8,16等),你可以通过将log2(除数)位移动到相反。在这种情况下,将是shr ax, 1(或sar ax, 1,如果您想将ax作为有符号的数字)。