Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 为什么我的程序有一个无限循环?_Assembly_Dos_Dosbox - Fatal编程技术网

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
,你为什么不先询问调试器呢?