求助大佬,如何用32位汇编语言对64位数据进行操作,比如加法,减法,乘法,除法。
32位汇编语言对64位数据进行一系列操作。1.64位+64位
2.64位*64位
3.64位-64位
4.64位无符号整数二进制转十六进制输出
主要是这四个问题,求助大佬
.386 include io32.inc ;.model flat,stdcall .data first dd 12345678h,87654321h ;第1乘数,低位在前,高位在后 second dd 0abcdabcdh,11223344h ;第2乘数,低位在前,高位在后 result dd 0,0,0,0 ;结果,低位在前,高位在后 fLsL dd ?,? ;first低位*second低位的暂存结果 fHsL dd ?,? ;first高位*second低位的暂存结果 fLsH dd ?,? ;first低位*second高位的暂存结果 fHsH dd ?,? ;first高位*second高位的暂存结果 ;data ends .code ;main proc start: mov eax,[first+0] ;獲取first低位 mov ebx,[second+0] ;獲取second低位 mul ebx ;相乘 mov [fLsL+0],eax ;存取低位*低位的結果低位 mov [fLsL+2],edx ;存取低位*低位的結果高位 mov eax,[first+2] mov ebx,[second+0] mul ebx ;以下解釋同上 mov [fHsL+0],eax mov [fHsL+2],edx mov eax,[first+0] mov ebx,[second+2] mul ebx mov [fLsH+0],eax mov [fLsH+2],edx mov eax,[first+2] mov ebx,[second+2] mul ebx mov [fHsH+0],eax mov [fHsH+2],edx ; ;至此相乘結束,以下結果相加 mov eax,[fLsL+0] mov [result+0],eax ;結果的低位 mov eax,[fLsL+2] add eax,[fHsL+0] adc dword ptr [result+4],0 ;若有進位加前一位 add eax,[fLsH+0] adc dword ptr [result+4],0 mov [result+2],eax mov eax,[fHsL+2] add eax,[fLsH+2] adc dword ptr [result+6],0 add eax,[fHsH+0] adc dword ptr [result+6],0 add eax,[result+4] adc dword ptr [result+6],0 mov [result+4],eax mov eax,[fHsH+2] add eax,[result+6] mov [result+6],eax exit 0 end start