2020-02-15

昨天是情人节,老师休息了一天。
今天的一个课堂作业是:查询eax,ebx,ecx,edx,ebp,esp,esi,edi,eip的功能。
以下是我的整理结果:
数据寄存器(AX、BX、CX、DX):
AX:Accumulator(累加器):累加器可用于乘、除、输入/输出等操作,它们的使用频率很高;
BX:Base Register(基地址寄存器):它可作为存储器指针来使用;
CX:Count Register(计数寄存器):在循环和字符串操作时,要用它来控制循环次数等等;
DX:Data Register(数据寄存器):在进行乘除运算时,它可以作为默认的操作数参与运算等等;
变址寄存器(SI、DI):
寄存器SIDI称为变址寄存器Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可以实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便;
指针寄存器(BP、SP):
存储器BPSP称为指针寄存器,主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。指针寄存器不可分割成8位寄存器。它作为通用寄存器,也可以存储算术逻辑运算的操作数和运算结果;
它们主要用于访问堆栈内的存储单元,并且规定:
BP为基指针(Base Pointer)寄存器,用它可以直接存取堆栈中的数据;
SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶;
指令指针寄存器(EIP):
指令指针EIPIPInstruction Pointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况。

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。
在这里插入图片描述
下面是我截取的有关寄存器的概念:
在这里插入图片描述今日作业:作业:
1,输入年份,判断是否式闰年。用函数实现
2,输入年月,输出这一年这一月是多少天。
如: input 2008 2
output 29
input 2019 3
output 31
3.输入年月日,输出是这一年的第几天。
如: input 2008 12 31
output 366
input 2019 3 3
output 62
代码如下:

#include<stdio.h>
bool Is_Leap(int year)
{
	if((year % 4 ==0 && year % 100 !=0) || (year % 400==0))
	{
		return true;
	}
	else
	{
		return false;
	}
	//return (year %4==0 && year %100 !=0) || (year %400==0);
}
int Get_YMD(int year,int month)
{
	int days[13]={29,31,28,31,30,31,30,31,31,30,31,30,31};
	//                    0  1   2   3   4   5   6  7  8  9  10  11  12
	if(2 == month && Is_Leap(year))
	{
		month=0;
	}
	return days[month];
}
int Get_total(int year,int month,int day)
{
	int total=0;
	int m=1;
	while(m<month)
	{
		total +=Get_YMD(year,m);
		++m;
	}
	return total + day;
}

int main()
{
	int year=0,month=0,day=0;
	int total=0;
	printf("请输入年份:");
	scanf("%d",&year);
	printf("请输入月份:");
	scanf("%d",&month);
	printf("请输入日期:");
	scanf("%d",&day);
	if(Is_Leap(year))
	{
		printf("%d 是闰年\n",year);
	}
	else
	{
		printf("%d 不是闰年\n",year);
	}
	printf("%d %d 有%d天\n",year,month,Get_YMD(year,month));
	total=Get_total(year,month,day);
	printf("%d year %d month %d day是这一年的 %d 天\n",year,month,day,total);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值