汇编程序设计论文.doc_第1页
汇编程序设计论文.doc_第2页
汇编程序设计论文.doc_第3页
汇编程序设计论文.doc_第4页
汇编程序设计论文.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科生课程论文论文题目显示9-9乘法表和ASCII字符表课程名称汇编语言程序设计学生姓名王旭浩所在专业计算机科学与技术专业所在班级计科1072邮 箱515918517课室号及时间指导教师叶晓霞职称日期2009年06月15日一课程设计名称:显示9-9乘法表和ASCII字符表(从20H-FFH)二设计程序的主要功能:按下相应键分别显示9-9乘法表和ASCII字符表。三设计程序的基本功能: 1 .显示菜单,提示输入数字对应显示。 2 .从键盘接收一个数字并屏蔽。 3 .输入数字为0则显示9-9乘法表,为1则显示ASCII字符表。 4 .输入数字不为0或1时,提示输入错误。四系统程序的流程框图: 1 .主程序流程框图:开始等于0显示提示信息结束输入一个数字,0或1显示9*9乘法表显示ASCII字符表(20HFFH)等于1显示输入错误信息2 .各子程序流程框图:BX=1,CX=1以十进制显示BL以十进制显示CL显示*号显示=号AX=BL*CL输出一个空格CX+1CXCXBX?换行CX=1BX+1BXBX9?退出显示AX以十进制显示BL初始化AH为2号功能调用BL=20HCX14,外循环次数PUSH CXCX16,内循环次数显示BL显示空格换行BL+1BL五系统程序运行界面图: (1)经过汇编,装入文件,用G命令在DEBUG下运行该程序,可得到下图: (2)输入数字0:(3)输入数字1:(4)如果输入不为0或1,例如3:六源程序代码及注释:data segmentmenuinfo db Menu,0ah,0dh db 0 for print 9X9 multiplication table,0ah,0dh db 1 for print ASCII table,0ah,0dh,$errorinfo db illegal input,try again,$data endscode segmentassume ds:data,cs:codestart:mov ax,data; 以下2句初始化数据段mov ds,axlea dx,menuinfo; 以下3句调用功能9显示菜单字符串mov ah,9int 21hmov ah,8; 功能8从标准输入读一个字符,过滤控制字符并不回显int 21h; al = 读入的字符cmp al,0; al = 0则执行输出99乘法表je Print99MultTablecmp al,1; al = 1则执行输出ascii码表je PrintASCIITablelea dx,errorinfo; al 等于其他值则输入有误,调用9号功能输出错误提示mov ah,9int 21hexit:mov ax,4c00h; 程序结束int 21hPrint99MultTable:mov bx,1mov cx,1s0:mov dl,bl; 以下4句以10进制形式显示bladd dl,30hmov ah,2int 21hmov dl,*; 以下2句显示*号int 21hmov dl,cl; 以下3句以10进制形式显示cladd dl,30hint 21hmov dl,=; 以下2句显示=号int 21hmov ax,bx; 以下3句完成ax = bl * clmov dl,blmul clcall htod; 调用htod函数以10进制显示ax里的结果mov ah,2; 输出一个空格mov dl,20hint 21hinc cx; 以下3句检测cx是否大于bx,若为真则进入下一行cmp cx,bxjle s0mov dl,0dh; 以下5句输出换行mov ah,2int 21hmov dl,0ahint 21hmov cx,1; 还原cx = 1inc bx; 更新bxcmp bx,10; bx 9则结束jb s0jmp exitPrintASCIITable:mov ah,02h; 初始化ah为2号功能调用,为显示字符做准备mov bl,20h; bl = mov cx,14; 外层循环14次loop1:push cx; 保存外层循环计数 mov cx,16; 内层循环16次,16*14 = 224 = e0h = ffh - 20h + 1,所以循环e0h次 loop2:mov dl,bl; 以下2句显示bl中的字符int 21hinc bl; 更新bl = bl + 1mov dl,20h; 显示一个空字符,效果是空格,等价于mov dl, int 21hloop loop2; 继续内层循环以16个位一行输出mov dl,0dh; 以下4句输出换行int 21hmov dl,0ahint 21hpop cx; 修复外层循环计数loop loop1; 继续外层循环jmp exithtod proc push ax ; 以下4句保存保存各个寄存器的值 push cx push dx push bx xor cx,cx ; 初始化cx = 0,cx记录数的位数 mov bx,10 ; 初始化bx = 10,bx作为除数s: xor dx,dx ; 初始化dx = 0,因为以下的除法是16位操作数,所以被除数是dx:ax div bx ; 而参数是ax,所以务必清dx为0 inc cx ; 位数+1 push dx ; 保存余数 cmp ax,0 ; 如果ax = 0则结束 jne s ; 否则继续循环ss1: pop dx ; 以下5句逆向取出被保存的余数,并显示 add dl,30h mov ah,2 int 21h loop s1 pop bx ; 以下4句修复各个寄存器的值 pop dx pop cx pop ax ret ; 返回htod endpcode endsend start七课程设计过程遇到问题: 由于选择题目比较简单,遇到问题自然很少。刚开始很粗心,汇编通过,link生成可执行程序,调试的时候,程序不允许访问,经过检查,发现忘记在最后写上“end start”。八课程设计体会: 通过这次的课程设计,加强了我用汇编语言编程的能力,经过一周的调试,更深入了解汇编语言程序的设计过程、方法及实现。这次设计涉及到书上很多知识,比如:分支、循环、调用功能9显示菜单字符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论