输出九九乘法表程序设计

输出九九乘法表程序设计
输出九九乘法表程序设计

输出九九乘法表程序设计(附源代码)

Rabbit 徐

摘要:本程序主要完成一个输出九九乘法表的程序,主程序实现九九乘法表的输出。程序输出界面为阶梯型,程序设计中主要应用了条件转移指令判断,通过更改字符对应的ASII码达到乘法字符输出。

关键字:汇编;程序;九九乘法表;阶梯行输出

九九乘法表在生活应用非常广泛,本程序利用汇编语言针根据平时生活中的需要对九九乘法表输出。

一、需求分析

在日常生活中,我们经常需要使用到九九乘法口诀,以达到一些计算目的。因此编写一个输出九九乘法表程序能够帮助许多学生学习此口诀。而且本程序通过汇编语言实现,汇编语言具有许多其他语言不可替代的优点,其目标程序占用内存空间少,运行速度快,在一些硬件配置较差的机器上也能大显身手。

二、概要设计

(一)数据类型

程序中主要用了byte型变量,以及cs,ds,ax,bx寄存器。将提示信息存储在byte型变量数组中,然后将偏移地址存储在ax寄存器中,以用于输出信息。用bl暂存乘数,用bh暂存被乘数。

(二)主要类型

程序中主要用byte型变量存储提示信息,用bl寄存器存放乘数,bh寄存器存放被乘数,进行乘法运算。

(三)主要流程

三、详细设计

本程序首先是程序代码段开始code segment用main proc far使程序模块化,子程序和调用程序不在同一段,方便数据调用。使各寄存器入栈,初始化,并使用乘法调整指令,将各种字符转换为ASCII码值,方便输出。利用JNA判断,实现判断循环功能。程序的具体代码如下:

;题目二十七输出九九乘法表程序设计

code segment;数据段开始

main proc far;子程序调用时使用的参数

assume cs:code;设定数据放入cs寄存器

push ds;DS寄存器入栈

mov ax,0;ax寄存器赋值0

push ax;ax寄存器入栈

mov bl,1;乘数赋值为1

lop2: mov bh,1;被乘数赋值为1

lop1: moval,bh;被乘数存放如al寄存器当中

mulbl;将bl与bh相乘结果送到ax中

aam ;乘法调整指令

add bh,30h ;变为ASCII的值

add bl,30h

movcx,ax

movdl,bh ;用21中断显示被乘数

mov ah,2

int 21h

mov dl,'*' ;显示乘号

mov ah,2

int 21h

movdl,bl ;显示乘数

mov ah,2

int 21h

mov dl,'=' ;显示等号

mov ah,2

int 21h

cmp ch,0 ;查看高位有没有值

je tu;等于转移

add ch,30h ;若有则显示

movdl,ch

mov ah,2

int 21h

tu:add cl,30h ;否则显示低位

movdl,cl

mov ah,2

int 21h

mov dl,' ' ;显示空格

mov ah,2

int 21h

sub bh,30h ;将ASCII还原为BCD数

sub bl,30h

incbh ;将被乘数加一

cmpbh,bl ;比较看是不是要换行

jna lop1;不高于转移

mov dl,0ah ;换行与置首位显示

mov ah,2

int 21h

mov dl,0dh;置于首位置并显示

mov ah,2

int 21h

incbl;否则乘数加一

cmp bl,9;比较乘数与9的大小,是不是要结束jna lop2

mov ah,4ch ;返回dos

int 21h

mainendp

code ends

end main

调试分析

例如,输入程序名无错误,即可输出

四、测试结果示例

首先在模拟dos环境进入程序,测试结果如下图:

五、心得体会

通过本次汇编课程设计,我深刻感受到了汇编语言在程序运行效率,以及时间、空间上的优越性。对汇编中常用的寄存器有了一定的了解,了解了一些子程序调用时需使用的参数如main proc far和main proc near等。同时对程序设计的基本步骤有了一定的了解,此次编程对编程知识了解太少,动手能力不够强,以后在程序的调试过程在不断完善功能,使程序功能更强大,能够处理更多的错误,处理更多的异常。本次课程设计,我感受到编程成功带来的成就感,也感受到的汇编语言的特点。

参考文献

[1] 钱晓捷.微机原理与接口技术,基于IA-32处理器和32位汇编语言[M].2008年1月:30-100

[2] 陈涛.16/32位微机原理,汇编语言及接口技术[M]. 2008年6月:56-70

[3] 白中英.计算机组成原理[M].2008年1月:45-53

[4] 张雪兰.汇编语言程序设计:从DOS到Windows[M].2006年10月:101-120

[5] 王爽. 汇编语言[M]. 2008年3月:135-140

相关主题
相关文档
最新文档