2016-05-12 7 views
0

Ich arbeite an einem einfachen Programm, das zwei Zahlen zusammen addiert und den Durchschnitt für sie gibt. Mein Problem ist mit der Teilung. Ich setze bl = 2 und benutze es, um es in das Ax-Register zu teilen, das die korrekte ganze Zahl hat, aber ich kann nicht scheinen, eine korrekte Antwort zu bekommen. zum Beispiel, wenn ich 8 durch 2 teile, bekomme ich eine 1c im al-Register.Teilen in Montage Schwierigkeiten

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 

Antwort

7

Sie haben 30h zu dx, so dass Sie Dividieren 38h, nicht 8. Und 38h/2 == 1Ch.

Als Randnotiz können Sie in dem speziellen Fall, in dem Sie durch eine Potenz von 2 (wie 2, 4, 8, 16 usw.) dividieren, Log2 (Divisor) -Bits in die richtig stattdessen. In diesem Fall wäre das shr ax, 1 (oder sar ax, 1, wenn Sie ax als eine signierte Nummer behandeln möchten).