80x86汇编语言编程:在九九乘法表中高亮显示结果

  要求用汇编语言编程,输出九九乘法表,然后通过键盘输入两个数后,对应位置的乘法运算高亮。
  例如:输入 4、5,那么,4 * 5 = 20 的位置高亮、输入 5、8,就在 5 * 8 = 40 的位置高亮。
  题目链接:百度知道

  做而论道回答如下:(2014-12-10)
  这个问题,需要用 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
;===================================

  程序执行后,显示如下:

  到前面给出的题目链接看吧,百度知道,显示的比较全面。
 

--本文完--

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值