【发布时间】:2018-07-01 23:18:35
【问题描述】:
NUM EQU 3
.MODEL small
.STACK
.DATA
tempi DW 8,27,17,12,21,34,9,41,7,18,15,5
risultato DW NUM DUP (?)
.CODE
.STARTUP
PUSH OFFSET tempi
PUSH OFFSET risultato
CALL copiaVettore
ADD SP,4
MOV CX, 0
MOV CX,12
LEA BX, risultato
salta:
MOV DX, [BX]
ADD DX, 30h
ADD BX, 2
MOV AH, 2h
INT 21h
LOOP salta
.EXIT
copiaVettore PROC
PUSH BP
MOV BP, SP
PUSH DI
PUSH SI
MOV DI, [BP+4] ;risultato
MOV SI, [BP+6] ;sorgente
MOV CX, 12
ciclo1:
MOV AX, [SI]
MOV [DI], AX
ADD DI, 2
ADD SI, 2
LOOP ciclo1
POP SI
POP DI
POP BP
RET
copiaVettore ENDP
END
当过程RETurns 时,调试器在MOV CX, 12 上停止,并带有
跳过了未知的操作码:00 不是 8086 指令 - 尚不支持。
但过程中的MOV CX, 12 运行良好。
【问题讨论】:
-
为什么是你的
NUM EQU 3?您处理了 12 个单词,但risultato中只有 3 个单词的空间可能会覆盖您的代码。 -
为什么你的标题说“无限循环”?您描述的问题完全不同:循环退出,但内存已损坏。当您破坏循环内的循环计数器寄存器时,通常会发生无限循环。