标签: emu8086

emu8086错误地使用com文件

我写了一个简单的汇编代码,总结了4个单词

STSEG          SEGMENT
               DB      32 DUP (?)
STSEG          ENDS

DTSEG          SEGMENT
DATA_IN        DW      234DH,1DE6H,3BC7H,566AH
               ORG     100H 
SUM            DW      ?
DTSEG          ENDS


CDSEG          SEGMENT
MAIN           PROC    FAR
               ASSUME  CS:CDSEG,SS:STSEG,DS:DTSEG
               MOV     AX,DTSEG
               MOV     DS,AX   ; load data segment to DS

               MOV     CX,04   ; set counter to 4
               MOV     DI,OFFSET DATA_IN
               MOV     BX,00   ; this is the sum initialized to 0
ADD_LP:        ADD     BX,[DI]
               INC     DI
               INC     DI      ; two INC because we are using words
               DEC     CX
               JNZ     ADD_LP
               MOV     SI,OFFSET SUM …
Run Code Online (Sandbox Code Playgroud)

assembly emu8086

4
推荐指数
1
解决办法
357
查看次数

无法将8位地址移动到16位寄存器

我试图分配变量来注册这里是代码:

       ORG 100h

        var1 DB 10  ;
        var2 DB 20  ;

        MOV BX,var1 ; error : operands do not match: 16 bit register and 8 bit address
RET
END
Run Code Online (Sandbox Code Playgroud)

但如果换掉第4行:

MOV BL, var1;
Run Code Online (Sandbox Code Playgroud)

有用.所以我的问题是为什么不能8位变量移动到更大的16位寄存器中

我已经提到了这个,这个这个 OP,但它没有回答我的问题.

注意:

  1. 我正在使用emu8086汇编程序
  2. 我是汇编语言的新手,所以如果这是一个愚蠢的问题,我道歉.

x86 assembly x86-16 emu8086

4
推荐指数
1
解决办法
6247
查看次数

在汇编中生成随机数

我是装配新手,我在生成随机数时遇到问题.

我的代码很简单:它在0-25范围内生成100个数字并将它们存储在一个数组中.

我遇到的问题是,当我在emu8086汇编程序上运行con时,它成功运行并生成100个随机数,这些数字存储在数组中.但是当我在它上面运行时masm611,它会每4个周期产生一个新的随机数.这意味着数组中的值对于4个值是连续相同的数字,然后存储下一个随机值.

这是我的代码:

.model small
.stack 100h
.data

range db 25
i db 0                  ;iterator

arr db 15 dup(0)        ; an array

.code
   mov ax,@data
   mov ds,ax

   mov bx,offset arr    ;getting the adress of the arr in bx
    L1:

    mov ah,2ch      
    int 21h

    mov ah,0  
    mov al,dl            ;using dl by seeing  2ch details
    div range            ; so the number is in range


    mov [bx],ah          ;ah has remainder as using 8 bits div and …
Run Code Online (Sandbox Code Playgroud)

random x86 assembly masm emu8086

4
推荐指数
1
解决办法
7700
查看次数

汇编随机数生成器

我正在使用程序集8086emu,我需要一个用于8个数字的数字生成器。我试图通过@johnfound使用这段代码:

RANDGEN:         ; generate a rand no using the system time

RANDSTART:
   MOV AH, 00h  ; interrupts to get system time        
   INT 1AH      ; CX:DX now hold number of clock ticks since midnight      

   mov  ax, dx
   xor  dx, dx
   mov  cx, 10    
   div  cx       ; here dx contains the remainder of the division - from 0 to 9

   add  dl, '0'  ; to ascii from '0' to '9'
   mov ah, 2h   ; call interrupt to display a value in DL …
Run Code Online (Sandbox Code Playgroud)

x86 assembly emu8086

4
推荐指数
1
解决办法
5531
查看次数

emu8086无法识别我的标签

我尝试编写一个汇编代码,确定28是否是一个完整的数字.但我有一个问题.当我运行代码时,emu8086无法识别我的标签.
例如,在此代码中:

