日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移位指令实现乘法

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移位指令实现乘法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

include irvine32.inc;
.data
i dword 0;
sum qword 0;
str1 byte "請輸入16進制的(32位整數)乘數和被乘數",0
str2 byte "乘積為:",0;
j dword 0;

.code

main proc

L1:
?? mov edx,offset str1;
?? call writestring;

?? mov j,0;
?? mov eax,0;eax為(低32位)乘積值;
?? mov ebx,0;edx為(低32位)乘積值的中間值
?? mov edx,0;
?? mov esi,0;dsi為(高32位)乘積值的中間值
?? mov edi,0;edi為(高32位)乘積值;
?? mov cl,0;cl為移位的位數

?? call readhex;
?? cmp eax,80000000h;

?? jna L4;
?? neg eax;
?? inc j;
L4:
?? mov ebx,eax;??? ebx存儲乘數(來移位的)
?? ;call writeint;

?? call readhex;
?? cmp eax,80000000h;

?? jna L5;
?? neg eax;
?? inc j;
L5:
?? mov i,eax;
?? ;call writeint;
?? mov eax,0;
?? cmp ebx, 0;
?? jne L2;
?? cmp i,0;
?? je? finally;

? L2: cmp ebx,0;
????? jz quit;
????? shr ebx,1;
????? jnc next;if(ZF==0)

????? mov esi,0;每次都要清零;
????? mov edx,i;

????? shld esi,edx,cl;
????? shl edx,cl;

????? add eax,edx;
????? jnc L3;if(ZF==0)
????? add edi,1;

?L3:
????? add edi,esi;
next:
????? inc cl;
????? jmp L2;


quit:
???? call crlf;
???? mov edx,offset str2;
???? call writestring;
???? mov ebx,eax;

???? cmp j,1;
???? jne L6;
???? add edi,80000000h
???? ;call writestring
?L6:

???? mov eax,edi;
???? call writehex;

???? mov eax,ebx;
???? call writehex;


???? call crlf;

???? jmp L1;

finally:

exit
main endp;
end main

轉載于:https://www.cnblogs.com/hqu-ye/archive/2013/02/25/2932588.html

總結

以上是生活随笔為你收集整理的移位指令实现乘法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。