要求用多重循环结构打印梯形结构的九九乘法表,我的思路是外层循环做第一个乘数的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