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

Read file in 8086 until the end of the file

MOV AH,3DH MOV DX,OFFSET(FNAME) MOV AL,0 ; 0 MEAN FOR READING PURPOSE ;OPEN INT 21H MOV HANDLE,AX MOV AH,3FH MOV BX,HANDLE MOV DX,OFFSET(BUFFER) ;READ MOV CX,30 INT 21H MOV AH,3EH MOV DX,HANDLE …
3
votes
0 answers

Why ' len equ $-aa' doesn't work in source addres in assembly(emu8086)?

data segment aa db 22h, 22h, 22h len = $-aa ends stack segment dw 128 dup(0) ends code segment start: mov ax, data mov ds, ax mov es, ax mov si, offset aa mov [si+len],al mov al,[si+len] mov…
REsky
  • 31
  • 2
3
votes
4 answers

ASM 8086 division without div

I need to write in asm 8086 a program like b=a/6 but without the DIV instruction. I know how to do it with SAR but only 2,4,8,16... mov ax,a sar ax,1 ;//div a by 2 mov b,ax my question is how can I do it to div by 6?
3
votes
2 answers

Palindrome program for emu8086 in assembly language

I'm trying to complete my last lab exercise for my microprocessors course and could really use some help with this. The job is to fill the commented empty lines with my own code. Here's the task: **Task 2. Test if the string is a palindrome**…
Erik
  • 33
  • 5
3
votes
1 answer

INT 10H function 06H moves the cursor

I run the following assembly code on (emu8086): clearScr macro mov ah, 06h mov al, 00h mov bh, 71h mov cx, 0000h mov dx, 184fh int 10h clearScr endm print macro string mov ah, 09h …
AhmedIsam
  • 53
  • 1
  • 5
3
votes
1 answer

Why is the variable name "name" not allowed in assembly 8086?

When I try to declare a variable with the name "name" it doesn't work, it gives me an error, this one there are errors. with the following explanation (22) wrong parameters: MOV BL, name (22) probably no zero prefix for hex; or no 'h' suffix; or…
Anton Kahwaji
  • 467
  • 4
  • 15
3
votes
1 answer

Why is 8086 having odd and even bank?

Why in 8086 we require to divide memory into odd and even bank, and what benefits rather than reading in one clock cycle?
3
votes
1 answer

EMU8086 Display screen (black screen)

I am taking Microprocessors course and I have a problem with my code. I need to write a program code that make a word moving around. The code work correctly on (80*25) screen (because of my calculations depends on it) But the problem is: when I…
M.Sayel
  • 23
  • 5
3
votes
1 answer

8086 16-bit division overflow error on runtime

Following code in emu8086 giving overflow error, all I want to do is to decide if the number is odd or even, so I'm dividing by 2. I can't figure out what's wrong. CLC MOV CX, 20d MOV BX, 07200h MOV [07100h], 02h loop: JCXZ endloop …
ErTR
  • 863
  • 1
  • 14
  • 37
3
votes
0 answers

emu8086 giving wrong remainder for div r16 with non-zero DX upper-half dividend

I am doing a project that I use doubleword(DX:AX) / word(operand). So I should get the Quotient on AX and Remainder in DX as I know. when I do this: MOV DX,0A8D2h MOV AX,08310h MOV BX,0F8FCh DIV BX I should get AD94 on AX and 4560 in DX. AX…
3
votes
1 answer

Converting an array of hexadecimal to decimal numbers Intel 8086 Assembly Language

The following is my code. The block in hex2dec works successfully for converting a single hexadecimal number to decimal number. It would be really helpful if someone could point out where I was going wrong in the use of array. Thanks. DATA SEGMENT …
Anurag
  • 33
  • 2
  • 5
3
votes
2 answers

Error while printing a string from assembly code

I'm new to assembly and the course that I follow uses EMU8086. I wrote this code to print Testing and the ASCII code of 50 which is number 2 but it only prints Testing and ignores the rest. What's wrong? .model tiny .code org 100h main proc …
Moe
  • 432
  • 1
  • 6
  • 21
3
votes
3 answers

x86 Strange printing after console has been scrolled

I have the following function: printRows proc mov cx, 25 printRowsLoop: mov si, 0 printSingleRowLoop: mov ah, 3 ;save current cursor position at dx (dh:dl) int 10h push dx ;keep the…
3
votes
1 answer

print elements of array in assembly

I am new in assembly , I am using emu8086 I was trying to print two elements of an array , but I could not print the second element Here is my code: .MODEL SMALL .STACK 100H .DATA MSG DB 'HI','GOOD$' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX …
000
  • 405
  • 5
  • 20
3
votes
2 answers

Printing out decimal value in 8086 Assembly Language

I am currently working on a project that requires me to prompt a user for three inputs (length, width, & height) and then calculate the volume (lwh). I am having problems printing out the result after the calculations are complete. Is there a way to…
John Alto
  • 51
  • 2
  • 5
1 2
3
50 51