Skip to main content

Avalon Python Assembly (APasm) - a library for coding and supporting Assembly in Python

Project description

APasm

What is APasm?

  • APasm is a library for coding and supporting Assembly in Python and you can directly interact with pure binary. APasm stands for "Avalon Python Assembly", notice something weird in the word "Avalon"? Its the library main name. APasm lastest version is 1.0. APasm supports basic Assembly instructions such as:
  • Instruction | Notes
  1. ADD | Basic addition
  2. ADC | Add with carry
  3. CLI | Clear interrupt flag
  4. HLT | Halt CPU
  5. JMP | Jump
  6. MOV | Move data
  7. OR | Bitwise OR
  8. PUSH | Segment registers only
  9. POP | Segment registers only

Requirements

  • Python3
  • QEMU (or another emulator)
  • Hex Editor (optional)

Example Usage

from APasm import * # or the main loader file name

setah      = MOV_imm("ah", 0x0E)  # call BIOS print
setal      = MOV_imm("al", 0x64)  # print "d"
call       = BIOSCALL_10h()

total      = setah + setal + call
bootloader = total + cli() + hlt() + jmp(-2) + BootPad()

with open("Bootloader.bin", "wb") as f:
    f.write(bootloader)

APasm APIs

  • APasmEnv - Create an APasm Development Environment(class)
  • QEMU - Use Subproccess to test your bootloader in QEMU(class)

APasmEnv Usage

from APasm import * # or the main loader file name
env = APasmEnv(  # your code will be packaged automatically
  MOV_imm("ah", 0x0E),
  MOV_imm("al", 0x64),  # print d
  BIOSCALL_10h()  
)
env.Push()
# the Push function create a dir named APasmEnv Output and your file will be created right here
# you can edit the dir param to your dir you want
# NOTE: if you don't rename your file to something then the default file name will be Untitled APasm Output File No{rand.randint(0,1000000)} which is generic

# the ClearOutPutDir function will clear APasm output directory or D:/APasmEnv Output/<files>
# CAUTION: ALL FILE INSIDE D:/APasmEnv Output WILL BE UTTERLY DELETED!

QEMU Usage

from AnPasm import *
emulator = QEMU()
emulator.run("D:/myBootloader.bin")    # onPath: True. Default Type: qemu-system-x86_64. Default External CMD: -fda. `*aargs` exists purely for passing raw subprocess flags without breaking the API.
emulator.run("D:/myBootloader.bin", onPath=False, QEMUPath="C:/Users/MyUserName/QEMU/<your QEMU type choice>.exe")

License

  • License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apasm-1.0.14.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

apasm-1.0.14-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file apasm-1.0.14.tar.gz.

File metadata

  • Download URL: apasm-1.0.14.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for apasm-1.0.14.tar.gz
Algorithm Hash digest
SHA256 78ad24c22adb1cd8cad23387ec27b52ef05c593663799d08f88093f81414f3cb
MD5 8ede10939741571fcc6579c4389772d9
BLAKE2b-256 7c35aea9d7dbd54fd0407ea1295b95f3cba2f76070ab3ec6e4fd6bb28bfa34f9

See more details on using hashes here.

File details

Details for the file apasm-1.0.14-py3-none-any.whl.

File metadata

  • Download URL: apasm-1.0.14-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for apasm-1.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 4e6631628146231c0b6d32c42f3873d07f41e43bb90bea0d9e808d286f94b392
MD5 9c9a725c108c8a080fce8d40bf1b333a
BLAKE2b-256 d7af8f95f32efe8664d6eff1ce96840925c7a5abc5fa60760e879e7ff7a8f611

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page