用汇编语言编写查表程序 Love The Way You Lie 2022-08-20 00:27 192阅读 0赞 ;用汇编语言编写程序。 ;先建立一数据表,表中存放0~9的平方,查表求某数字的平方。 ;悬赏分:5 | 解决时间:2011-5-16 12:37 ;======================================================== 最佳答案: ;查表方法,适用性很广,在下面给出的程序中,分别存放了平方表和立方表。 ;读者稍加改动,该程序就可以查出平方或立方值。 ;程序运行时,需要键入0~9,该程序立即就会输出对应的平方值(或立方值)。 ;按ESC退出程序。 ;以下是查表输出的完整程序。 ;-------------------------------------------------------------------- DATA SEGMENT ;数据表格如下: TABLE DW 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 ; TABLE DW 0, 1, 8, 27, 64, 125, 6\*6\*6, 7\*7\*7, 8\*8\*8, 9\*9\*9 ;上面两行,分别是平方表和立方表,读者应该任选其一 DATA ENDS ;-------------------------- STACK SEGMENT DW 128 DUP(0) STACK ENDS ;-------------------------- CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK START: MOV AX, DATA MOV DS, AX MOV ES, AX M\_LOOP: ; MOV AH, 1 ;读键盘,有显示 MOV AH, 7 ;读键盘,无显示 INT 21H ;按键后,AL为其ASCII码 CMP AL, 1BH ;是ESC键吗? JZ EXIT ;是则退出程序 CMP AL, 30H ;判断是否小于0 JL M\_LOOP CMP AL, 39H ;判断是否大于9 JG M\_LOOP SUB AL, 30H ;变换为二进制数 MOV DL, AL ;送到DL CALL OUT\_ASC ;显示其ASCII码 ;------------------------------ MOV BX, TABLE ;表首地址 PUSH CX SHL AL, 1 ;乘以2 MOV AH, AL ;暂存 XLAT ;查出低字节 MOV CL, AL ;存 INC AH ;查高字节 MOV AL, AH XLAT ;查出 MOV CH, AL ;存 MOV AX, CX ;查出来的字,存放到AX POP CX ;------------------------------ CALL CR\_LF ;显示回车换行 CALL OUT\_AX ;显示AX中的内容 CALL CR\_LF ;显示回车换行 JMP M\_LOOP ;循环 ;------------------------------ EXIT: MOV AH, 4CH ;结束程序 INT 21H ;-------------------------------------------- OUT\_AX PROC NEAR ;以10进制显示AX中的内容 PUSH BX MOV DL, 0 CALL OUT\_ASC ;显示0 ;对于本题目,AX中的内容不超过1000,所以千位显示0 MOV BL, 100 DIV BL MOV DL, AL CALL OUT\_ASC ;显示百位 MOV AL, AH XOR AH, AH MOV BL, 10 DIV BL MOV DL, AL CALL OUT\_ASC ;显示十位 MOV DL, AH CALL OUT\_ASC ;显示个位 POP BX RET OUT\_AX ENDP ;-------------------------------------------- OUT\_ASC PROC NEAR ADD DL, 30H ;把数字变换为ASCII CALL OUT\_DL ;显示 RET OUT\_ASC ENDP ;-------------------------------------------- CR\_LF PROC NEAR MOV DL, 10 ;换行的ASCII码 CALL OUT\_DL ;显示 MOV DL, 13 ;回车的ASCII码 CALL OUT\_DL ;显示 RET CR\_LF ENDP ;-------------------------------------------- OUT\_DL PROC NEAR PUSH AX MOV AH, 2 ;显示DL中的ASCII码 INT 21H POP AX RET OUT\_DL ENDP ;-------------------------------------------- CODE ENDS END START ;程序结尾,从START开始执行 \------------------------------------------------------------------ 原题网址:[http://zhidao.baidu.com/question/267138186.html][http_zhidao.baidu.com_question_267138186.html] 提问者对于答案的评价:谢谢 [http_zhidao.baidu.com_question_267138186.html]: http://zhidao.baidu.com/question/267138186.html
还没有评论,来说两句吧...