- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编程序设计论文
本科生课程论文
论文题目 显示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 .主程序流程框图:
2 .各子程序流程框图:
五.系统程序运行界面图:
(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,ax lea dx,menuinfo ; 以下3句调用功能9显示菜单字符串 mov ah,9 int 21h mov ah,8 ; 功能8从标准输入读一个字符,过滤控制字符并不回显 int 21h ; al = 读入的字符 cmp al,0 ; al = 0则执行输出99乘法表 je Print99MultTable cmp al,1 ; al = 1则执行输出ascii码表 je PrintASCIITable lea dx,errorinfo ; al 等于其他值则输入有误,调用9号功能输出错误提示 mov ah,9 int 21hexit: mov ax,4c00h ; 程序结束 int 21hPrint99MultTable: mov bx,1 mov cx,1s0: mov dl,bl ; 以下4句以10进制形式显示bl add dl,30h mov ah,2 int 21h mov dl,* ; 以下2句显示*号 int 21h mov dl,cl ; 以下3句以10进制形式显示l add dl,30h int 21h mov dl,= ; 以下2句显示=号 int 21h mov ax,bx ; 以下3句完成ax = bl * cl mov dl,bl mul cl call htod ; 调用htod函数以10进制显示ax里的结果 mov ah,2 ; 输出一个空格 mov dl,20h int 21h inc cx ; 以下3句检测cx是否大于bx,若为真则进入下一行 cmp cx,bx jle s0 mov dl,0dh ; 以下5句输出换行 mov ah,2 int 21h mov dl,0ah int 21h mov cx,1 ; 还原cx = 1 inc bx ; 更新bx cmp bx,10 ; bx 9则结束 jb s0 jmp 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 21h inc bl ; 更新bl = bl + 1 mov dl,20h ; 显示一个空字符,效果是空格,等价于mov dl, int 21h loop loop2 ; 继续内层循环以16个位一行输出 mov dl,0dh ; 以下4句输出换行 int 21
文档评论(0)