丁同亚的博客
夺朱非正色

 

import util from "./util.js";

let originBin = `
,50,51,52,53,54,55,56,57,58,59,5A,5B,5C,5D,5E,5F,40,41,42,43,44,45,\
46,47,48,49,4A,4B,4C,4D,4E,4F,B0,11,B1,22,B2,00,B3,33,B8,01,02,03,04,B4,78,\
90,91,92,93,94,95,96,97,
`;

let originBinArr = originBin.split(",").filter(item => item !== '\n');

let asmString = resolve(originBinArr);
console.log(asmString);

function resolve(input) {
    let asmString = "";
    for (let index = 0; index < input.length; ) {
        const element = input[index];
        let tmp = '';
        let step = 1;

        if (['5', '4'].includes(element[0])) {
            tmp = `${util.codeMap[element]}\n`;
        } else if (element[0] === 'B') {
            if (['0', '1', '2', '3', '4', '5', '6', '7'].includes(element[1])) {
                step = 2;
                tmp = `${util.codeMap[element]}${input[index + 1]}\n`;
            } else {
                step = 5;
                tmp = `${util.codeMap[element]}${input[index + 4]}${input[index + 3]}${input[index + 2]}${input[index + 1]}\n`;
            }
        } else if (element[0] === '9') {
            if(['0', '1', '2', '3', '4', '5', '6', '7'].includes(element[1])){
                tmp = `${util.codeMap[element]}\n`;

            }else{
                
            }
        }

        asmString += tmp;
        index += step;
    }
    return asmString;
}
// 引入 readline 模块
import readline from 'readline';


export default{
    name:"util",
    promptUser:async (hint)=>{
        // 创建 readline 接口
        const rl = readline.createInterface({
            input: process.stdin,  // 输入流
            output: process.stdout // 输出流
        });

        const input = await new Promise((resolve, reject) => {
            rl.question(hint, (input) => {
              resolve(input);
            });
          });

          rl.close();
          return input;

    },
    codeMap : {
      "50":"PUSH EAX",
      "51":"PUSH ECX",
      "52":"PUSH EDX",
      "53":"PUSH EBX",
      "54":"PUSH ESP",
      "55":"PUSH EBP",
      "56":"PUSH ESI",
      "57":"PUSH EDI",
      "58":"POP EAX",
      "59":"POP ECX",
      "5A":"POP EDX",
      "5B":"POP EBX",
      "5C":"POP ESP",
      "5D":"POP EBP",
      "5E":"POP ESI",
      "5F":"POP EDI",
      "40":"INC EAX",
      "41":"INC ECX",
      "42":"INC EDX",
      "43":"INC EBX",
      "44":"INC ESP",
      "45":"INC EBP",
      "46":"INC ESI",
      "47":"INC EDI",
      "48":"DEC EAX",
      "49":"DEC ECX",
      "4A":"DEC EDX",
      "4B":"DEC EBX",
      "4C":"DEC ESP",
      "4D":"DEC EBP",
      "4E":"DEC ESI",
      "4F":"DEC EDI",
      "B0":"MOV AL,",
      "B1":"MOV CL,",
      "B2":"MOV DL,",
      "B3":"MOV BL,",
      "B4":"MOV AH,",
      "B5":"MOV CH,",
      "B6":"MOV DH,",
      "B7":"MOV BH,",
      "B8":"MOV EAX,",
      "B9":"MOV ECX,",
      "BA":"MOV EDX,",
      "BB":"MOV EBX,",
      "BC":"MOV ESP,",
      "BD":"MOV EBP,",
      "BE":"MOV ESI,",
      "BF":"MOV EDI,",
      "90":"NOP",
      "91":"XCHG EAX,ECX",
      "92":"XCHG EAX,EDX",
      "93":"XCHG EAX,EBX",
      "94":"XCHG EAX,ESP",
      "95":"XCHG EAX,EBP",
      "96":"XCHG EAX,ESI",
      "97":"XCHG EAX,EDI",
    }
}

 

posted on 2025-03-23 20:11  丁同亚的博客  阅读(14)  评论(0)    收藏  举报