{"id":15060219,"url":"https://github.com/imakebotsforyou/assemblyrust","last_synced_at":"2026-01-28T07:06:44.614Z","repository":{"id":242363625,"uuid":"809365272","full_name":"IMakeBotsForYou/AssemblyRust","owner":"IMakeBotsForYou","description":"An x86 assembly emulator in rust","archived":false,"fork":false,"pushed_at":"2024-07-04T07:57:06.000Z","size":635,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T02:46:56.570Z","etag":null,"topics":["asm","assembler","assembly","compiler","deassembler","decompiler","emulator","rust","tasm","x86","x86-assembly"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IMakeBotsForYou.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-02T13:42:49.000Z","updated_at":"2024-07-04T07:57:09.000Z","dependencies_parsed_at":"2024-06-02T15:12:44.498Z","dependency_job_id":"1489bde7-06ce-4c52-9ed0-5daaaf3e124b","html_url":"https://github.com/IMakeBotsForYou/AssemblyRust","commit_stats":null,"previous_names":["imakebotsforyou/assemblyrust"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IMakeBotsForYou/AssemblyRust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IMakeBotsForYou%2FAssemblyRust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IMakeBotsForYou%2FAssemblyRust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IMakeBotsForYou%2FAssemblyRust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IMakeBotsForYou%2FAssemblyRust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IMakeBotsForYou","download_url":"https://codeload.github.com/IMakeBotsForYou/AssemblyRust/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IMakeBotsForYou%2FAssemblyRust/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28841502,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T05:50:12.573Z","status":"ssl_error","status_checked_at":"2026-01-28T05:49:54.528Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asm","assembler","assembly","compiler","deassembler","decompiler","emulator","rust","tasm","x86","x86-assembly"],"created_at":"2024-09-24T22:54:38.112Z","updated_at":"2026-01-28T07:06:44.585Z","avatar_url":"https://github.com/IMakeBotsForYou.png","language":"Rust","readme":"# 8086 TASM Simulator with 32-bit Registers\n\nThis project is an 8086 TASM (Turbo Assembler) simulator that supports 32-bit registers. The simulator includes various assembly commands for performing operations such as data movement, arithmetic, stack manipulation, and conditional jumps.\n\n## Features\n\n- **32-bit Registers**: EAX, EBX, ECX, EDX, ESI, EDI\n- **16-bit, 8-bit Registers**: AX (AL/AH), BX (BH/BL), etc.\n- **Stack Operations**: `push` and `pop` commands\n- **Arithmetic Operations**: Addition, subtraction, multiplication, and division.\n- **Conditional and Unconditional Jumps**: For flow control.\n\n## Supported Commands\n\n### Mov\nMove data between registers, memory, and constants.\n\nSyntax:\n* mov \\\u003creg\\\u003e, \\\u003creg\\\u003e\n* mov \\\u003creg\\\u003e, [\\\u003cmem\\\u003e]\n* mov [\\\u003cmem\\\u003e], \\\u003creg\\\u003e\n* mov \\\u003creg\\\u003e, \\\u003cconst\\\u003e\n* mov [\\\u003cmem\\\u003e], \\\u003cconst\\\u003e\n\n\n\n\n### Push\nPush data onto the stack.\n\nSyntax:\n* push \\\u003creg\\\u003e\n* push [\\\u003cmem\\\u003e]\n* push \\\u003cconst\\\u003e\n\ncsharp\n\n\n### Pop\nPop data from the stack.\n\nSyntax:\n* pop \\\u003creg\\\u003e\n* pop [\\\u003cmem\\\u003e]\n\n\n\n\n### Lea\nLoad effective address.\n\nSyntax:\n* lea \\\u003creg\\\u003e, [\\\u003cmem\\\u003e]\n\n\n### Add\nAdd values to registers or memory.\n\nSyntax:\n* add \\\u003creg\\\u003e, \\\u003creg\\\u003e\n* add \\\u003creg\\\u003e, [\\\u003cmem\\\u003e]\n* add \\\u003creg\\\u003e, \\\u003cconst\\\u003e\n* add [\\\u003cmem\\\u003e], \\\u003creg\\\u003e\n* add [\\\u003cmem\\\u003e], \\\u003cconst\\\u003e\n\n\n### Sub\nSubtract values from registers or memory.\n\nSyntax:\n* sub \\\u003creg\\\u003e, \\\u003creg\\\u003e\n* sub \\\u003creg\\\u003e, [\\\u003cmem\\\u003e]\n* sub \\\u003creg\\\u003e, \\\u003cconst\\\u003e\n* sub [\\\u003cmem\\\u003e], \\\u003creg\\\u003e\n* sub [\\\u003cmem\\\u003e], \\\u003cconst\\\u003e\n\n\n\n\n### Inc\nIncrement a register or memory value.\n\nSyntax:\n* inc \\\u003creg\\\u003e\n* inc [\\\u003cmem\\\u003e]\n\n\n\n\n### Dec\nDecrement a register or memory value.\n\nSyntax:\n* dec \\\u003creg\\\u003e\n* dec [\\\u003cmem\\\u003e]\n\n\n\n\n### Mul\nUnsigned multiplication.\n\nSyntax:\n* mul \\\u003creg\\\u003e\n* mul [\\\u003cmem\\\u003e]\n* mul \\\u003cconst\\\u003e\n* mul \\\u003cvar\\\u003e\n\n\n\n\n### Imul\nSigned multiplication.\n\nSyntax:\n* imul \\\u003creg\\\u003e\n* imul [\\\u003cmem\\\u003e]\n* imul \\\u003cconst\\\u003e\n* imul \\\u003cvar\\\u003e\n\n\n\n\n### Div\nUnsigned division.\n\nSyntax:\n* div \\\u003creg\\\u003e\n* div [\\\u003cmem\\\u003e]\n* div \\\u003cvar\\\u003e\n* div \\\u003cconst\\\u003e\n\n\n\n\n### Idiv\nSigned division.\n\nSyntax:\n* idiv \\\u003creg\\\u003e\n* idiv [\\\u003cmem\\\u003e]\n* idiv \\\u003cvar\\\u003e\n* idiv \\\u003cconst\\\u003e\n\n\n\n\n### Jmp\nUnconditional jump.\n\nSyntax:\n* jmp \\\u003clabel\\\u003e\n\n\n\n\n### Je\nJump if equal.\n\nSyntax:\n* je \\\u003clabel\\\u003e\n\n\n\n\n### Jne\nJump if not equal.\n\nSyntax:\n* jne \\\u003clabel\\\u003e\n\n\n\n\n### Jz\nJump if zero.\n\nSyntax:\n* jz \\\u003clabel\\\u003e\n\n\n\n\n### Jnz\nJump if not zero.\n\nSyntax:\n* jnz \\\u003clabel\\\u003e\n\n\n\n\n### Jg\nJump if greater.\n\nSyntax:\n* jg \\\u003clabel\\\u003e\n\n\n\n\n### Jge\nJump if greater or equal.\n\nSyntax:\n* jge \\\u003clabel\\\u003e\n\n\n\n\n### Jle\nJump if less or equal.\n\nSyntax:\n* jle \\\u003clabel\\\u003e\n\n\n\n\n### Jl\nJump if less.\n\nSyntax:\n* jl \\\u003clabel\\\u003e\n\n\n\n\n### Jb\nJump if below.\n\nSyntax:\n* jb \\\u003clabel\\\u003e\n\n\n\n\n### Jbe\nJump if below or equal.\n\nSyntax:\n* jbe \\\u003clabel\\\u003e\n\n\n\n\n### Ja\nJump if above.\n\nSyntax:\n* ja \\\u003clabel\\\u003e\n\n\n\n\n### Jae\nJump if above or equal.\n\nSyntax:\n* jae \\\u003clabel\\\u003e\n\n\n\n\n### Cmp\nCompare two values.\n\nSyntax:\n* cmp \\\u003creg\\\u003e, \\\u003creg\\\u003e\n* cmp \\\u003creg\\\u003e, [\\\u003cmem\\\u003e]\n* cmp \\\u003creg\\\u003e, \\\u003cconst\\\u003e\n* cmp [\\\u003cmem\\\u003e], \\\u003creg\\\u003e\n* cmp [\\\u003cmem\\\u003e], \\\u003cconst\\\u003e\n\n\n## Example Code\n\nThe following example generates a Fibonacci sequence.\n\n```assembly\na dd 0\nb dd 1\nc dd 0\n\nmov CX, 10\n\nloop:\n   mov EAX, [a]\n   add EAX, [b]\n   mov [c], EAX\n\n   mov EAX, [b]\n   mov [a], EAX\n   mov EAX, [c]\n   mov [b], EAX\n   print [c]\n   dec CX\n   jnz loop\n```\n\nOutput:\n```\n[SAVED] Saved variable a @ 0\n[SAVED] Saved variable b @ 4\n[SAVED] Saved variable c @ 8\n\n[PRINT]@[IP=15] [c]: 1\n[PRINT]@[IP=15] [c]: 2\n[PRINT]@[IP=15] [c]: 3\n[PRINT]@[IP=15] [c]: 5\n[PRINT]@[IP=15] [c]: 8\n[PRINT]@[IP=15] [c]: 13\n[PRINT]@[IP=15] [c]: 21\n[PRINT]@[IP=15] [c]: 34\n[PRINT]@[IP=15] [c]: 55\n[PRINT]@[IP=15] [c]: 89\n\nExecution completed successfully.\nRegister EAX:   89      (00000000 01011001)\nRegister EBX:   0       (00000000 00000000)\nRegister ECX:   0       (00000000 00000000)\nRegister EDX:   0       (00000000 00000000)\nRegister ESI:   0       (00000000 00000000)\nRegister EDI:   0       (00000000 00000000)\nRegister IP:    17      (00000000 00010001)\nRegister FLAG:  10      (00000000 00001010)\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimakebotsforyou%2Fassemblyrust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimakebotsforyou%2Fassemblyrust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimakebotsforyou%2Fassemblyrust/lists"}