在 DOSBox 中 运行 ml program.asm 时 8086 程序无输出
No output from 8086 program when running ml program.asm in DOSBox
我从 Geeks-for-Geeks site 得到这段代码,但有很多缩进错误,我将代码更改为以下内容,但是,当 运行 使用 MASM 和 DOSBox 的代码时,它没有输出.
我应该得到的输出,根据网站我应该得到 20 但我什么也没得到,代码保存为 pro.asm,我使用的是 DOSBox 版本 0.74。
为了在我做的 DOSBox 中得到 o/p,
mount c c:86
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
我从 Geeks-for-Geeks site 得到这段代码,但有很多缩进错误,我将代码更改为以下内容,但是,当 运行 使用 MASM 和 DOSBox 的代码时,它没有输出.
我应该得到的输出,根据网站我应该得到 20 但我什么也没得到,代码保存为 pro.asm,我使用的是 DOSBox 版本 0.74。 为了在我做的 DOSBox 中得到 o/p,
mount c c:86
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