encode_real/
encode_real.rs1extern crate x86asm;
2
3use std::io::Cursor;
4use x86asm::{Instruction, InstructionWriter, Mnemonic, Mode, Operand, OperandSize, Reg, RegScale};
5
6fn main() {
7 let buffer = Cursor::new(Vec::new());
8 let mut writer = InstructionWriter::new(buffer, Mode::Real);
9
10 let instructions = &[
15 Instruction::new2(Mnemonic::MOV, Operand::Direct(Reg::AX), Operand::IndirectScaledIndexed(Reg::BX, Reg::SI, RegScale::One, Some(OperandSize::Word), None)), Instruction::new2(Mnemonic::ADD, Operand::Direct(Reg::AX), Operand::Direct(Reg::BX)), Instruction::new2(Mnemonic::MOV, Operand::IndirectScaledIndexed(Reg::BX, Reg::SI, RegScale::One, Some(OperandSize::Word), None), Operand::Direct(Reg::AX)), ];
19
20 let mut bytes_written = 0;
21
22 for instr in instructions {
23 bytes_written += writer.write(instr).unwrap();
24 }
25
26 print!("Output ({} bytes): ", bytes_written);
27 for byte in writer.get_inner_writer_ref().get_ref().iter() {
28 print!("{:02X} ", byte);
29 }
30 println!("");
31}