在 DOSBox 中运行 ml program.asm 时 8086 程序没有输出

Posted

技术标签:

【中文标题】在 DOSBox 中运行 ml program.asm 时 8086 程序没有输出【英文标题】:No output from 8086 program when running ml program.asm in DOSBox 【发布时间】:2020-10-24 19:36:06 【问题描述】:

我从Geeks-for-Geeks site 获得了这段代码,但是有很多缩进错误,我将代码更改为以下代码,但是当使用 MASM 和 DOSBox 运行代码时,它没有给出任何输出。

我应该得到的输出,根据网站我应该得到 20 但我什么也没得到,代码保存为 pro.asm,我使用的是 DOSBox 版本 0.74。 为了在 DOSBox 中获取 o/p,我做了,

mount c c:\8086
c:
ml pro.asm

代码:

;8086 program to convert a 16-bit decimal number to octal 

.MODEL SMALL 
.STACK 100H 
.DATA 
d1 dw 16 
.CODE 
        MAIN PROC FAR 
        MOV ax,@DATA
        MOV ds,ax

;load the value stored in variable d1 
        MOV ax, d1

;convert the value to octal
;print the value 
        CALL PRINT
 
;interrupt to exit
        MOV AH,4CH 
        INT 21H 

        MAIN ENDP 
        PRINT PROC 

;initialize count   
        MOV cx,0 
        MOV dx,0 

label1:          ;if ax is zero 
        cmp ax,0
        je print1 

;initialize bx to 8
        mov bx, 8 
  
;divide it by 8 to convert it to octal 
        div bx  

;push it in the stack   
        push dx 

;increment the count
        inc cx 

;set dx to 0 
        xor dx,dx 
        jmp label1 

print1:            ;check if count is greater than zero 
        cmp cx,0 
        je exit

;pop the top of stack 
        pop dx 

;add 48 so that it 
;represents the ASCII 
;value of digits 
        add dx,48 

;interrupt to print a 
;character 
       mov ah,02h 
       int 21h 

;decrease the count 
       dec cx
       jmp print1
 
exit :  ret 
        PRINT ENDP 
        END MAIN 

我得到的输出可以在下面看到

【问题讨论】:

好吧,根据您的输出,您不执行程序pro.exe - 您只是组装它。 @zx485:我认为代码是正确的。推入堆栈的循环增加cx 和弹出循环的代码cx 次。 如果我想从用户那里获取输入,我必须做出什么改变,因为我尝试了许多不同的东西,主要问题是如果我们接受输入,它会存储在 8 位的 al 中因此我不能将它转移到 ax,所以,我用 8 位 d2 和另一个用 16 位 d1 制作了 2 个变量 1,所以我从 al 转移到 d2 和从 d2 转移到 d1 .... 但我仍然收到错误.. ... 嗯.... 只是好奇,但是 ml.exe 和 link.exe 带有 Dosbox 吗?只是问问。 【参考方案1】:

您的代码看起来不错。您的屏幕截图显示您只组装和链接了代码,但并未实际运行它。要运行它,请输入:

pro.exe

【讨论】:

以上是关于在 DOSBox 中运行 ml program.asm 时 8086 程序没有输出的主要内容,如果未能解决你的问题,请参考以下文章

DOSBOX运行外部windows程序

请问dosbox0.72怎么用啊?

调试DosBox小结

DOSbox汇编集成环境下的详细设置

在 macOS 上使用 dosbox 的 MASM 中的 ExitProcess 错误

金庸群侠传 玩不了 别人说要用DOS进入 怎么下载DOSBOX 运行啊 那里下载