Assembly 为什么我的程序有一个无限循环?
我用汇编语言编写了一个简单的程序,为了实现,我使用了Assembly 为什么我的程序有一个无限循环?,assembly,dos,dosbox,Assembly,Dos,Dosbox,我用汇编语言编写了一个简单的程序,为了实现,我使用了MS-DOS(DOSBox)这里的代码: .model small .code org 100h mulai: mov ah, 02h mov dl, 'Z' mov cx, 10h lagi: int 21h inc dl inc cx loop lagi int 20h end mulai 我尝试了循环实现,但获得了无限循环,那么我的代码有什么问题?循环递减cx,如果cx不是0,则跳转到给定的地址 由于您在每次循环迭代中递增c
MS-DOS(DOSBox)
这里的代码:
.model small
.code
org 100h
mulai:
mov ah, 02h
mov dl, 'Z'
mov cx, 10h
lagi:
int 21h
inc dl
inc cx
loop lagi
int 20h
end mulai
我尝试了
循环
实现,但获得了无限循环
,那么我的代码有什么问题?循环
递减cx
,如果cx
不是0,则跳转到给定的地址
由于您在每次循环迭代中递增
cx
,cx
永远不会变为0,因此您有一个无限循环。loop
递减cx
,如果cx
不是0,则跳转到给定的地址
由于您在每次循环迭代中递增
cx
,cx
将永远不会变为0,因此您有一个无限循环。并且由于您使用的是org 100h
,因此您正在尝试生成COM程序(而不是EXE)。如果是这样的话,如果您尝试循环16次(10小时),您将希望使用.model tiny
然后,您只需删除dec cx
,因为循环指令会在每次交互中自动递减cx
。为什么不先询问调试器?既然您使用的是org 100h
,那么您是否在尝试生成COM程序(而不是EXE)。如果你想使用.model tiny
?如果你试图循环16次(10小时),那么你只需要删除dec cx
,因为循环指令在每次循环中自动递减cx
,你为什么不先询问调试器呢?