Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly DOSBOX如何将MASM代码转换为NASM?_Assembly_Nasm_Masm_Dosbox - Fatal编程技术网

Assembly DOSBOX如何将MASM代码转换为NASM?

Assembly DOSBOX如何将MASM代码转换为NASM?,assembly,nasm,masm,dosbox,Assembly,Nasm,Masm,Dosbox,我正试图编写代码,将打印一个5乘5的星号网格,但我被迫使用DOS。我作业的第一部分是在MASM中汇编代码,第二部分是将MASM代码翻译成NASM。有人能帮我把MASM代码翻译成NASM吗 MASM代码: .model small .stack 100h .data Asterisks DB '*****',0DH,0AH,'$' .code Main Proc mov ax, @data mov ds, ax mov cx, 5 _loop1:

我正试图编写代码,将打印一个5乘5的星号网格,但我被迫使用DOS。我作业的第一部分是在MASM中汇编代码,第二部分是将MASM代码翻译成NASM。有人能帮我把MASM代码翻译成NASM吗

MASM代码:

.model small
.stack 100h

.data
  Asterisks DB '*****',0DH,0AH,'$'

.code
  Main Proc
    mov ax, @data
    mov ds, ax
    mov cx, 5

    _loop1:
    mov ah, 9
    lea dx, Asterisks
    int 21H
    dec cx
    jnz _loop1

    mov ah, 4ch
    int 21h
  Main ENDP
END Main

我将您的MASM代码保存到文件“sonicM.asm”中,
使用Microsoft(R)宏汇编程序版本6.11c进行汇编
ml.exe/c sonicM.asm

或使用Borland Turbo汇编程序4.0版
tasm.exe sonicM.asm

与Borland Turbo Link 3.01版链接
tlink.exe sonicM.obj

并使用DOSBox版本0.74-2执行
sonicM.exe

; .model small                       ; €ASM uses pseudoinstruction PROGRAM to specify format, model, entry.
sonicE PROGRAM Format=MZ, Model=small, Entry=Main:

[.stack] SEGMENT                     ; €ASM requires segment name in the label field in brackets.
    DB 100h*BYTE

[.data] SEGMENT                      ; €ASM requires segment name in the label field in brackets.
  Asterisks DB '*****',0DH,0AH,'$'

[.code] SEGMENT                      ; €ASM requires segment name in the label field in brackets.
  Main: Proc
    mov ax, PARA# [.data]            ; Paragraph address of the segment bottom is available as PARA# [segment]
    mov ds, ax
    mov cx, 5

    _loop1:
    mov ah, 9
    lea dx, [Asterisks]             ; €ASM requires references to memory variables in square brackets.
    int 21H
    dec cx
    jnz _loop1

    mov ah, 4ch
    int 21h
;  Main ENDP                        ; ENDblocks in €ASM may have their name in the operand field.
   ENDP Main
; END Main                          ; PROGRAM in €ASM requires the corresponding ENDPROGRAM.
  ENDPROGRAM sonicE
汇编程序之间的大部分差异体现在伪指令和指令上。 您可以在
学习NASM指令 以下源已另存为“sonicN.asm”

这就是您的源代码(另存为“sonicE.asm”)在EuroAssembler中的外观,
已组装并与欧元ASM版本20191104链接
eurosam.exe sonicE.asm

并使用DOSBox版本0.74-2执行
sonicE.exe

; .model small                       ; €ASM uses pseudoinstruction PROGRAM to specify format, model, entry.
sonicE PROGRAM Format=MZ, Model=small, Entry=Main:

[.stack] SEGMENT                     ; €ASM requires segment name in the label field in brackets.
    DB 100h*BYTE

[.data] SEGMENT                      ; €ASM requires segment name in the label field in brackets.
  Asterisks DB '*****',0DH,0AH,'$'

[.code] SEGMENT                      ; €ASM requires segment name in the label field in brackets.
  Main: Proc
    mov ax, PARA# [.data]            ; Paragraph address of the segment bottom is available as PARA# [segment]
    mov ds, ax
    mov cx, 5

    _loop1:
    mov ah, 9
    lea dx, [Asterisks]             ; €ASM requires references to memory variables in square brackets.
    int 21H
    dec cx
    jnz _loop1

    mov ah, 4ch
    int 21h
;  Main ENDP                        ; ENDblocks in €ASM may have their name in the operand field.
   ENDP Main
; END Main                          ; PROGRAM in €ASM requires the corresponding ENDPROGRAM.
  ENDPROGRAM sonicE

请提出一个比“有人能帮我吗?”更具体的问题。你到底有什么问题?您是否查阅了相应装配工的手册?