80x86彙編語言編程:用光標鍵控制三角形的移動

;程序運行後在居中的位置上,用星號顯示一個三角形:


;            *

;         *     *

;      *     *     *


;然後通過上下左右四個鍵移動這個三角形。

;按下 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

;===================================



程序運行後,各種操作的結果,均符合題目的要求。


提問者評價:哥們你太牛逼啦!!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章