BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #89091同步于 2016/3/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

BUPTOJ 279 汇编-计算机 2014,模拟题

jichengpeng
2016/3/12镜像同步3 回复
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int t; scanf("%d",&t); getchar(); for(int j=1;j<=t;j++) { int m; scanf("%d",&m); getchar(); int high[4]={0}; int low[4]={0}; for(int i=1;i<=m;i++) { char cha[50]; gets(cha); int l=strlen(cha); if(cha[0]=='M')//mov instruction { if('A'<=cha[7]&&cha[7]<='D') { if(cha[8]=='H') high[cha[4]-'A']=high[cha[7]-'A']; //MOV AH,BH; else if(cha[8]=='L') low[cha[4]-'A']=low[cha[7]-'A']; //MOV AL,BL; else { high[cha[4]-'A']=high[cha[7]-'A'];//MOV AX,BX; low[cha[4]-'A']=low[cha[7]-'A']; } } else { int temp=0; if('0'<=cha[l-1]&&cha[l-1]<='9')// decimal number { int k=7; while(k<=l-1) { temp=(cha[k]-'0')+temp*10; k++; } } else { int k=l-2; int del=1; if(cha[l-1]=='B')//binary number { while(cha[k]!=',') { temp+=(cha[k]-'0')*del; del*=2; k--; } } else { while(cha[k]!=',') { int a; if('0'<=cha[k]&&cha[k]<='9')//16 a=cha[k]-'0'; else a=cha[k]-'A'+10; temp+=a*del; del*=16; k--; } } } if(cha[5]=='X') { high[cha[4]-'A']=temp/256; low[cha[4]-'A']=temp%256; } else if(cha[5]=='H') high[cha[4]-'A']=temp; else low[cha[4]-'A']=temp; } } else //add instruction { if('A'<=cha[7]&&cha[7]<='D') { if(cha[8]=='H') high[cha[4]-'A']+=high[cha[7]-'A']; else if(cha[8]=='L') low[cha[4]-'A']+=low[cha[7]-'A']; else { high[cha[4]-'A']+=high[cha[7]-'A']; low[cha[4]-'A']+=low[cha[7]-'A']; high[cha[4]-'A']+=low[cha[4]-'A']/256; low[cha[4]-'A']%=256; } } else { int temp=0; if('0'<=cha[l-1]&&cha[l-1]<='9')// decimal number { int k=7; while(k<=l-1) { temp=(cha[k]-'0')+temp*10; k++; } } else { int k=l-2; int del=1; if(cha[l-1]=='B') { while(cha[k]!=',') { temp+=(cha[k]-'0')*del; del*=2; k--; } } else { while(cha[k]!=',') { int a; if('0'<=cha[k]&&cha[k]<='9') a=cha[k]-'0'; else a=cha[k]-'A'+10; temp+=a*del; del*=16; k--; } } } if(cha[5]=='H') high[cha[4]-'A']+=temp;//ADD AH,TEMP; else if(cha[5]=='L') low[cha[4]-'A']+=temp;//ADD AL,TEMP; else { low[cha[4]-'A']+=(temp%256); high[cha[4]-'A']+=(temp/256);//ADD AX,TEMP; } } } } int ax,bx,cx,dx; ax=high[0]*256+low[0]; bx=high[1]*256+low[1]; cx=high[2]*256+low[2]; dx=high[3]*256+low[3]; printf("%d %d %d %d\n",ax,bx,cx,dx); } return 0; } 为什么wa?
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
chenxiansf机器人#1 · 2016/3/12
楼主不会写子函数吗,感觉主体写的好长啊
nuanyangyang机器人#2 · 2016/3/12
吐槽一下代码风格。
jichengpeng机器人#3 · 2016/3/23
此贴终结