/ / MASM Assembly 8086 - Изпълнение на деление без използване DIV инструкции за произволен брой - алгоритъм, математика, монтаж, CPU-употреба, разделяне

MASM Assembly 8086 - Изпълнение разделение без използване DIV инструкции за произволен брой - алгоритъм, математика, монтаж, CPU-използване, разделение

Опитвам се да внедря операция разделяне, без да използва DIV инструкция за изпълнение на причини.Видях тази връзка: http://what-when-how.com/microcontrollers/multiplication-and-division-microcontrollers/ и в кода на разделянето операция (не еAssembly 8086) Не разбирам какво прави. Опитвам се да напиша кода със съответните инструкции ASM 8086, надявайки се, че не греша. В този пример имаме B -> Dividend (BX) и A ---> Divisor (AX)

DIVIDE: PSHA (PUSH AX) ;Save the divisor
CLRA (XOR BX,BX) ;Expand dividend, fill with zeros
LDX #8 ;Initialize counter (I don"t understand this part, maybe initialize a counter = 8 because we have here 8 bits)

LOOP: ASLD ;Shift dividend and quotient left (?? SHL BX,1 ?)

CMPA 0,SP ;Check if subtraction will leave positive result (?? Subtraction between?)

и спирам тук, защото ако не разбирам, тази част е безполезна. Можеш ли да ми помогнеш? Има ли друг алгоритъм за разделяне по-добър от инструкцията DIV?

Отговори:

2 за отговор № 1

Това, което търсите, се нарича "рускиСелскостопански алгоритъм "и може да се реализира с помощта на смени и добавки, но няма да ви купи никаква работа на машина с отделна инструкция за разделяне. Направих го преди 8051 години, но това не е имало умножаване / разделяне на инструкциите, така че имаше смисъл. Няма да надминавате микрокодното умножение и разделяне в редовния монтажен код. Те вече са прекарали достатъчно време, за да оптимизират инструкциите на div.