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
2
votes
0 answers

Is there a way to directly configure an 8086 processor to directly send data to 8255 PPI without use of a latch?

I am using emu8086 emulation software and Proteus in order to display data on an LCD. My task is simple, to just simply display a string defined in the assembly code onto the LCD in proteus. The issue however, is that I want to be able to directly…
Tim Mwaura
  • 577
  • 1
  • 7
  • 24
2
votes
0 answers

8086 window size is 40x25 char but can contains 1024 char?

I set the video mode to AL=00h , it's a text mode with 40x25 char , 16 colors , and 8 pages. 40x25 should mean printing 1000 character will make the screen full of the character, but to my surprise it doesn't , i need to print 1024 character to make…
2
votes
1 answer

How to display a 32-bit DIV result stored in DX:AX

I wrote this code to display a current value after some calculations. But the program gives wrong output when it should gave decimal 10 result it gives 13107 result and i cant find the reason why. Before this label what I did was basically getting…
2
votes
1 answer

Division by 8 with SHR instruction

Write a complete assembly program to read 8 digits, each digit separated by a single space from the keyboard (use single key input function). Convert them from character to numbers and calculate the average, lowest and highest score and display…
Kaiser
  • 39
  • 4
2
votes
1 answer

"Divide error -Overflow" error in 8086 emu

Write an assembly language program to add all the elements of a table which are between 50 and 100 only. Display the result as the decimal value. My soln: .model small .stack 64 .data table db 0, 25, 50, 75, 100, 125, 150, 175, 200 ten db…
Sachin Bhusal
  • 63
  • 2
  • 10
2
votes
1 answer

Is it possible to to use the outer macro parameter is used by inner macro?

data segment str db "hello$" str2 db "world$" data ends adds macro a,b lea si,a lea di,b endm subs macro x,y adds x,y endm code segment assume cs:code,ds:data start: mov ax,data mov ds,ax …
2
votes
1 answer

x86-16 imul instruction "wrong parameters"?

So, I have code like this : XOR DX, DX MOV BX, 1 MOV AX, BX MOV CX, 10 .LOOP: JCXZ .EXIT_LOOP IMUL AX, 34 ; in here SUB AX, DX ADD AX, 2 PUSH AX INC DX DEC DX XCHG BX, DX MOV BX, [SP] LOOP…
vbvbvb123
  • 31
  • 4
2
votes
1 answer

the struc type data in 8086asm can not print

outputstring macro x push ax push dx mov ah,9 mov dx,offset x int 21h ; pop dx pop ax endm inputstring macro x push ax push dx mov ah,0ah mov dx,offset…
yuqcc
  • 76
  • 9
2
votes
1 answer

assembly emu8086 diagonal line

I need to draw an diagonal line on my square from the left side to the right i've already the square so i only need the diagonal line i'll leave my square code bellow and this question was not answered yet to emu8086. code: org 100h jmp…
2
votes
0 answers

Why MOV AX, data Works?

I'm new to Assembly, and reading my school books I noticed it said MOV AX, data followed by MOV DS, AX was to initialise the Data Segment register (which I fully understand), but what confuses me is in the first instruction, MOV AX, data moves the…
Tarmius
  • 31
  • 2
2
votes
1 answer

Assembly x86 | return(ret) is not working

Well, recently I started learning Assembly 8086 out of curiosity mostly. Input in assembly allows you to type only one character, so I tried to make a program in Assembly 8086 that allows you to enter multi-digit integer input, ending the input with…
platinoob_
  • 151
  • 1
  • 11
2
votes
1 answer

How to use aam instruction in emu8086

I'm learning assembly now, and I had to write a code that's multiply two number by two number (like 23*45 = 1035) but I need to read every number to different register (like 2 goes to ah , and 3 goes to al.. for example). Now I saw online the aam…
WillingMost7
  • 35
  • 1
  • 7
2
votes
2 answers

What happens if you don't add start: and end start in EMU8086?

I don't have much experience in 8086 assembly and I like to know what happens in the program if you don't write the starting label (start:) and the end of that label (end start) (labels that surround the executing code)? So my question is are this…
borceste
  • 47
  • 8
2
votes
1 answer

How to Store the elements of array at memory addresses in 8086

Here is the questionI'm trying to write a program in emu8086.This program about memory operations and arrays . Memory transfer operations must be done at data segment. And I have to store my elements at memory addresses.(for example: from DS:[2000h]…
Fanny Fan
  • 21
  • 1
  • 3
2
votes
1 answer

how can i print the content of the register ds in binary/decimal ..?

I need some help to show the content of the register DS in both binary and decimal and all i have done is converting hex to binary . How can i show what i need ? .MODEL SMALL .STACK 100H .DATA PROMPT_1 DB 0DH,0AH,'Enter the character : $' …