com[k]=buff[i]; //чтение команды
i++;k++; };
com[k]='\0';
if (buff[i]!='\0'){
while (buff[i]==' ') i++; //переход к операнду
k=0;
while (buff[i]!=' ' && buff[i]!='\0' && buff[i]!=','){
op1[k]=buff[i];//чтение 1-го оп
i++;k++; };
op1[k]='\0';
if (!strcmp(op1,"db") || !strcmp(op1,"dw")) per=i; //если это переменная
while (buff[i]==' ') i++;
if (buff[i]!='\0'){
k=0;i++; while (buff[i]==' ') i++;
while (buff[i]!=' ' && buff[i]!='\0'){
op2[k]=buff[i];//чтение 2-го оп
i++;k++; }; op2[k]='\0'; } }
if (!strcmp(op1,"db")){
while (buff[per]==' ') per++;i=0;
while (buff[per]!='\0' && buff[per]!=' '){
op2[i]=buff[per]; per++;i++; };
op2[i]='\0'; k=0;
if (zn(op2)){
convert(com);
if (SearchPer(com)){
puts("Duplicate variable name");
scroll(); continue; }
if (strcmp(op2,"0") || (strcmp(op2,"255")<=0)){
current=new Reg(com,atoi(op2),head);
head=current; }
else puts("Wrong value"); }
scroll(); continue; }
if (!strcmp(op1,"dw")){
while (buff[per]==' ') per++;i=0; //если имеется 2-й операнд
while (buff[per]!='\0' && buff[per]!=' '){ //то переход к нему
op2[i]=buff[per]; //и запись в op2
per++;i++; }; op2[i]='\0'; k=0;
if (zn(op2)){
convert(com);
if (SearchPer(com)){ //если уже есть переменная с таким именем
puts("Duplicate variable name");
scroll(); continue; }
if (strcmp(op2,"0") && (strcmp(op2,"65535")<=0)){ //если op2=[0...65535]
current=new Reg(com,atoi(op2),head);
head=current; }
else puts("Wrong value"); }
scroll(); continue; }
convert(op1); convert(op2);
if (!strcmp(com,"mov")){
if (!strcmp(op1,"")){
puts("Wrong parameter"); scroll(); continue; }
if (!strcmp(op2,"")){
puts("Wrong parameter"); scroll(); continue; }
if (zn(op1)){ //число ли это
puts("Wrong insruction"); scroll(); continue; }
if (zn(op2)){ //если op2 число, запись в регистр
*Search(op1)=atoi(op2); scroll(); continue; }
if (Search(op1)!=NULL && Search(op2)!=NULL){
*Search(op1)=*Search(op2); }
else puts("Wrong insruction"); scroll();
continue; }
if (!strcmp(com,"add")){
if (!strcmp(op1,"")){
puts("Wrong parameter"); scroll(); continue; }
if (!strcmp(op2,"")){
puts("Wrong parameter"); scroll(); continue; }
if (zn(op1)){
puts("Wrong insruction"); scroll(); continue; }
if (zn(op2)){
*Search(op1)+=atoi(op2); //op1=op1+op2
scroll(); continue; }
if (Search(op1)!=NULL && Search(op2)!=NULL){
*Search(op1)+=*Search(op2); }
else puts("Wrong insruction"); scroll();
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.