Assembly 为什么我的提示符显示三次
我是汇编新手,我正在这里尝试简单的代码,为什么我的提示符会显示3次?我需要做什么才能让它只显示一次提示??我错过了某个地方的回程?我已经尝试了ret的显示器和DisplayN和DisplayName,但它仍然显示我两次Assembly 为什么我的提示符显示三次,assembly,x86,prompt,masm,irvine32,Assembly,X86,Prompt,Masm,Irvine32,我是汇编新手,我正在这里尝试简单的代码,为什么我的提示符会显示3次?我需要做什么才能让它只显示一次提示??我错过了某个地方的回程?我已经尝试了ret的显示器和DisplayN和DisplayName,但它仍然显示我两次 INCLUDE Irvine32.inc .data ;--------- Enter Data Here vS BYTE "************", 0 vA BYTE "************", 0 vName BY
INCLUDE Irvine32.inc
.data
;--------- Enter Data Here
vS BYTE "************", 0
vA BYTE "************", 0
vName BYTE "*************", 0
vHexPrompt BYTE "Please Enter the Value:" ,0
.code
main PROC
;--------- Enter Code Below Here
call Clrscr
call DisplayS
call DisplayA
call DisplayName
call DisplayPrompt
call DisplayString
call EndProgram
call Clrscr
;------------------------------------------------------------------
DisplayS:
mov dh, 4
mov dl, 33
call Gotoxy
mov edx, OFFSET vS
call WriteString
ret
;------------------------------------------------------------------
DisplayA:
mov dh, 5
mov dl, 33
call Gotoxy
mov edx, OFFSET vA
call WriteString
ret
;------------------------------------------------------------------
DisplayName:
mov dh, 6
mov dl, 33
call Gotoxy
mov edx, OFFSET vName
call WriteString
ret
;------------------------------------------------------------------
DisplayPrompt:
mov dh, 8
mov dl, 33
call Gotoxy
mov edx, OFFSET vHexPrompt
call WriteString
ret
;------------------------------------------------------
DisplayString:
call WriteString
ret
;----------------------------------------------------------
EndProgram:
xor ecx, ecx
call ReadChar
exit
main ENDP
END main
您可以使用
WriteString
显示字符串WriteString
使用edx
保存要打印的字符串的地址
调用DisplayPrompt
并将vHexPrompt
的地址移动到edx
,然后调用DisplayString
并在该函数中调用WriteString
edx
仍然包含vHexPrompt
的地址,这就是您收到双重提示的原因
在编写更多代码以利用displaysting
之前,请注释掉该函数中对writestring的调用,或者在displaysting
中调用writestring
之前添加xor edx,edx