我正在尝试使用过程从数组中删除特定数字。 我的方法工作正常,但唯一的问题是,它只在第二次工作。 换句话说,如果用户选择:1 2 3 4 60 9作为他的阵列 该方法将打印1 2 3 4 60 9然后将询问用户是否要再次尝试。 当用户选择再次尝试时,用户将删除该号码,例如,它将删除60并打印 1 2 3 4 9
deleteproc proc
fourth:
lea esi, array ; pointer
mov ecx, lengthof array ; move the length of the array to ecx
target:
mov eax,[esi]
call writeDec ; print the array
call crlf
add esi,type array ; add the type of the array to esi
loop target
call crlf
lea esi, array ; pointing to array
mov ecx, lengthof array ; moving the length of array to ecx
mov eax, 60 ; moving 60 to eax in order to search for it
mov count, 0 ; clear count variable
start44:
cmp eax, [esi] ; check if 60 is in [esi] (Array)
je find ; if it was found go to find lable
add esi, type array ; add the type of the array in esi
inc count ; increment count
loop start44
find:
add esi,type array ; add the type of the array to esi
mov eax,[esi] ;move the array to eax after deleting it
sub esi,type array
mov [esi],eax
add esi,type array
inc count
cmp count,10
jb find
call readdec ; write 1 to continue
cmp eax, 1
JE fourth ; if the user chose 1 it goes to fourth lable again
JNE stop ; if the user chose another number it will stop
我很确定代码在没有目标标签的情况下工作,因为我有很多选项,当我使用其他选项删除目标标签时,它有效。但是,每当我尝试使用目标标签打印它时,它在第一次不起作用,但它在第二次正常工作! 我怎样才能让它第一次运作? 有什么想法吗?
我正在使用MASM,我的代码中的所有内容都是dword 这是一个10元素的数组