这真是一门可怕的学科 TAT
编写程序实现:从键盘输入0~9中任意一个自然数,将其平方值在屏幕上显示出来(要求使用查表法)。
于是,
-
DATAS SEGMENT
-
INFOR1 DB 'please input the number:$'
-
INFOR2 DB 0AH, 0DH, 'the result is:$'
-
SQUTAB DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
-
SQUBUF DB ?
-
STRING DB 2 DUP (30h ) , '$'
-
DATAS ENDS
-
-
CODES SEGMENT
-
ASSUME CS:CODES, DS:DATAS
-
START:
-
MOV AX,DATAS
-
MOV DS, AX
-
-
MOV DX, OFFSET INFOR1 ;显示INFOR1内容
-
MOV AH, 9
-
INT 21H
-
-
MOV AH, 1 ;输入数字
-
INT 21H
-
SUB AL,30H
-
-
MOV BX, OFFSET SQUTAB ;读入表
-
XLAT ;查询
-
MOV SQUBUF, Al
-
-
MOV DX, OFFSET INFOR2 ;显示INFOR2内容
-
MOV AH, 9
-
INT 21H
-
-
MOV AX, 0
-
MOV AL,SQUBUF
-
MOV BL, 10
-
DIV BL
-
ADD STRING [ 1 ], AH
-
ADD STRING [ 0 ], AL
-
-
LEA DX,STRING
-
MOV AH, 09H
-
INT 21H
-
-
MOV AH,4CH
-
INT 21H
-
CODES ENDS
-
END START
然后老师讲了一下,发现有符合我们现在学到的方法…… - -:
-
DATAS SEGMENT
-
INFOR1 DB 'please input the number:$'
-
INFOR2 DB 0AH, 0DH, 'the result is:$'
-
SQUTAB DB 00, 01, 04, 09, 16, 25, 36, 49, 64, 81
-
SQUBUF DB ?
-
DATAS ENDS
-
-
CODES SEGMENT
-
ASSUME CS:CODES, DS:DATAS
-
START:
-
MOV AX,DATAS
-
MOV DS, AX
-
-
MOV DX, OFFSET INFOR1 ;显示INFOR1内容
-
MOV AH, 9
-
INT 21H
-
-
MOV AH, 1 ;输入数字
-
INT 21H
-
SUB AL,30H
-
MOV CL, AL
-
-
MOV DX, OFFSET INFOR2 ;显示INFOR2内容
-
MOV AH, 9
-
INT 21H
-
-
MOV BX, OFFSET SQUTAB
-
MOV AH, 0
-
MOV AL, CL
-
XLAT
-
AAM
-
-
MOV BH, AL
-
ADD AH,30H
-
MOV DL, AH
-
MOV AH, 2
-
INT 21H
-
-
MOV AL, BH
-
ADD AL,30H
-
MOV DL, AL
-
MOV AL, 2
-
INT 21H
-
-
MOV AH,4CH
-
INT 21H
-
CODES ENDS
-
END START