0

我想使用汇编语言制作 3 个 for 循环,我所能做的就是 2 个 for 循环,一个在内部,一个在外部。这是我尝试过的

name "loops"
org 100h
mov bx, 0  ; total step counter
mov cx, 5
k1: add bx, 1         
mov al, '1'
mov ah, 0eh
int 10h 
push cx
mov cx, 5
  k2: add bx, 1  
  mov al, '2'
  mov ah, 0eh
  int 10h      
  push cx
     mov cx, 5
     k3: add bx, 1 
     mov al, '3'
     mov ah, 0eh
     int 10h
     loop k3    ; internal in internal loop.
  pop  cx
  loop  k2      ; internal loop.
pop cx
loop k1             ; external loop.


; wait any key...
mov ah, 1
int 21h

ret

我从一个示例中创建了这个简单的代码。

4

1 回答 1

1

我刚刚在 VMWare 虚拟机中的 MS-DOS 6.22 下运行了您的程序,它运行得非常完美!

因此,您的 BIOS、DOS 或 DOS Emulator 可能存在“int 10h”问题。“int 10h”不是“call”的特殊变体,因此它取决于 BIOS 或操作系统“int 10h”的真正作用。

也许您正在使用的版本正在修改 CX 寄存器。

但是,MS-DOS 6.22 和 VMWare 使用的 BIOS 将毫无问题地执行您的程序!

于 2013-11-02T07:22:28.820 回答