我正在研究一个简单的程序,它将两个数字相加并给出它们的平均值.我的麻烦在于分裂.我设置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
Run Code Online (Sandbox Code Playgroud)
你添加30h了dx,所以你要划分38h,而不是8.并且38h / 2 == 1Ch.
作为旁注,在你除以2的幂(例如2,4,8,16等)的特殊情况下,你可以通过向右移动log2(除数)位来做到这一点.在这种情况下shr ax, 1(或者sar ax, 1如果你想ax作为有符号数字).