概述  …………………………………………………………  3
一 设计内容与要求  ………………………………………  3 
二 设计思想…………………………………………………  3 
三 工作原理…………………………………………………  3 
四 程序流程图………………………………………………  4 
五、程序运行结果截图………………………………………  5
六 程序源代码  ……………………………………………  5 
七 设计过程中遇到的问题及解决方法  …………………
八 设计心得  ………………………………………………  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小时内删除。