频道栏目
首页 > 资讯 > 其他 > 正文

程序开发习题汇编语言 (模拟)解析

18-04-23        来源:[db:作者]  
收藏   我要投稿

程序开发习题汇编语言 (模拟)解析。

思路:通过程序模块化,不要全写在main里面。实现变量的赋值和拷贝函数。

代码如下:

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
string op[12] = { "AX","BX","CX","DX","AH","BH","CH","DH","AL","BL","CL","DL" };
ll A[15], N;
const ll Mod = 256;
int GetNum(string str) {
    for (int i = 0; i<12; ++i) {
        if (str == op[i])
            return i;
    }
    return -1;
}
void init() {
    memset(A, 0, sizeof(A));
}
void Change(string s, ll v) {
    int num = GetNum(s);
    int l, m, r;
    if (num < 4) {
        l = num, m = num + 4, r = num + 8;
        A[l] = v;
        A[m] = v / Mod;
        A[r] = v % Mod;
    }
    else if (num < 8) {
        l = num - 4, m = num, r = num + 4;
        A[m] = v;
        A[l] = A[m] * Mod + A[r];
    }
    else {
        l = num - 8, m = num - 4, r = num;
        A[r] = v;
        A[l] = A[m] * Mod + A[r];
    }
}

void Copy(string s, string p) {
    int r = GetNum(p);
    ll v = A[r];
    Change(s, v);
}
bool isnum(char ch) {
    if ('0' <= ch && ch <= '9')
        return true;
    return false;
}
ll Transform(string str) {
    int len = (int)str.length();
    char last = str[len - 1];
    ll res = 0;
    if (last == 'B') {
        for (int i = 0; i> T;
    while (T--) {
        init();
        cin >> N;
        string str, AA, BB;
        for (int i = 1; i <= N; ++i) {
            cin >> str;
            if (str == "MOV") {
                string temp;
                cin >> temp;
                int pos = 0;
                AA.clear(), BB.clear();
                for (pos = 0; pos> temp;
                int pos = 0;
                AA.clear(), BB.clear();
                for (pos = 0; pos> BB;
                int pos = GetNum(BB);
                if (pos < 4) {
                    ll v = A[pos];
                    ll res = v * A[0];
                    Change("DX", res / (Mod*Mod));
                    Change("AX", res % (Mod*Mod));
                }
                else {
                    ll v = A[pos];
                    ll res = v * A[8];
                    Change("AX", res);
                }
            }
        }
        for (int i = 0; i<4; ++i) {
            cout << A[i];
            if (i != 3)
                cout << " ";
            else
                cout << endl;
        }
    }


    return 0;
}
相关TAG标签
上一篇:清华大学副教授都志辉讲座笔记——数据移植过程
下一篇:初学C#基础的总结
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站