80x86彙編語言編程:在九九乘法表中高亮顯示結果

用彙編語言編程解答:

編程輸出九九乘法表,然後通過鍵盤輸入兩個數後,對應位置的乘法運算高亮。

例如:輸入4、5,那麼,4 * 5 = 20 的位置高亮;輸入 5、8,那麼,5 * 8 = 40 的位置高亮。

題目鏈接:

http://zhidao.baidu.com/question/1883296639639871628.html


做而論道回答如下:(2014-12-10 10:52 網友採納)

這個問題,需要用 INT  10H 進行定位顯示。

有了 WINDOWS,DOS 窗口的界面設計,早已淘汰了。

追問:(2014-12-10 22:26),求大神編寫程序啊,我這是作業要交的

回答:已經編好,太費勁了!

全部程序如下:

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

ASSUME  CS:CC, DS:QW

;-----------------------------------

QW  SEGMENT

    HH    DB   0

    LL    DB   9

    XX    DW   ?


    STR   DB  13, 10

    DB  '     00   00   00   00   00   00   00   00   00   00 ', 13, 10, 13, 10

    DB  '     00   01   02   03   04   05   06   07   08   09 ', 13, 10, 13, 10

    DB  '     00   02   04   06   08   10   12   14   16   18 ', 13, 10, 13, 10

    DB  '     00   03   06   09   12   15   18   21   24   27 ', 13, 10, 13, 10

    DB  '     00   04   08   12   16   20   24   28   32   36 ', 13, 10, 13, 10

    DB  '     00   05   10   15   20   25   30   35   40   45 ', 13, 10, 13, 10

    DB  '     00   06   12   18   24   30   36   42   48   54 ', 13, 10, 13, 10

    DB  '     00   07   14   21   28   35   42   49   56   63 ', 13, 10, 13, 10

    DB  '     00   08   16   24   32   40   48   56   64   72 ', 13, 10, 13, 10

    DB  '     00   09   18   27   36   45   54   53   72   81 ', 13, 10, 13, 10


    TIP1  DB  13, 10, '     Please input  n1 : $'

    TIP2  DB  13, 10, '     Please input  n2 : $'


QW  ENDS

;-----------------------------------

CC  SEGMENT


S_T:

    MOV   AX, QW

    MOV   DS, AX

    MOV   AX, 0B800H

    MOV   ES, AX

;-------------------------

    MOV   AX, 0600H  ;清屏

    MOV   BH, 0FH    ;黑底白字

    MOV   CX, 0

    MOV   DX, 194FH

    INT   10H

    MOV   AX, 0600H

    MOV   BH, 0CEH   ;紅底黃字

    MOV   CX, 0

    MOV   DX, 144FH  ;共21行

    INT   10H

;-------------------------

M_LOOP:

    MOV   AH, 2   ;定位

    MOV   BH, 0

    MOV   DX, 0

    INT   10H

    LEA   DX, STR ;顯示99表

    MOV   AH, 9

    INT   21H

;--------------------

    CALL  IN_X

    MOV   HH, DL

    LEA   DX, TIP2

    MOV   AH, 9

    INT   21H

    CALL  IN_X

    MOV   LL, DL

;--------------------

    MOV   AL, HH    ;下面計算行號

    MOV   AH, 0

    ADD   AX, 1

    MOV   BX, 160 * 2

    MUL   BX

    SUB   AX, 160

    MOV   XX, AX

;--------------------

    MOV   AL, LL    ;下面計算列號

    MOV   AH, 0

    MOV   BX, 10

    MUL   BX

    ADD   AX, 12

    ADD   AX, XX    ;加上行號

    MOV   BX, AX

;--------------------

    MOV   AL, 0F0H        ;2FH

    MOV   ES:[BX - 3], AL ;寫入屬性,改變字符的顯示顏色

    MOV   ES:[BX - 1], AL

    MOV   ES:[BX + 1], AL

    MOV   ES:[BX + 3], AL

;---------------------------

EXIT:

    MOV   AH, 4CH

    INT   21H

;---------------------------

IN_X:

    MOV   AH, 7     ;等待按鍵

    INT   21H       ;AL=ASCII碼

    CMP   AL, '0'

    JB    IN_X

    CMP   AL, '9'

    JA    IN_X

    MOV   DL, AL

    MOV   AH, 2

    INT   21H

    AND   DL, 0FH

    RET

;--------------------

CC  ENDS

    END   S_T

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


程序執行後,顯示如下:

80x86彙編語言編程:在九九乘法表中高亮顯示結果 - 非著名博主 - 電子信息之一角

 

http://xiangce.baidu.com/picture/detail/233969bda5418559e1d08957142fd2d3dccb69f1


到前面給出的題目鏈接看吧,百度知道,顯示的比較全面。

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