汇编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提示,它不会有任何区别。