概述 ………………………………………………………… 3
一 设计内容与要求 ……………………………………… 3
二 设计思想………………………………………………… 3
三 工作原理………………………………………………… 3
四 程序流程图……………………………………………… 4
五、程序运行结果截图……………………………………… 5
六 程序源代码 …………………………………………… 5
七 设计过程中遇到的问题及解决方法 ………………… 8
八 设计心得 ……………………………………………… 8
九 结束语 ……………………………………………… 9
十 参考文献 ……………………………………………… 9
九九乘法表输出
摘 要:
九九乘法表输出是应用 、、等汇编语言软件进行编译链接及执行目的程序的方法来实现。并且认识和利用DOS系统下的21h函数的02功能号来进行单个字符的输出,程序设计的过程中用到循环和子函数的思想。模块化的程序设计思想,有利于源代码代码的编写,错误的查和修改,同时可以分步来调试程序,减少工作量,乘法表的输出没有乘数和被乘数,只有乘积的结果输出。
关键词:
汇编语言程序设计 、微机原理 、 九九乘法表 、dos中断系统
导入语
一、设计要求
(一)创建文本文件,编写源代码,把文件保存在有 等汇编软件的 文件夹下,文件的后缀名改为.asm,比如(九九乘法表输出.asm)。
(二)开启电脑,在“开始”—“运行”输入“cmd”命令进入DOS的字符操作界面,编译链接程序代码,查看源程序是否有错误,有错误则加以修改。
(三)程序编译链接没有错误的情况下,执行目标程序,查看结果的输出情况,并用debug命令查看内存的变化。
(四)按要求撰写设计报告。
二、设计思想
九九乘法表输出程序主要用到一个嵌套循环,和两个过程,外层循环用bl保存并记录,外循环每执行一次,bl的值加一。内循环用bh保存并记录,如果bh的值小于bl的值则执行内循环,内循环中每盒bl比较一次,成立则值加一不成立则转到换行子函数执行,同时也比较外循环是否继续满足条件执行,即比较bl的值是否小于10,小于就执行外循环,否则就结束程序。
设计dis子函数,把内存中的16进制数转换成10进制,设计的disp子函数是把十进制转化成ASCLL码,并输出乘积,这样得到的显示的结果就是我们看到的10进制数。
子函数output_ctl的功能是换行,当内循环变量bh的值大于外循环值bl时,调用这个函数,使得输出的结果风有序,输出的结果更容易体现嵌套循环。
三、工作原理
九九乘法表输出是简单的乘法,实现了1—9之间的数字相互相乘,并且把结果输出,利用 、 等汇编语言软件。设计算法编写源代码,设计一个循环结构来循环相乘,直到完成9*9,比较退出程序。同时还设计到数数制的转换问题,内存中的数据是16进制,而我们习惯看到的是10进制数,通过16进制转换成10进制,在转成通用ascll码输出显示,同时还用到DOS的中断调用。
四、程序流程图
N
Y
Y
N
Y
N
五、程序运行结果截图
六、程序源代码
data segment
table dw 81 dup(0)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov di,offset table ;di指向table的首地址00h
mov bl,1 ;外循环值
mul_1:
mov bh,1 ;内循环值
mul_2:
汇编语言清华大学出版社 push cx ;压栈
;输出第一个外循环值
mov dl,bl
or dl,30h
mov ah,02h
int 21h
;输出乘号
mov dl,'x'
mov ah,02h
int 21h
;输出第一个内循环值
mov dl,bh
or dl,30h
mov ah,02h
int 21h
;输出等号
mov dl,'='
mov ah,02h
int 21h
mov al,bh ;把bh的值赋给al寄存器中
mul bl ;乘法指令,al与bl相乘,结果放入al中
mov [di],al ;di指向乘的结果
call dis ;调用子函数dis
mov dl,0h ;输出空格
mov ah,2
int 21h
mov dl,0h ;输出空格
mov ah,2
int 21h
add di,2 ;di指向它的下一个地址
pop cx
inc bh ;自加一指令
cmp bh,bl ;比较语句,bh小于bl执行jbe语句,否则执行
;call output_ctle语句
jbe mul_2 ;跳转指令,返回mul_2处,实现循环
call output_ctle ;程序调用指令
inc bl
cmp bl,10 ;比较语句,bl小于10执行jb语句,否则执行程
;序结束指令
jb mul_1
jmp exit ;无条件转移指令
; output_ctle函数功能:输出回车换行
output_ctle proc Near
push ax ;压栈语句
push dx
mov ah,02h ;dos中断下的单个字符输出功能
mov dl,0dh ;0d是回车的ascll码值
int 21h
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论