【汇编程序】实现输出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 上传文件报