2016-11-13 80 views
0

我必須爲i8080處理器編寫程序。我的程序必須乘以兩個16b數字。但我不知道如何一點一點地檢查乘數。彙編i8080乘以兩個16位數字

例如1111 * 1011 = 的1011第一位是1,所以我添加1111 第二位是1,所以我添加11110 第三位是0所以不添加111100 闡述爲1,所以我添加1111000

結果是1111 + 11110 + 1111000 = 10100101

,我唯一的問題是如何chceck乘數的位?

感謝您的幫助

回答

1

也許最簡單的辦法是右移,然後檢查進,否則,你必須不斷地改變它咬你的測試,這就是硬,特別是具有寄存器對。然而,這種轉換在8080上有點煩人,因爲只能旋轉A。假設乘數是BC(和HL乘數和結果DE這樣你就可以DAD H被乘數轉移,它需要一些XCHG做附加到的結果,但它不經常發生)

mov a, b 
ora a ; reset carry 
rar 
mov b, a 
mov a, c 
rar 
mov c, a 
jnc skipadd 

使用ora a確保乘數只是趨於零,這使得退出測試,如:

mov a, b 
ora c 
jnz looptop 

如果通過16解開你可以只填寫從左側與從的左移進BC MUL提示,它不會有任何區別。