欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    汇编语言程序大作业(含源代码).pdf

    • 资源ID:76269793       资源大小:90.04KB        全文页数:9页
    • 资源格式: PDF        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言程序大作业(含源代码).pdf

    汇编语言程序大作业程序简介本程序的功能简单,是可以根据用户从键盘的不同输入,回显在显示器上不同的结果。其实现的功能是当用户从键盘输入01 至 12 之间的数时(一年12 个月),程序能给用户返回其相应的月份的英文缩写符;程序的运行过程介绍1)当从编程环境按下运行按钮之后,屏幕上会显示如下一个窗口:图(1)提示使用者输入01 至 12 之间的任一个两位数字,这里可以随意输入01至 12 之间的一个两位数字;2)这里从键盘输入如下图所示的数字接着按下回车键,则会显示用户所输入的数字的相应的月份的英文缩写,如下图所示:程序功能分析:本程序功能简单,仅有输入输出功能,即从键盘上输入一些数字并回车之后给使用者提示相应的信息,下面介绍程序中相应功能是如何实现的:第一,根据常规本程序没有涉及到子程序的概念,仅仅有照常的数据段和代码段而且同时把数据段定义为附加段;第二,在代码段里共有四个部分分别为主程序代码部分键盘输入部分 设置部分和输出部分;下面分别介绍代码段里的各个部分代码段里的主程序部分:main proc far push ds;为返回而把 ds保存到堆栈段sub ax,ax ;清空ax寄存器的内容push ax;把0(清空后的 ax的内容)推入堆栈段mov ax,DATASG ;mov ds,ax;把ax作为中间变量给数据段寄存器送入内存中数据段的首地址mov es,ax;同时把该首地址送给附加段 call input;调用子程序 input(输入子程序)call locate;调用子程序 locate(设置子程序)call display;调用子程序 display(输入子程序)ret;返回main endp ;main 主程序结束代码段里的键盘输入部分:input proc near push dx;为保护 dx而把其内容推入堆栈段lea dx,DSPLY1 ;为了让使用者知道程序一开始要输入什么,这里将把内存中数据段里的 DSPLY1 变量的首地址送给 dx寄存器(专业的说法就是把 DSPLY1的偏移地址送给了 dx数据寄存器)mov ah,09h ;为了能显示 DSPLY1 变量里的字符串,故把 09送给ah并之后中断一次int 21h;DOS 中断mov ah,0ah ;换行lea dx,MONIN;把MONIN 的偏移地址送给寄存器 dx int 21h;DOS 中断mov ah,MONIN+2;把MONIN 作为首地址后再加 2以后的存储单元内容送 ah mov al,MONIN+3;把MONIN 作为首地址后再加 3以后的存储单元内容送 alxor ax,3030h ;清空ax的相应位置cmp ah,00;ah 和00进行比较(主要确定键盘所输入的数字是否在01-09之间)jz return ;若ah的内容确实为 0则跳到 return 标签处sub ah,ah;若ah的内容不为零则清空 ah add al,10;之后al 的内容相加 10存入al return:pop dx ;重新从堆栈段弹出 dx ret;返回input endp 设置部分locate proc near push si;保存si 寄存器的内容(推入堆栈段)push di;保存di 寄存器的内容(推入堆栈段)push cx;保存cx寄存器的内容(推入堆栈段)lea si,MONTAB ;把MONTAB的偏移地址送给 si 寄存器dec al;al 的内容减一(为建立一个表)mul THREE;ax 和数据段中的 THREE 变量进行相乘add si,ax;之后si 和ax的内容进行相加mov cx,03 ;把03送入cx寄存器cld;为循环的方向做确定(定义方向为从左到右进行扫描)lea di,ALFMON ;把数据段中变量 ALFMON的偏移地址送给 di 寄存器rep movsb;进行以字节为单位的扫描pop cx;从堆栈段弹出 cx pop di;从堆栈段弹出 di pop si;从堆栈段弹出 si ret;返回locate endp 输出部分display proc near push dx ;为保护 dx的内容而把 dx lea dx,DSPLY2 ;为了解释最后显示的结果,故把建立在数据段里的DSPLY2 变量的首地址送给了 dx寄存器,也就是把 DSPLY2 的偏移地址送给了 dx寄存器mov ah,09h ;为了能够显示字符串故把 09h送给了 ah,并之后中断了一次int 21h;DOS 中断lea dx,ALFMON ;把ALFMON的偏移地址送给 dx寄存器mov ah,09 ;为了屏幕上显示字符串int 21h pop dx;从寄存器弹出 dx ret display endp 下面介绍 数据段的定义:DATASG SEGMENT PARA DATA THREE DB 3 MONIN DB 3,4 DUP(?)ALFMON DB?,$MONTAB DBJAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DECDSPLY1 DBPlaese input two numbers(01-12):$DSPLY2 DBYour input month is:$DATASG ENDS 本程序的缺点是没办法连续地输入来确定不同的月份,而且是简单的基本输入输出功能的程序,尽管如此本人还是设计出了此程序。程序流程图:程序源代码TITLE MONTH (EXE)DATASG SEGMENT PARA DATA THREE DB 3 MONIN DB 3,4 DUP(?)ALFMON DB?,$MONTAB DB JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC display1 db Please input two numbers:(01-12)$display2 db Your input month is:$DATASG ENDS CODESG SEGMENT PARA CODE ASSUME CS:CODESG,DS:DATASG,ES:DATASG main proc far push ds ;为返回而把 ds 保存到堆栈段sub ax,ax ;清空 ax 寄存器的内容push ax ;把 0(清空后的 ax 的内容)推入堆栈段开始询问 Plaese input two numbers(01-12):从键盘接受两位数字数字转换为相应的英文缩写字母显示相应的月份的英文缩写字母mov ax,DATASG mov ds,ax ;把 ax 作为中间变量给数据段寄存器送入内存中数据段的首地址mov es,ax ;同时把该首地址送给附加段 call input ;调用子程序input(输入子程序)call locate ;调 用 子 程 序locate(设置子程序)call display ;调用子程序 display(输入子程序)ret ;返回main endp ;main主程序结束input proc near push dx ;为保护 dx 而把其内容推入堆栈段lea dx,display1 ;为了让使用者知道程序一开始要输入什么,这里将把内存中数据段里的 display1变量的首地址送给 dx 寄存器(专业的说法就是把display1的偏移地址送给了dx 数据寄存器)mov ah,09h ;为了能显示 display1变量里的字符串,故把09 送给 ah 并之后中断一次int 21h ;DOS中断mov ah,0ah ;换行lea dx,MONIN ;把MONIN的偏移地址送给寄存器dx int 21h ;DOS中断mov ah,MONIN+2;把 MONIN 作为首地址后再加 2 以后的存储单元内容送ah mov al,MONIN+3 ;把 MONIN作为首地址后再加 3 以后的存储单元内容送al xor ax,3030h ;清空 ax 的相应位置cmp ah,00 ;ah和 00 进行比较(主要确定键盘所输入的数字是否在01-09 之间)jz return ;若 ah的内容确实为 0 则跳到 return标签处sub ah,ah ;若 ah的内容不为零则清空 ah add al,10 ;之后 al 的内容相加 10 存入 al return:pop dx ;重新从堆栈段弹出dx ret ;返回input endp locate proc near push si ;保存 si 寄存器的内容(推入堆栈段)push di ;保存 di 寄存器的内容(推入堆栈段)push cx ;保存 cx 寄存器的内容(推入堆栈段)lea si,MONTAB ;把 MONTAB 的偏移地址送给 si 寄存器dec al ;al的内容减一(为建立一个表)mul THREE ;ax和数据段中的THREE 变量进行相乘add si,ax ;之后 si 和 ax 的内容进行相加mov cx,03 ;把 03 送入 cx 寄存器cld ;为循环的方向做确定(定义方向为从左到右进行扫描)lea di,ALFMON ;把数据段中变量 ALFMON 的偏移地址送给 di 寄存器rep movsb ;进行以字节为单位的扫描pop cx ;从堆栈段弹出 cx pop di ;从 堆 栈 段 弹出 di pop si ;从堆栈段弹出 si ret ;返回locate endp display proc near push dx ;为保护 dx 的内容而把 dx lea dx,display2 ;为了解释最后显示的结果,故把建立在数据段里的display2变量的首地址送给了dx 寄存器,也就是把display2的偏移地址送给了dx 寄存器mov ah,09h ;为了能够显示字符串故把09h 送给了 ah,并之后中断了一次int 21h ;DOS中断lea dx,ALFMON ;把 ALFMON 的偏移地址送给 dx 寄存器mov ah,09 ;为了 屏幕 上显示字符串int 21h ;DOS 中断pop dx ;从寄存器弹出 dx ret display endp CODESG ENDS END main

    注意事项

    本文(汇编语言程序大作业(含源代码).pdf)为本站会员(索****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开