;程序運行後在居中的位置上,用星號顯示一個三角形:
; *
; * *
; * * *
;然後通過上下左右四個鍵移動這個三角形。
;按下 ESC 結束程序。
;題目鏈接:http://zhidao.baidu.com/question/1669168268199538387.html
;做而論道編程如下。
;===================================
ASSUME CS:CC, DS:QW
QW SEGMENT
XX DB '*'
HH DB 11
LL DB 39
QW ENDS
;-----------------------------------
CC SEGMENT
S_T:
MOV AX, QW
MOV DS, AX
;-------------------------
MOV AX, 0600H ;清屏
MOV BH, 0
MOV CX, 0
MOV DX, 194FH
INT 10H
;-------------------------
M_LOOP:
MOV XX, '*'
CALL DISP
MOV AH, 02H
MOV BH, 0
MOV DX, 1900H
INT 10H
;------------------
WAIT_KEY:
MOV AH, 00H ;等待按鍵
INT 16H ;AH=掃描碼,AL=ASCII碼
CMP AL, 27
JE EXIT
CMP AH, 4BH
JE LEFT
CMP AH, 4DH
JE RIGHT
CMP AH, 48H
JE UP
CMP AH, 50H
JE DN
JMP WAIT_KEY
;-------------------------
LEFT:
CMP LL, 4
JBE M_LOOP
CALL ERASE
DEC LL
JMP M_LOOP
RIGHT:
CMP LL, 75
JAE M_LOOP
CALL ERASE
INC LL
JMP M_LOOP
UP:
CMP HH, 0
JE M_LOOP
CALL ERASE
DEC HH
JMP M_LOOP
DN:
CMP HH, 22
JAE M_LOOP
CALL ERASE
INC HH
JMP M_LOOP
;-------------------------
EXIT:
MOV AH, 4CH
INT 21H
;-----------------------------------
ERASE:
MOV XX, ' '
;----------------
DISP: ;定位顯示六個符號
MOV AH, HH
MOV AL, LL
PUSH AX
CALL DISP_XX
;----------------
INC HH
SUB LL, 2
CALL DISP_XX
ADD LL, 4
CALL DISP_XX
;----------------
INC HH
ADD LL, 2
CALL DISP_XX
SUB LL, 4
CALL DISP_XX
SUB LL, 4
CALL DISP_XX
;----------------
POP AX
MOV HH, AH
MOV LL, AL
RET
;-------------------
DISP_XX:
MOV AH, 02H ;定位
MOV BH, 0
MOV DH, HH
MOV DL, LL
INT 10H
MOV AH, 09H ;顯示
MOV AL, XX
MOV BH, 0
MOV BL, 0FH
MOV CX, 1
INT 10H
RET
;-----------------------------------
CC ENDS
END S_T
;===================================
程序運行後,各種操作的結果,均符合題目的要求。
提問者評價:哥們你太牛逼啦!!!!