在这段代码中值得注意的一点是,字符串的命名问题,在VS2019之中,由于使用了动态链接库,字符串的命名不可以是str这样会导致命名冲突。
; Set Cursor Example ( SetCur. asm)
; Use the . IF and . ENDIF directives to perform
; run- time range checks on parameters passed to
; the SetCursorPosition procedure.
INCLUDE Irvine32. inc
. data
str1 BYTE "Hello World!" , 0 dh, 0 ah, 0
. code
main PROC
mov dl, 79 ; X- coordinate
mov dh, 24 ; Y- coordinate
call SetCursorPosition ;
mov edx, OFFSET str1 ;
call WriteString ;
call WaitMsg ;
exit
main ENDP
SetCursorPosition PROC
; Set the cursor position.
; Receives: DL = X- coordinate, DH = Y- coordinate
; Checks the ranges of DL and DH.
; -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
. data
BadXCoordMsg BYTE "X-Coordinate out of range!" , 0 Dh, 0 Ah, 0
BadYCoordMsg BYTE "Y-Coordinate out of range!" , 0 Dh, 0 Ah, 0
. code
. IF ( DL < 0 ) || ( DL > 79 ) ; 使用. IF伪指令
mov edx, OFFSET BadXCoordMsg
call WriteString
jmp quit
. ENDIF
. IF ( DH < 0 ) || ( DH > 24 )
mov edx, OFFSET BadYCoordMsg
call WriteString
jmp quit
. ENDIF
call Gotoxy
quit:
ret
SetCursorPosition ENDP
END main