꧁༺旧街凉风༻꧂ 2021-05-23 08:09 采纳率: 100%
浏览 63
已采纳

求大佬帮忙写段汇编程序,孩子不会啊

在内存中以 DATA1 和 DATA2 为首地址代表两个数据,DATA1 和 DATA2 分别分 配 5 个字节单元,分别存入用压缩 BCD 码表示的 8 位十进制数(低位在前),编 程将两数相加,并将结果存储到 DATA3 中

  • 写回答

5条回答 默认 最新

  • CSDN专家-Time 2021-05-23 08:19
    关注

    visual 工具很强大。 

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • CSDN专家-Time 2021-05-23 08:12
    关注

    你用c++写一下 然后进行反编译不就好了。

    评论
  • CSDN专家-Time 2021-05-23 08:15
    关注
    int main() {
    008D1800  push        ebp  
    008D1801  mov         ebp,esp  
    008D1803  sub         esp,0FCh  
    008D1809  push        ebx  
    008D180A  push        esi  
    008D180B  push        edi  
    008D180C  lea         edi,[ebp-0FCh]  
    008D1812  mov         ecx,3Fh  
    008D1817  mov         eax,0CCCCCCCCh  
    008D181C  rep stos    dword ptr es:[edi]  
    008D181E  mov         ecx,offset _FA494EA5_main@cpp (08DC02Ah)  
    008D1823  call        @__CheckForDebuggerJustMyCode@4 (08D130Ch)  
    	char DATA1[5]; 
    	char DATA2[5];
    	char DATA3[5];
    	for (int i = 0; i < 5; i++) {
    008D1828  mov         dword ptr [ebp-38h],0  
    008D182F  jmp         main+3Ah (08D183Ah)  
    008D1831  mov         eax,dword ptr [ebp-38h]  
    008D1834  add         eax,1  
    008D1837  mov         dword ptr [ebp-38h],eax  
    008D183A  cmp         dword ptr [ebp-38h],5  
    008D183E  jge         main+75h (08D1875h)  
    		DATA1[i] = '1' + i;
    008D1840  mov         eax,dword ptr [ebp-38h]  
    008D1843  add         eax,31h  
    008D1846  mov         ecx,dword ptr [ebp-38h]  
    008D1849  mov         byte ptr DATA1[ecx],al  
    		DATA2[i] = '1' + i;
    008D184D  mov         eax,dword ptr [ebp-38h]  
    008D1850  add         eax,31h  
    008D1853  mov         ecx,dword ptr [ebp-38h]  
    008D1856  mov         byte ptr DATA2[ecx],al  
    		DATA3[i] = DATA1[i]+ DATA2[i];
    008D185A  mov         eax,dword ptr [ebp-38h]  
    008D185D  movsx       ecx,byte ptr DATA1[eax]  
    008D1862  mov         edx,dword ptr [ebp-38h]  
    008D1865  movsx       eax,byte ptr DATA2[edx]  
    008D186A  add         ecx,eax  
    008D186C  mov         edx,dword ptr [ebp-38h]  
    008D186F  mov         byte ptr DATA3[edx],cl  
    	}
    008D1873  jmp         main+31h (08D1831h)  
    }
    评论
  • CSDN专家-Time 2021-05-23 08:18
    关注
    int main() {
    00C01800  push        ebp  
    00C01801  mov         ebp,esp  
    00C01803  sub         esp,0FCh  
    00C01809  push        ebx  
    00C0180A  push        esi  
    00C0180B  push        edi  
    00C0180C  lea         edi,[ebp-0FCh]  
    00C01812  mov         ecx,3Fh  
    00C01817  mov         eax,0CCCCCCCCh  
    00C0181C  rep stos    dword ptr es:[edi]  
    00C0181E  mov         eax,dword ptr [__security_cookie (0C0A024h)]  
    00C01823  xor         eax,ebp  
    00C01825  mov         dword ptr [ebp-4],eax  
    00C01828  mov         ecx,offset _FA494EA5_main@cpp (0C0C02Ah)  
    00C0182D  call        @__CheckForDebuggerJustMyCode@4 (0C0130Ch)  
    	char DATA1[5]; 
    	char DATA2[5];
    	int DATA3 = 0;
    00C01832  mov         dword ptr [DATA3],0  
    	for (int i = 0; i < 5; i++) {
    00C01839  mov         dword ptr [ebp-38h],0  
    00C01840  jmp         main+4Bh (0C0184Bh)  
    00C01842  mov         eax,dword ptr [ebp-38h]  
    00C01845  add         eax,1  
    00C01848  mov         dword ptr [ebp-38h],eax  
    00C0184B  cmp         dword ptr [ebp-38h],5  
    00C0184F  jge         main+6Dh (0C0186Dh)  
    		DATA1[i] = '1' + i;
    00C01851  mov         eax,dword ptr [ebp-38h]  
    00C01854  add         eax,31h  
    00C01857  mov         ecx,dword ptr [ebp-38h]  
    00C0185A  mov         byte ptr DATA1[ecx],al  
    		DATA2[i] = '1' + i;
    00C0185E  mov         eax,dword ptr [ebp-38h]  
    00C01861  add         eax,31h  
    00C01864  mov         ecx,dword ptr [ebp-38h]  
    00C01867  mov         byte ptr DATA2[ecx],al  
    		
    	}
    00C0186B  jmp         main+42h (0C01842h)  
    	DATA3 = atoi(DATA1) + atoi(DATA2);
    00C0186D  mov         esi,esp  
    00C0186F  lea         eax,[DATA1]  
    00C01872  push        eax  
    00C01873  call        dword ptr [__imp__atoi (0C0B174h)]  
    00C01879  add         esp,4  
    00C0187C  cmp         esi,esp  
    00C0187E  call        __RTC_CheckEsp (0C01235h)  
    00C01883  mov         esi,eax  
    00C01885  mov         edi,esp  
    00C01887  lea         ecx,[DATA2]  
    00C0188A  push        ecx  
    00C0188B  call        dword ptr [__imp__atoi (0C0B174h)]  
    00C01891  add         esp,4  
    00C01894  cmp         edi,esp  
    00C01896  call        __RTC_CheckEsp (0C01235h)  
    00C0189B  add         esi,eax  
    00C0189D  mov         dword ptr [DATA3],esi  
    }
    评论
  • 有问必答小助手 2021-05-27 15:54
    关注

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 win11安卓子系统打开谷歌登录不了切使用浏览器显示处于离线状态
  • ¥15 三维直角坐标系下,给定一个平面内四个点坐标,如何将四个点逆时针排序
  • ¥15 UnityWebRequest访问内网地址502
  • ¥20 Python语言来实现牛顿法(Newton's Method)解决非线性(系统)方程的问题。
  • ¥15 matlab控制工业相机采集图像
  • ¥25 R里做折线图和柱状图
  • ¥20 使用kokkos移植项目,遇到问题
  • ¥15 求该问题的Matlab代码
  • ¥15 python下使用pdpbox为何提示has no attribute 'pdp_isolate'?
  • ¥15 求java web病房管理系统项目,用netbeans做的