标签: emu8086

程序集 8086 中的图形模式

我有一个被调用的变量,average在我的 中DATASEG,它每次都会改变,因为用户每次输入不同的输入。我想要做的是转到图形模式(VGA),然后在那里打印您的平​​均值是:然后平均值我知道如何更改为这样的图形模式:

mov ax, 13h  
int 10h
Run Code Online (Sandbox Code Playgroud)

打印平均值后,如果平均值高于 75,我想打印在下面你是个好学生,继续努力,如果不是。别担心,你会好起来的!提前致谢。

graphics assembly vga emu8086

9
推荐指数
1
解决办法
9589
查看次数

如何在emu 8086中用汇编语言打印0到100?

在这里,我尝试了一些方法来打印 10 到 0 的十进制数字emu8086

     .MODEL SMALL
     .STACK 100H
     .DATA
        NUM DB 58D

     .CODE
     MAIN PROC
          MOV AX,@DATA
          MOV DS,AX


     START:
         CMP NUM,48D 
         JGE PRINT
         JMP END_


     PRINT:
         MOV AH,2
         MOV DL,NUM
         INT 21H
         DEC NUM
         JMP START

     END_:
         MOV AH,4CH
         MAIN ENDP
     END MAIN
Run Code Online (Sandbox Code Playgroud)

它在打印 9 到 0 时工作得很好,但它不是打印 10 而是打印asciivalue 的字符10d。我是 .so 的新手,assembly language如何打印 0 到 100 个十进制数字?

assembly emu8086

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

赋值指令不为emu8086中的符号赋值

为什么以下代码不X使用emu8086中的Assignment Directive(=)为符号赋值:

.model small
.data

        X = 8

.code
.startup

       mov ax, @data
       mov ds, ax

       mov bx, X

       X = 6      

       mov bx, X 

       mov ah, 02h
       mov dx, bx   
       add dx, 48
       int 21h     ; It should display 6 but instead it display 8. 

       mov ah, 04ch
       int 21h

end
Run Code Online (Sandbox Code Playgroud)

assembly x86-16 emu8086

6
推荐指数
1
解决办法
126
查看次数

汇编基础知识:输出寄存器值

我刚刚开始学习汇编语言,我已经陷入了“在屏幕上显示存储在寄存器中的十进制值”的部分。我使用 emu8086,任何帮助将不胜感激!:)

.model small  ;Specifies the memory model used for program to identify the size of code and data segments

org 100h      ;allocate 100H memory locations for stack

.data         ;the segment of the memory to declare/initialze the variables

var1 db 0006
var2 db 0002
var3 db 0001


.code           ;start of the code segment

main proc       ;start of the first procedure

mov bl, var1
add bl, var2
add bl, var3


mov ah, 00h   ; display  function here?
mov dl, bl    ; …
Run Code Online (Sandbox Code Playgroud)

assembly dos x86-16 emu8086

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

模拟器使用 int21h/ah=09h 显示“在 2000 个字节之后找不到错误字节 24h”

我必须使用EMU8086在汇编中做一个简单的计算器,但每次我尝试启动它时,EMU8086都会出现此错误:

INT 21h, AH=09h - 
address: 170B5
byte 24h not found after 2000 bytes.
; correct example of INT 21h/9h:
mov dx, offset msg
mov ah, 9
int 21h
ret
msg db "Hello$"
Run Code Online (Sandbox Code Playgroud)

我检查了其他东西,但没有错误:

data segment
    choice db ?
    snum1 db 4 dup(?)
    snum2 db 4 dup(?)
    sres db 4 dup(?)
    num1 db ?
    num2 db ?
    res db ?
    ;;menu1 db "Chose a function to procced", 10, 13, "Add [+]", 10, 13, "Sub [-]", 10, …
Run Code Online (Sandbox Code Playgroud)

x86 assembly dos x86-16 emu8086

5
推荐指数
1
解决办法
3589
查看次数

装配8086 EQU指令

我在汇编程序(8086)中制作清晰的EQU指令时遇到了麻烦.

abc EQU xyz
Run Code Online (Sandbox Code Playgroud)

当在xyz的代码中找到时,无论xyz代表什么,值等,EQU是否真的交换了abc?

我可以写吗?

