029..IF僞指令的應用,修改文字輸出的起始光標位置

在這段代碼中值得注意的一點是,字符串的命名問題,在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!",0dh,0ah,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!",0Dh,0Ah,0
BadYCoordMsg BYTE "Y-Coordinate out of range!",0Dh,0Ah,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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章