汇编多重循环 九九乘法表

要求用多重循环结构打印梯形结构的九九乘法表,我的思路是外层循环做第一个乘数的INC,里层循环做打印、乘法运算、两个乘数作比较判断是否换行以及第二个乘数的INC。既不知道我的思路能不能实现也不知道我的代码哪里出了问题,求大神指点。图片说明

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