varA EQU [bp+4]

mov ax, varA
Run Code Online (Sandbox Code Playgroud)

还有一个问题是EQU全局访问,即我可以在程序中定义EQU,并在程序中使用它吗?

assembly x86-16 emu8086

5
推荐指数
1
解决办法
7436
查看次数

在汇编中寻址数组[di]和[array + di]之间的根本区别是什么?

给出的是英特尔8086处理器的汇编程序,它在数组中添加数字:

.model small
.stack 100h

.data
    array dw 1,2,3,1,2
    sum   dw ?,", is the sum!$"

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

    mov di,0

    repeat:
    mov ax,[array+di]
    add sum,ax
    add di,2           ; Increment di with 2 since array is of 2 bytes

    cmp di,9
    jbe repeat         ; jump if di<=9

    add sum,30h        ; Convert to ASCII
    mov ah,09h
    mov dx,offset sum  ; Printing sum
    int 21h

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

上面的程序使用"base + index"寻址模式添加数组的数量.

可以通过以下方式执行相同的操作:

mov ax, …
Run Code Online (Sandbox Code Playgroud)

assembly masm x86-16 emu8086

5
推荐指数
1
解决办法
139
查看次数

NASM 和 8086 之间的区别

大家晚上好。我刚刚开始学习汇编语言,并且在网上找到了非常好的示例可以遵循。有人建议我使用 NASM 开始学习,但我发现的例子我看到他们使用 8086 汇编器。当我遵循这些示例时,我注意到如果我使用 NASM,它们不会在 Linux 终端上运行,但是如果我安装了 8086 汇编器模拟器,它确实可以工作。

我的问题是:NASM 和 8086 汇编器有什么区别吗?对我来说它们应该是同一件事,因为它是汇编代码。如果没有,有谁可以解释一下两者之间有什么区别吗?以及为什么它们不在 NASM 和 8086 上运行相同的代码

这是我跟踪的代码,它确实在 8086 汇编器上运行,但不在 Linux 上的 NASM 上运行

 DATA SEGMENT
     NUM1 DB ?
     NUM2 DB ?
     RESULT DB ?
     MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $"
     MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $"  
     MSG3 DB 10,13,"RESULT OF ADDITION IS : $"
ENDS
CODE SEGMENT 
    ASSUME DS:DATA CS:CODE
START:
      MOV AX,DATA
      MOV DS,AX

      LEA DX,MSG1
      MOV AH,9
      INT 21H

      MOV …
Run Code Online (Sandbox Code Playgroud)

x86 assembly nasm emu8086

5
推荐指数
0
解决办法
3280
查看次数

X86 IDIV 余数符号取决于 8/-3 和 -8/3 的被除数符号?

谁能帮我解释一下为什么在这些情况下余数的符号不同?这是模拟器错误还是真实的 CPU 也会这样做?

在此输入图像描述

8 / -3 : quotient(AL) = -2 remainder(AH) =  2
-8 / 3 : quotient(AL) = -2 remainder(AH) = -2
Run Code Online (Sandbox Code Playgroud)

assembly integer-division x86-16 emu8086

5
推荐指数
1
解决办法
979
查看次数

从另一个文件调用过程

我有一个 .ASM 文件,我想在其中调用另一个 .ASM 或 .INC 文件中的过程。
我尝试将以下内容写入我的main.asm文件中:

INCLUDE file_op.inc
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试运行它时,它只是说:

“模拟器已停止。”

当它第一次遇到另一个文件中指定的过程时,它会执行此操作。

另一个 .INC 文件中的过程是:

; A function to open a file using its name and remember its file_handle 
open_file       proc
                mov ax, 3d00h           ; System call to open a file
                lea dx, file_name       ; name of the file we are opening
                int 21h                 ; system interrupt
                mov file_handle, ax     ; remember file_handle!!
                ret
                endp

; A function to read from a file byte by byte using …
Run Code Online (Sandbox Code Playgroud)

assembly dos tasm x86-16 emu8086

5
推荐指数
1
解决办法
1842
查看次数

标签 统计

assembly ×10

emu8086 ×10

x86-16 ×7

dos ×3

x86 ×2

graphics ×1

integer-division ×1

masm ×1

nasm ×1

tasm ×1

vga ×1