Questions tagged [emu8086]

8086 source editor, assembler, disassembler, and software emulator (a virtual PC with MSDOS Interface)

Emu8086 is an old, unmaintained, and sometimes buggy IDE / simulator for an 8086 PC system with MS-DOS. The built-in assembler itself is TASM/MASM style, has some quirks like defaulting to an operand size in ambiguous cases like add [mem], immediate instead of warning or erroring like better assemblers do.

It's nominally shareware, by "Simulation Soft", with a "trial" version available for free from various download sites. It's official web site, https://www.emu8086.com/ has been dead for a while, with the last snapshot in the wayback machine being from August 2018 (not counting some domain-squatter ad sites.)

Most DOS int 21h system calls work, as do some BIOS int 10h and others. Installing your own interrupt handlers does work for some things, like timer interrupts, but the emulation may not include a PS/2 keyboard controller chip for using in/out instructions to read the keyboard. (TODO: check on this; this paragraph may not be fully accurate.)

Other emulators exist, such as DOSBox (which aims for enough accuracy to run old games, but doesn't always accurately emulate every corner case), and Bochs (which does aim for a high-accuracy emulation, but doesn't come with a DOS "user-space" install out of the box).


For more about 8086 in general, not specific to emu8086's assembler or the machine it emulates, see the tag wiki and tag wiki.

Some emu8086 specific links:

760 questions
3
votes
1 answer

Outputting numbers' ASCII character in Assembly 8086

I'm having problem outputting the calculated value in each step of Fibonacci sequence calculation, it outputs the respective ascii character of the calculated value like ☺ ☻ ♥ ♣ and how many times the sequence should run is depended on the user…
samix73
  • 2,802
  • 4
  • 17
  • 29
3
votes
1 answer

How to get realtime key presses in Assembly?

I have a simple EXE code written in emu8086 which moves a single character in screen (for now): That yellow "*" moves with arrow keys. The problem is emulator getting 16 key presses. I mean when I press keys so fast (Or hold a key), it will hold…
Koorosh
  • 302
  • 1
  • 5
  • 15
3
votes
1 answer

How to pass command line parameters to Emu8086?

What I want to do is to debug my assembly code using Emu8086 by starting my program as if it was launched via command line with some parameters. Using DOSBox I launch my program like this: program.exe result.txt source.txt (result.txt and source.txt…
sdafsDGZvb
  • 49
  • 1
  • 2
  • 10
3
votes
2 answers

Error 'Mov wrong parameters'

I'm starting to learn Assembly (ASM x86). I'm using the emulator emu8086. I've written the following instruction: mov eax,3 When I'm trying to emulate the instruction, emu8086 writes: wrong parameters MOV eax,3. probably it's an undefined var:…
Programmer
  • 750
  • 2
  • 9
  • 17
2
votes
1 answer

Intel 8086 assembly code: reading from terminal

I need help with my task in assembly (Intel 8086 CPU). The task is: A program to try reading from the terminal line by line: Read input from the terminal line by line with INT 21h AH=0x0a and find the minimum line length in bytes. The length does…
Loosos
  • 83
  • 4
2
votes
3 answers

How to multiply a number by 42 in 8086 assembly without using MUL or DIV and in 5 lines?

I have this problem where I am asked to multiply BX by 42 without using any mul or div instructions, presumably by using shl or shr. It is also required to do it in 5 lines. How do you do such a thing ? I didn't try anything, but the above…
wabulu
  • 25
  • 3
2
votes
0 answers

not getting the variable data in output

I've been having a problem regarding the displaying of data from a variable in emu8086. I display the String using the following code: .model small .data v db 13, 'how are you doing','$' .code main proc mov dx,OFFSET v mov ah,09h int 21h end…
Mitul
  • 59
  • 5
2
votes
1 answer

Assembly 8086 - Can't push two symbols

This program converts binary to decimal and I'm supposed to push "$$" into a stack, so that later it would recognize "$$" and end the program. However, it gives me an error that "$$" is an invalid parameter for PUSH. Everything else works for this…
Paul
  • 53
  • 4
2
votes
1 answer

Displaying data in assembly

I just started learning assembly and I have a little bit of confusion regarding DL (data register) and AL (accumulated register). mov dl,35h mov ah,2 int 21h After running it, the value 35h will first be moved to AL and then displayed. While when…
Mitul
  • 59
  • 5
2
votes
1 answer

Variable offset from BP (emu8086 assembly)

A part of my compiler assignment includes translating a C program to 8086 assembly. Say I have the following in C: int a[3]; The translated assembly code for this array declaration looks like this (assuming 0 initialization by default, and I have…
swamp
  • 276
  • 1
  • 8
2
votes
1 answer

What differs the bp and si when memory addressing in assembly (emu8086)?

I'm using emu8086 microprocessor emulator I wonder why when I try to place a value inside a memory address with SI it places right in DS:SI but when I try to place it with BP it goes to DS:BP+20h here's with SI and here's with BP I'm sure it's…
YASSINE
  • 100
  • 1
  • 5
2
votes
1 answer

Intel 8086 assembly reversing order of string

So I'm programming code in Intel 8086 assembly where I want to input two strings(one string in one line) and a want to save them to the variables. Each string can contain up to 100 utf8 characters. In the output, I try to change the order of then…
2
votes
1 answer

setting Timeout byte in LPT

I was reading through my notes and I came across here, Accessing the Parallel Port Through BIOS Functions ---------------------------- | TIMEOUT BYTE | | ------------------------- | | 0040:0078 | LPT1 | | 0040:0079 | LPT2 …
faizan101
  • 41
  • 3
2
votes
1 answer

How to make a 8086 clear screen and then move the cursor to a newline to print out the next function

Because I tried mine, it does not work. It will end it immediately. mov ah,00 mov al,02 int 10h int 21h mov ah,02h mov bh,00 mov dx, 0000h int 10h ret
sherley
  • 21
  • 2
2
votes
2 answers

EMU 8086 stores wrong array element value in register

.model small .data nizA db 1,2,3,4,5,6,7,8 nizB db 8 dup(?) len equ 8 .code main proc mov si,0 mov di,0 mov cx,len program: mov al,nizA[si] ;problem is here it always stores CDh in AL cbw ;convert AL to AX so i…