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

    西安交通大学汇编语言实验报告(共16页).docx

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

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

    西安交通大学汇编语言实验报告(共16页).docx

    精选优质文档-倾情为你奉上80X86汇编语言程序设计课内实验报告班级:电信硕41班姓名: 周翔宇 学号: 班级电信硕41实验时间ü 2016-4-1ü 206-4-23姓名周翔宇学号一、实验内容概述实验一 熟悉汇编语言实验环境(masm、link、debug/td)实验二 循环程序设计及分支程序设计实验三 子程序及 DOS/BIOS 调用程序设计实验四 高级汇编语言技术实验五 输入输出程序设计实验六 BIOS 和 DOS 中二、实验步骤实验一、masm, link, debug 的过程Debug调试命令:a, d, t, g, r, u, q等。 A (Assemble): 汇编语句 Aaddress C (Compare): 比较内存 C range address D (Display): 显示内存 Daddress或 Drange E (Enter): 改变内存 E addresslist F (Fill): 填充内存 F range list G (Go): 执行程序 G=addressaddressaddress. H: 十六进制运算命令 Haddressdrive|sector|sector I (Input): 输入 I port address L (Load): 装入内存 Laddressdrive|sector|sector M (Move): 传送内存 M range address N (Name): 定义文件和参数 N d:pathfilename.ext O (Output): 输出字节 O port address byte P (Proceed): 在下条指令前停止 P =addressvalue Q (Quit): 结束 DEBUG程序 Q R (Register): 显示寄存器/标志位 R register name S (Search): 捡索字符 S range list T (Trace): 执行并显示(跟踪) T =addressvalue U (Unassemble): 反汇编指令 U address或 Urange W (Write): 把文件或数据写盘 W addressdrive|sector|sector STEP1首先进入cmd命令运行界面STEP2进入masm5文件夹 cd d:masm5 STEP3Masm 输入程序代码文件 xxx 然后回车STEP4Link 输入程序代码文件 xxx 然后回车STEP5Debug xxx.exe 进入了Debug界面实验二、循环程序设计及分支程序设计(1) 循环程序设计 数据段中已定义了一个有 n 个字数据的数组 M, 试编写一程序求出M 中绝对值最大的数,把它放在数据段的 M+2n 单元中,并将该数的偏移地址存放在M+2(n+1)单元中。程序思路:STEP1取第一个数,记录此数;STEP2此数是正数吗?是转到STEP3,否转到STEP4;STEP3是正数,即为绝对值,转去判断下一个数;STEP4不是正数,变为其绝对值;STEP5判断绝对值大小;STEP6(AX)<(BX),使(AX)中为绝对值最大的数;STEP7记下绝对值最大的数的地址,记下此数;STEP8数判断完了吗?是结束,否继续;STEP9转到STEP1;程序源代码:见附件1(2) 分支程序设计 设计一程序,接收从键盘输入的数字(15),并对每个数字的输入次数进行计数,计数结果存放在以 COUNT 为首地址的数组中。(最好能将计数结果打印出来)。程序思路:STEP 1 设置一个五路分支,输入数为X则跳转到X步;STEP X COUNTX+1程序源代码:见附件2实验三、子程序及 DOS/BIOS 调用程序设计 设有 10 个学生的成绩分别是 76,69,84,90,73,88,99,63,100 和 80 分。 试编制一个子程序统计 6069 分,7079 分,8089 分,9099 分和 100 分的人数并分别存放到 S6, S7, S8, S9 和 S10 单元中。程序思路:将成绩除以10然后减6作为偏移地址,然后将此地址加1则表示人数加1程序代码:见附件3实验四、 高级汇编语言技术 试编写一段程序,完成以下功能:若给定名为 X 的字符串长度大于 5 时,下列指令将汇编 10 次。 ADD AX, AX (要求:使用条件汇编,编译过程中生成 LST 文件,查看宏展开情况)程序思路:用($-X)代表字符串长度,然后使用条件汇编指令IF程序代码:见附件4实验五、输入输出程序设计 编写程序,使类型 1CH 的中断向量指向中断处理程序 COUNT,COUNT 统计 1CH 中断次数并存入单元 M 中。 程序思路:STEP1取中断类型号STEP2取中断向量STEP3偏移地址送IP,段地址送CS(上述步骤为保存原中断向量)STEP4设置新的中断向量STEP5转入中断处理程序,并且中断一次M累加1STEP6中断返回程序代码:见附件5实验六、.BIOS 和 DOS 中断 编写一个程序,接收从键盘输入的 10 个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用 XLAT 指令变换)存入内存缓冲区 BUFFER。加密表为: 输入数字: 0,1,2,3,4,5,6,7,8,9 密码数字: 7,5,9,1,3,6,8,0,2,4程序思路:将密码存入数据段,利用XLAT指令,设置AL表示数字值,将对应表中数据送入程序代码:见附件六 三、实验中遇到的问题及其解决方法1、问题1问题描述:绝对值如何得到问题是在实验一中遇到,解决思路是:利用反码的思想解决问题的步骤是:是负数则对负数取反码2、问题2n问题描述:进入Debug界面后,更改输入,然后输入与要求不符n问题是在实验X中遇到,解决的思路是:理清调试步骤n解决问题的步骤是:Debug界面进入后修改了输入然后必须退出Debug界面然后修改后再次重新进入Debug界面3、问题3问题描述:如何调用中断,键盘输入,并且屏幕显示问题是在实验二遇到的,解决的思路是:调用DOS功能解决问题的步骤骤是:调用DOS功能(INT 21H)并选取AL=2从键盘输入;选取AL=30在屏幕上显示,然后选取AL=4CH返回4、问题4问题描述:如何设置中断向量问题是在实验五遇到的,解决思路是,保存原有中断向量,设置新的中断向量,恢复原有的中断向量解决问题的步骤是:首先保存原有的中断向量,然后设置新的中断向量,进入中断程序,最后恢复原有中断向量四、实验结果实验二(1)输出结果:实验二(2)输入:输出实验三、输出结果:数据段:实验四、反汇编:显示内存:查看LST文件:文件内容截图:实验五、内存结果:实验六、输入:输出: 五、附件 附件1:data segment M dw 1,4,3,2,-1,-5,-8,-9,'$'m1 dw 10 dup(?)disa db 'the location of M+2n is : $'disb db 'the location of M+2(n+1)is : $'disc db 0dh,0ah,24hdata endsstack segment stackdw 100 dup(?)top label wordstack endscode segmentmain proc farassume ss:stack,cs:code,ds:datastart:mov ax,stackmov ss,axlea sp,topmov ax,datamov ds,axxor si,si;用来放绝对值最大数的输出lea bx,Mmov si,bx;记录第一个数的地址mov cx,0;记录第一个数值假设是0L1:mov ax,bxcmp ax,24hje L4rol ax,1and ax,1hcmp ax,1;是负数的话就求原码je L2mov ax,bx;正数的话就直接比较mov di,0cmp cx,axjbe L3add bx,2jmp L1L2:mov di,1mov ax,bx;对负数进行求原码运算sub ax,1not axcmp cx,axjbe L3;记录绝对值比较大的数还有符号add bx,2jmp L1L3:mov cx,ax;改变cx的值mov si,bx;改变si的地址值mov dx,diadd bx,2jmp L1L4:lea bx,m1mov bx-2,cx;M+2n存放绝对值最大的数mov bx,si;M+2(n+1)存放他的地址mov bx+2,dx;存放他的符号L5:lea dx,disc;输出换行mov ah,9int 21hlea dx,disa;输出提示语mov ah,9int 21hlea bx,m1mov dx,bx+2cmp dx,0je L51mov dl,'-'mov ah,2int 21hL51:xor si,silea bx,m1;把结果地址传给bxmov si,bx-2;把结果传给simov cx,4L6:push cxmov cl,4rol si,clmov dx,siand dl,0fhcmp dl,9jbe L7add dl,7hL7:add dl,30hmov ah,2hint 21hpop cxloop L6L8:lea dx,disc;输出换行mov ah,9int 21hlea dx,disb;输出提示语mov ah,9int 21hxor si,silea bx,m1mov si,bxmov cx,4L9:push cxmov cl,4rol si,clmov dx,siand dl,0fhcmp dl,9jbe L10add dl,7hL10:add dl,30hmov ah,2hint 21hpop cxloop L9 mov ah,4chint 21hmain endpcode endsend start附件2:DATAS SEGMENTCOUNT db 5 dup (0)DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: push ds sub ax,ax push ax MOV AX,DATAS MOV DS,AXnext: mov ah,01h int 21h cmp al,'1' jz C1 ;jz当zf=1跳转 cmp al,'2' jz C2 cmp al,'3' jz C3 cmp al,'4' jz C4 cmp al,'5' jz C5 jmp exitC1: mov cl,COUNT add cl,1 mov COUNT0,cl jmp nextC2: mov bx,1 mov cl,COUNTbx add cl,1 mov COUNTbx,cl jmp nextC3: mov bx,2 mov cl,COUNTbx add cl,1 mov COUNTbx,cl jmp nextC4: mov bx,3 mov cl,COUNTbx add cl,1 mov COUNTbx,cl jmp nextC5: mov bx,4 mov cl,COUNTbx add cl,1 mov COUNTbx,cl jmp next exit: mov dl,COUNT0 add dl,30h mov ah,02 int 21h mov dl,COUNT1 add dl,30h mov ah,02 int 21h mov dl,COUNT2 add dl,30h mov ah,02 int 21h mov dl,COUNT3 add dl,30h mov ah,02 int 21h mov dl,COUNT4 add dl,30h mov ah,02 int 21h mov ah,4ch int 21hCODES ENDSEND START附件3:DSEGSEGMENTSDW 76,69,84,90,73,88,99,63,100,80S6DW 0S7DW 0S8DW 0S9DW 0S10DW 0DSEGENDSCSEGSEGMENTMAINPROCFARASSUME CS:CSEG,DS:DSEGstart:PUSHDS;设置返回DOSSUBAX,AXPUSHAXMOVAX,DSEGMOVDS,AXBEGIN:MOVCX,10CALLCOUNTRETMAINENDPCOUNTPROCNEAR;成绩统计子程序MOVSI,0NEXT:MOVAX,SSIMOVBX,10; DIVBL;计算公式为:(成绩)/10-6)*2送(BX)MOVBL,AL; SUBBX,6;应为只统计60分以上成绩SALBX,1;(BX)*2INCS6BX;S6是S6,S7,S8,S9和S10单元的首地址ADDSI,2LOOPNEXTRETCOUNTENDP;COUNT子程序结束CSEGENDS;以上定义代码段ENDstart附件4:DSEG SEGMENT DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGMAIN PROC FAR EXE MACRO A IF ($-EXE) GT 5 REPT 10 ADD AX,AX ENDM ENDIFENDMMOV AX,DSEGMOV DS,AXEXE 'ABCDEF'MOV AH,1INT 21HMOV AX,4C00HINT 21HMAIN ENDPCSEG ENDSEND MAIN附件5:DATAS SEGMENTM DB 0DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV AL,1CHMOV AH,35HINT 21HPUSH ESPUSH BXPUSH DSMOV AX,SEG COUNTMOV DS,AXMOV DX,OFFSET COUNTMOV AL,1CHMOV AH,25HINT 21HPOP DSINT 1CHINT 1CHINT 1CHINT 1CHINT 1CHPOP DXPOP DSMOV AL,1CHMOV AH,25HINT 21HMOV AX,4C00HINT 21HCOUNT PROC NEARPUSH DSPUSH AXPUSH CSPUSH DXINC MPOP DXPOP CXPOP AXPOP DSIRETCOUNT ENDPCODES ENDSEND START附件6:DSEG SEGMENTDATA DB 7,5,9,1,3,6,8,0,2,4BUFFER DB 10 DUP(' ')DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGMAIN PROC FARSTART:MOV AX,DSEGMOV DS,AXMOV SI,0LEA BX,DATALOOP1:MOV AH,01HINT 21HCMP AL,0DHJZ EXITSUB AL,30HJB LOOP1CMP AL,09HJA LOOP1XLATMOV BUFFERSI,ALINC SILOOP LOOP1EXIT:MOV AX,4C00HINT 21HMAIN ENDPCSEG ENDSEND MAIN专心-专注-专业

    注意事项

    本文(西安交通大学汇编语言实验报告(共16页).docx)为本站会员(飞****2)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开