【汇编程序】实现输出2012-2100年之间所有闰年
生活随笔
收集整理的這篇文章主要介紹了
【汇编程序】实现输出2012-2100年之间所有闰年
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
程序需求:能被4整除但不能被100整除,或者年被400整除的年份是閏年。編程寫一個完整的程序,求出2012年~2099年中的所有閏年年份,把它們存放在數組Lyear中并輸出到屏幕上。
編程思路:匯編中ESI用來做年份計數器,ECX用來做閏年個數計數器,用DIV指令來求余數。
開發環境
Win10 + VS2017
C語言代碼實現如下:
#include <stdio.h> int main() {printf("Leap year is follow:\n");for (int i = 2012; i < 2100; i++){if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))printf("%d\t",i);}return 0; }匯編語言代碼實現如下:
INCLUDELIB kernel32.lib INCLUDELIB ucrt.lib INCLUDELIB legacy_stdio_definitions.lib.386 .model flat,stdcallExitProcess PROTO, dwExitCode:DWORDprintf PROTO C : dword,:vararg scanf PROTO C : dword,:vararg.data Lyear dword 25 dup(0) msg byte 'Leap year is follow:',10,0 format byte '%d',9,0.code main Procxor ecx,ecxmov esi,2012jmp testing body:mov eax,esimov ebx,4cdqdiv ebxcmp edx,0jne nextmov eax,esimov ebx,100cdqdiv ebxcmp edx,0je nextmov dword ptr Lyear[ecx*4],esiinc ecxjmp over next:mov eax,esimov ebx,400cdqdiv ebxcmp edx,0jne overmov dword ptr Lyear[ecx*4],esiinc ecx over:inc esi testing:cmp esi,2100jl bodypushadinvoke printf,offset msgpopadxor esi,esi again:pushadinvoke printf,offset format,dword ptr Lyear[esi*4]popadinc esiloop againpush 0hcall ExitProcess main endp end main編譯運行后結果如下:
總結
以上是生活随笔為你收集整理的【汇编程序】实现输出2012-2100年之间所有闰年的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我心中难忘的好老师
- 下一篇: element upload 上传文件报