-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathinr.cpp
More file actions
59 lines (54 loc) · 1.63 KB
/
inr.cpp
File metadata and controls
59 lines (54 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "library.h"
#include "tools.h"
extern string reg[7],memory[65535];
extern int flag[5],pc;
void inr(string cmd[], int len)
{
if(len!=2)
cout<<"error : invalid no. of args"<<endl;
else
{
if(validRegister(cmd[1])==0 )
cout<<" error :"<<pc<<": invalid register"<<endl;
else
{
int dec;
if(cmd[1]=="m")
{
string addr=reg[5]+reg[6];
int decAddr=hexToDec(addr);
dec=hexToDec(memory[decAddr]);
if(dec<255)
{
dec++;
memory[decAddr]=decToHex(dec);
reverse(memory[decAddr].begin(),memory[decAddr].end());
}
else
memory[decAddr]="00";
cout<<"memory["<<addr<<"] = "<<memory[decAddr]<<endl;
}
else
{
int regNo=registerNumber(cmd[1]);
dec=hexToDec(reg[regNo]);
if(dec<255)
{
dec++;
reg[regNo]=decToHex(dec);
string str=reg[regNo];
reverse(str.begin(),str.end());
reg[regNo]=str;
flag[4]=0; // CARRY FLAG
flag[1]=0; // zero flag
}
else
{
reg[regNo]="00";
flag[4]=1; // CARRY FLAG
flag[1]=1; //ZERO FLAG
}
}
}
}
}