内存中自TABLE开始的七个单元中连续存放着自然数0~7的立方值。任一个数X(0≤X≤6)在FIRST单元中。要求查表找出X的立方值。
我的程序清单如下:
DATAS SEGMENT
MESSAGE DB 'Please input 0~6: ', '$ '
TABLE DB 0,1,8,27,64,125,216
FIRST DB ?
SECOND DB ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,OFFSET MESSAGE
MOV AH,09H ;调用9号功能显示字符串Please input 0~6:
INT 21H
MOV AH,01H ;调用1号功能从键盘输入要求方的数字
INT 21H
MOV BX,OFFSET TABLE
SUB AL,30H
MOV FIRST,AL
XOR AH,AH
XLAT ;查表
MOV SECOND,AL ;查处的结果放入SECOND
CMP SECOND,10 ;判断结果是否大于10
JAE PRINT100 ;是的话转到PRINT100:输出有百位的数字
ADD SECOND,30H
MOV DL,SECOND
MOV AH,02H
INT 21H
JMP SHORT EXIT
PRINT100:
CMP SECOND,100 ;判断结果是否大于100
JB PRINT10 ;是的话转到PRINT10:输出有十位的数字
MOV AL,SECOND
CBW
MOV CL,100
DIV CL ;取百位
MOV DL,AL
ADD DL,30H
MOV SECOND,AH ;保存十、个位数
MOV AH,02H
INT 21H ;输出百位数
MOV AL,SECOND
CBW
MOV CL,10 ;取十位数,并输出十位数
DIV CL
MOV DL,AL
MOV DH,AH
MOV AH,02H
ADD DL,30H
INT 21H
MOV DL,DH ;输出个位数
ADD DL,30H
INT 21H
JMP SHORT EXIT
PRINT10:
MOV AL,SECOND ;取十位数,并输出十位数