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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值