我在班上似乎总是落后于小组,我想为我班上关于循环的下一章“练习”。
我写了这个从 1 到 10,000 的小循环(我认为这需要一毫秒的时间来运行):
.MODEL SMALL
.STACK 100h
.DATA
Finished DB 10, 13, 'Loop x 10,000 finished. Congratulations! $', 10, 13
.CODE
MAIN PROC
MOV AX, @data
MOV DS, AX
MOV CX, 10000
MOV BX, 0
StrtLoop:
INC BX
LOOP StrtLoop
CMP BX, 10000
JE DispMsg
JMP SkipMsg
DispMsg:
MOV AH, 09H
MOV DX, OFFSET Finished
INT 21H
SkipMsg:
MOV AL, 0h
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
几分钟前我打错了零的数量,并破坏了程序。我想知道为什么会这样。
我收到了这个错误:
汇编文件:Loop.ASM
ERROR loop.ASM(15) 值超出范围。
ERROR loop.ASM(24) 值超出范围。
错误信息:2
警告信息:无
通过:
剩余内存:467k
.MODEL SMALL
.STACK 100h
.DATA
Finished DB 10, 13, 'Loop x 100000 finished. Congratulations! $', 10, 13
.CODE
MAIN PROC
MOV AX, @data
MOV DS, AX
MOV CX, 100000
MOV BX, 0
StrtLoop:
INC BX
LOOP StrtLoop
CMP BX, 100000
JE DispMsg
JMP SkipMsg
DispMsg:
MOV AH, 09H
MOV DX, OFFSET Finished
INT 21H
SkipMsg:
MOV AL, 0h
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
经过一些谷歌搜索(并在阅读有关内存寄存器的书上摸索)后,事实证明存在 65,535 个字节的硬限制。这个对吗?如果有人想超越这个内存限制怎么办?有没有办法做到这一点?
只是对我来说似乎很奇怪......