用汇编语言编写查表程序
来源:互联网 发布:linux怎么写shell脚本 编辑:程序博客网 时间:2024/06/05 00:24
;用汇编语言编写程序。
;先建立一数据表,表中存放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
提问者对于答案的评价:谢谢
- 用汇编语言编写查表程序
- 用汇编语言编写程序打印ASCII表
- 汇编语言编写时钟程序
- 用51单片机汇编语言,编写“键控加减一”的程序
- 用80x86汇编语言,编写一个判断闰年的程序
- 编写单片机的查表程序
- 汇编语言编写方法及程序分析
- 汇编语言命令参数程序的编写
- 汇编语言命令参数程序的编写
- 汇编语言命令参数程序的编写
- 单片机 AT89C51 汇编语言编写报警信号程序
- 汇编语言编写
- 使用汇编语言编写程序,设计一个用8051单片机控制的循环彩灯控制系统
- 用80x86汇编语言,编写一个输出16进制数字的程序
- 汇编语言: .试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来
- [汇编语言学习笔记][第四章第一个程序的编写]
- linux下使用汇编语言编写hello world!程序
- 汇编语言实验:编写0号中断处理程序
- 数据键入与排序程序--80x86汇编语言
- 数码管动态显示 汇编 60进制
- 基于51单片机的交通灯C语言程序设计
- 51单片机利用74HC595驱动数码管
- 按键控制移位显示
- 用汇编语言编写查表程序
- #UML#UML类图
- 关于51单片机外部中断的触发方式
- 51单片机的4×4键盘识别与74LS164驱动数码显示
- 智能交通灯
- 利用单片机控制频率合成器 MC145151-2 的输出频率
- 用80x86汇编语言读写系统时间
- 用80x86汇编语言编程:输入后反序显示
- 用80x86汇编语言编程:键盘输入与显示输出