8085 ASM 程序恢复师带左移

8085 ASM Program Restorative Division w/ Left Shifting

我正在做一些家庭作业,为期末考试做准备,我正在努力弄清楚我在纸上所知道的知识,以便为左移恢复部门工作。

我已经连续玩了几个晚上了,似乎无法弄清楚我做错了什么..除了当我在纸上做的时候我正在和 4 一起工作的可能性累加器和商的位以及这里所有的寄存器都是 8 位。

这是我目前所知道的,任何对我遗漏的见解都将不胜感激。

老师要我们用Left Shift,而不是其他带右移或循环减法的优化版本。谢谢

; Dividend 7, Divisor 3
;---------------------------------------------------------------------
lxi d, 0007         ; This load D E 00 07, D = (A) E = (Q)
mvi b, 03           ; Divisor for A=A-M & A=A+M
mvi c, 08           ; Loop (C)ounter, 8 Bits
;
;-------------------------
; Shift Left A, then Q in DE
NEXT:mov a, e       ; Copy A -> ACC
ral                 ; Shift LEFT
mov e, a            ; Copy Back
mov a, d            ; Copy Q -> ACC
ral                 ; Shift LEFT
mov d, a            ; Copy Back
;
;-------------------------
; A=A-M
mov a, d            ; Copy (A) -> ACC
sub b               ; A=A-M
mov d, a            ; Copy Back
ral                 ; Shift Left to get MSB
jc RESTORE          ; Most Sig Bit == 1 (Negative), Restore.
;
;-------------------------
; ELSE NOT RESTORE Add 1 to Q Zero LSB
mov a, e
adi 01
dcr c
jnz NEXT
jmp END
;
;--------------------------
RESTORE:mov a, d
add b                ; A=A+M
mov d, a
dcr c
jnz NEXT

:END hlt

我相信我在以下部分中发现了问题

;-------------------------
; ELSE NOT RESTORE Add 1 to Q Zero LSB
mov a, e
adi 01
mov e, a   <---- Forgot to save it back to e.
dcr c
jnz NEXT
jmp END