汇编i8080乘以两个16位数字

问题描述:

我必须为i8080处理器编写程序。我的程序必须乘以两个16b数字。但我不知道如何一点一点地检查乘数。汇编i8080乘以两个16位数字

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

结果是1111 + 11110 + 1111000 = 10100101

,我唯一的问题是如何chceck乘数的位?

感谢您的帮助

也许最简单的办法是右移,然后检查进,否则,你必须不断地改变它咬你的测试,这就是硬,特别是具有寄存器对。然而,这种转换在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提示,它不会有任何区别。