8085 ASM计划修复部门带左移

时间:2017-11-30 09:02:03

标签: assembly 8085

我做了一些家庭作业为Final做好准备,我试图弄清楚我在纸上知道什么,为左移的修复师工作。

我一直在玩这个连续几个晚上并且似乎无法弄清楚我做错了什么..除此之外,当我在纸上做这件事的可能性我&# 39; m使用4位用于累加器和商,这里的所有寄存器都是8位。

以下是我到目前为止所提供的任何见解,我将不胜感激。

老师希望我们使用左移,而不是其他具有右移的优化版本,或者在循环中减去。感谢。

; 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

1 个答案:

答案 0 :(得分:1)

我相信我在以下部分中找到了问题

;-------------------------
; 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
相关问题