|
要求:不能用移位指令 虽然这个问题我已经请教过别人,但具体实现还是做不出来,所以请大家帮帮忙,搞定后给分! |
|
|
|
不能用位移你就不能用乘除法代替吗?
|
|
|
div 2
or test al,xxxxxxxx |
|
|
乘法?说得容易,乘法是左移,比如原来al是11111111移了7位后后就是1000000,这时候输出根本就不是原来的最高位的数了。
要右移的话就要乘-7次方,但第二次就要乘-6次方,每次递减,这里很难控制。 而csdsjkk() 你说的div 2,输出后的结果,顺序是调转的! |
|
|
那用test好了,test al,10000000,test al,01000000,一直到test al,00000001做8次。
|
|
|
那不用test指令如何实现呢?
|
|
|
晕!你就不能乘了以后检查进位标志吗?
|
|
|
不明白,能否写段代码解释一下?
|
|
|
mov cx,8
mov al,xx cont: mov ah,2 mul ah push ax mov dl,'0' jnc m1 inc dl m1: mov ah,2 int 21h pop ax loop cont |
|