要求用汇编语言编程。程序运行后,在屏幕中间,用星号显示一个三角形:
*
* *
* * *
然后通过上下左右四个光标键移动这个三角形。
按下 ESC 结束程序。
题目链接:百度知道
做而论道编程如下。
;===================================
ASSUME CS:ZXC, DS:QWE
QWE SEGMENT
XX DB '*'
HH DB 11
LL DB 39
QWE ENDS
;-----------------------------------
ZXC SEGMENT
S_T:
MOV AX, QWE
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, 2
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
;-----------------------------------
ZXC ENDS
END S_T
;===================================
程序运行后,截图如下:
各种操作的结果,均符合题目的要求。
提问者评价:哥们你太牛逼啦!!!
--本文完--