zoukankan      html  css  js  c++  java
  • 汇编练习题(2)

    习题2: 输入某年某月某日,判断这一天是这一年的第几天?

    c++代码如下, 算法不太严谨,主要为了反汇编的练习也不讲究了

    	void doFun(int year, int month, int day){
    
    		int days =  month*30+day;
    		days += month/2 + month%2;//31天的月
    
    		if (month >= 2){
    			days -= (year%4==0)?1:2;
    		}
    
    		cout << days <<endl;
    	}
    
    

     

    相应的汇编代码为:

    Title: Hello world 
     ;Author: sld6666666@gmail.com    
     ;Data: 2012-11-29 
     ;Description: Assemble hello world
     .386                
     .model flat, stdcall    
     .stack 4096            
     option casemap:none
     
    
    
    include msvcrt.inc
    includelib msvcrt.lib
     
     .data                    
    	year dword	2009
    	month dword 5
    	day dword 24
    	totalDays dword 0
    	
    	szFmt db '%d', 0
     
     .code
         start:
      		
      		;int days =  month*30+day;
      		mov eax, 30
      		mul month
      		add eax, day
      		mov totalDays, eax
      		
      		;days += month/2 + month%2;//31ÌìµÄÔÂ
      		mov eax, month
      		cdq
      		mov ebx, 2
      		idiv ebx
      		add totalDays, ebx
      		add totalDays, edx
      		
     
     		;if (month >= 2){
    		;	days -= (year%4==0)?1:2;
    		;}
    		
    		mov  eax, month
    		cmp	eax, 2
    		jb printProcess
    		
    		mov eax, year
    		cdq
    		mov ebx, 4
    		idiv ebx
    		cmp edx, 0
    		je L1
    		sub totalDays, 2
    		jmp printProcess
    			L1:
    			sub totalDays, 1
    		
    		printProcess:
      			invoke crt_printf, addr szFmt,totalDays
      		
            rtnProcess:
             	ret
         
         end start
    

      

  • 相关阅读:
    Android 经典文章
    Android 性能优化概念(1)
    spring mvc 多线程并发
    Java 线程并发
    Android MVC理解(1)
    写给25岁的你和25岁自己
    Android github 优秀项目
    Spring MVC
    Android View, Window,Activity概念区分(2)
    Android 屏幕相关概念(1)
  • 原文地址:https://www.cnblogs.com/sld666666/p/2796654.html
Copyright © 2011-2022 走看看