标签: emu8086

如何向Emu8086传递命令行参数?

我想要做的是使用 Emu8086 启动我的程序来调试我的汇编代码,就好像它是通过带有一些参数的命令行启动的一样。使用 DOSBox,我像这样启动我的程序:program.exe result.txt source.txt(result.txt 和 source.txt 是参数),但它没有按预期方式工作,我需要找出原因。如何“模仿”命令行参数传递到 Emu8086 中?

assembly dosbox emu8086

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

为什么程序集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
查看次数

INT 10H 功能 06H 移动光标

我在上运行以下汇编代码(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    
    lea dx, string
    int 21h        
print endm

.model small
.stack 100h

.data
    msg    db 'Hello, world!', '$'  
    nl     db 0AH, 0DH, '$' 
    myname db 'Ahmed', '$'

.code                   
    main    proc
        mov ax, @data
        mov ds, ax

        print myname
        clearScr
        print msg

        mov ax, 4c00h
        int 21h
    main    endp
Run Code Online (Sandbox Code Playgroud)

并且clearScr宏似乎正在移动光标,因为屏幕上打印的最终文本不是从角落开始的。 …

assembly x86-16 emu8086

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

错误'Mov错误的参数'

我开始学习Assembly(ASM x86).我正在使用模拟器emu8086.我写了以下说明:

mov eax,3
Run Code Online (Sandbox Code Playgroud)

当我试图模仿指令时,emu8086写道: wrong parameters MOV eax,3. probably it's an undefined var: eax

此外,当我换成eaxax,ahal-它的工作就好了.

为什么会那样?我该怎么做才能解决这个问题?谢谢.

assembly emulation low-level emu8086

2
推荐指数
1
解决办法
5282
查看次数

跳过未知操作码:66,不是 8086 指令 - 尚不支持

我用的是emu8086。我有一个问题,要求我在从六段输入转换后显示我们在七段显示器上看到的内容。我应该以十六进制输入我的数据,如果它与七段表的十六进制输入匹配,则显示十进制数,例如。3FH = 0, 06H = 1。我使用数组来实现这个程序。下面是工作源程序:

\n
ORG 100H     \n\nMOV AL,[1840H]   \xef\xbc\x9binput in this memory location\nMOV CL,0AH       ; initialize length counter\n   \nAGAIN:  CMP AL,MSG+BX     ; compare to check if the data matches\n        JE RESULT         ; jump to RESULT if data matched\n        INC BX            ; increase decimal output by 1 if data not matched\nLOOP AGAIN\n\nMOV [1841H],0FFH          ; display FF if no data matched the array\n\nHLT\n\nMSG DB 3FH, 06H, 5BH, 4FH,66H, 6DH,7DH,07H,7FH,6FH        ; my array with hexa inputs\n\nRESULT: MOV [1841H],BL                 ; display …
Run Code Online (Sandbox Code Playgroud)

assembly machine-code opcode x86-16 emu8086

2
推荐指数
1
解决办法
8272
查看次数

在汇编中,为什么不能在不移位的情况下打印十六进制数?

该代码取自在线示例。假设我有要在 DL 中打印的变量。

DISPLAY_HEX PROC NEAR
    MOV BL,DL   

    MOV BH,0    
    MOV CL,4    

    SHL BX,CL   
    MOV DL,BH   

    CALL ONE_DIGIT  

    MOV CL,4    
    SHR BL,CL   
    MOV DL,BL   

    CALL ONE_DIGIT  

    RET     
DISPLAY_HEX ENDP


ONE_DIGIT PROC NEAR

    CMP DL,9    
    JA LETTER   

    ADD DL,48
    JMP NEXT    

LETTER: ADD DL, 'A'-10  

NEXT:   MOV AH,02H  
    INT 21H 

END:    RET     
ONE_DIGIT ENDP
Run Code Online (Sandbox Code Playgroud)

为什么要轮班?不能像小数一样打印吗?另外,为什么这里同时使用SHRSHL ?

assembly emu8086

2
推荐指数
1
解决办法
2620
查看次数

删除屏幕上的字符

我正在组装游戏,使用EMU8086进行学校项目.在这个游戏中,我需要允许用户输入一个字符串才能进步.当他输入字符串时,他可能会输入错误的内容并使用它backspace来纠正它.问题是backspace将光标移动到前一个字符上,但先前输入的字符仍然存在.为什么退格不清除前一个字符?如何修复程序,以便删除屏幕上的前一个字符?

我的代码是:

data segment

ends

stack segment
dw   128  dup(0)
ends    
StringHelper db 20 dup(?)
Line db 13,10,'$'
FullInput db 'You cant type more than 20 letters!!! please try again!!',13,10,'$'
t db '$'
code segment
PROC PrintMessage
  ;BX MUST have OFFSET OF MESSAGE
  ; if you want to go down a line do (lea bx,line)      
  mov dx,bx      
  mov ah,09h
  int 21h     
  ret 
 endp printMessage
 proc InputString          
;askes the user to input chars untill he press (enter) …
Run Code Online (Sandbox Code Playgroud)

assembly backspace x86-16 emu8086

2
推荐指数
1
解决办法
2667
查看次数

为什么我从mov ax,bx + si + 1得到零?

    mov     ax,10
    mov     bx,4
    mov     si,ax
    mov     ax,bx+si+1
    LEA     ax,[bx+si+1]
Run Code Online (Sandbox Code Playgroud)

当我一起添加bx,si和1并移动到ax时,结果为0.在下一行,当我使用LEA时,它可以工作,我得到15.

使用移动时为什么我会变零?

assembly x86-16 emu8086

2
推荐指数
1
解决办法
721
查看次数

程序集 8086 中的 SHR 命令

我得到了以下代码,我想在每一步之后写下观察结果。代码是:

MOV AL,15
MOV AH,0FFH
XOR AL,AL
MOV CL,3
SHR AX,CL
Run Code Online (Sandbox Code Playgroud)

现在唯一让我困惑的是 SHR 命令。我知道它会将 AX 的值移动 3 倍,但它是如何做到的呢?

x86 assembly emu8086

2
推荐指数
1
解决办法
4694
查看次数

如何在emu8086中创建和绘制精灵?

我收到了一个作业,需要使用 emu8086 创建游戏。

但问题是我不知道如何绘制精灵。

谁能帮助我向我解释精灵的创建?

assembly emu8086

2
推荐指数
1
解决办法
1761
查看次数

标签 统计

assembly ×10

emu8086 ×10

x86-16 ×5

backspace ×1

dosbox ×1

emulation ×1

low-level ×1

machine-code ×1

opcode ×1

x86 ×1