assembly - Why did mov dx,0 fix this division routine? -


a simple loop find largest divisor, integer of root, in case dropping out @ 5 in 345 triangle

mov ax,3                         mul ax                           push ax                          mov ax,4                         mul ax                           pop bx                           add ax,bx                        push ax    ;save 25 decimal repeated loops                         mov bx,1                         mov bp,sp                         agin                             mov dx,0      ;fixed problem                   mov ax,[bp]   ;25 decimal                   inc bx        ;starts @ 2                   div bx                           cmp bx,ax                        jb agin                           out 

however, weird things happened when program went 2 3, got hex555d instead of 8 (8*3)

putting mov dx,0 in fixed , returned things normal

i have no idea why, no flags changed

anyone know why? signed/unsigned issue?

the div instruction divides number dx:ax operand.

dx upper word. ax lower word. therefore if want divide ax bx, need 0 dx.


Comments

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

java - Multi-Label Document Classification -

php - Dynamic url re-writing using htaccess -