mov dl,1ch
mov bl,00h ;sum
mov cl,1ch ;counter
dec cl

HERE : mov ax,00h
mov al,dl
div cl ;ax/dl ah=remainder
cmp ah,00h
je SUM ; if ah=0 jump the label SUM 
loop HERE

mov dh,00h
cmp dl,bl
je PERFECT
hlt

SUM :
add bl,cl
jmp HERE   

PERFECT :
mov dh,01
hlt
Run Code Online (Sandbox Code Playgroud)

loop HERE指令运行时,emu8086运行mov dl,1ch我的代码的第一条指令().我能做什么?问题是什么?

提前致谢...

assembly microprocessors emu8086

4
推荐指数
1
解决办法
490
查看次数

装配中的随机数

我是汇编的新手,想知道如何在EMU8086中编写一个程序,在每次运行时打印一个不同的随机数.是否可以在不使用中断的情况下完成?

random x86 assembly x86-16 emu8086

4
推荐指数
1
解决办法
2366
查看次数

emu8086抱怨DB中有一个长字符串的"Unterminated string"

我是8086程序集编程的新手,我有一个问题.

我有一个大小约1400个字符的字符串.当我试图定义它时:

.data
mystring DB '(string with 1400 characters)'
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误

"未终止的字符串".

我正在使用emu8086模拟器.我认为我的字符串不适合DB.有没有办法在字节中保留大字符串?

assembly x86-16 emu8086

4
推荐指数
1
解决办法
240
查看次数

如何使用 TEST 指令查看是否设置了两位?

如何使用 TEST 指令(或一系列 TEST 指令)查看 AL 寄存器中的位 0 和位 4 是否都设置为 1?如何使用 TEST 指令查看是否设置了任一位?如何使用 TEST 指令查看是否没有设置任何位?我使用的是 emu8086 汇编器。

assembly emu8086

4
推荐指数
1
解决办法
268
查看次数

在汇编中制作乒乓球游戏,如何一次获得多个击键的输入?

我是初学者,所以这段代码可能没什么用,我用过int 16h这个,但我对此了解不多int。我刚刚发现你不能同时敲击多个按键;有什么帮助吗?
这段代码的问题是一次只能移动一块板,而我需要两块板。如何检查多个输入?

这是任何想要它的人的代码:

IDEAL
MODEL small
STACK 100h
DATASEG
; --------------------------
; Your variables here
; --------------------------
    line1X dw 80
  line1Y dw 120
  line1start dw 5
  line1end dw 10
  line2X dw 80
  line2Y dw 120
  line2start dw 310
  line2end dw 315
CODESEG
    proc startVideo ;creates video mode
      mov al,13h
      mov ah,0h
      int 10h
      ret
  endp startVideo
  proc clearScrean ;turns the screen black
      mov ah, 0ch
      xor al,al
      mov dx,200 
BlankLine:
      mov cx,320
BlankColumn:
        int 10h …
Run Code Online (Sandbox Code Playgroud)

keyboard assembly pong x86-16 emu8086

4
推荐指数
1
解决办法
619
查看次数

为什么程序集8086中不允许使用变量名"name"?

当我尝试声明一个名为"name"的变量时,它不起作用,它给了我一个错误,这一个there are errors.有以下解释

(22) wrong parameters: MOV  BL, name
(22) probably no zero prefix for hex; or no 'h' suffix; or wrong addressing; or undefined var: name
Run Code Online (Sandbox Code Playgroud)

这是我的代码

; multi-segment executable file template.

data segment
    ; add your data here!
    pkey db "press any key...$"
    name db "myname"
ends

stack segment
    dw   128  dup(0)
ends

code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax

    ; add your code here

    MOV BL, …
Run Code Online (Sandbox Code Playgroud)

assembly x86-16 emu8086

3
推荐指数
1
解决办法
219
查看次数

标签 统计

assembly ×10

emu8086 ×10

x86-16 ×5

x86 ×4

random ×2

keyboard ×1

masm ×1

microprocessors ×1

pong ×1