欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    河北工业大学实验报告.docx

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

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

    河北工业大学实验报告.docx

    1、河北工业大学实验报告汇编语言程序设计实验实验一 顺序与分支程序设计一 、实验目的 1) 掌握顺序程序设计方法。2) 掌握分支程序的结构及分支程序的设计,调试方法。 2) 学习数据传送及算术和逻辑运算指令的用法。 3) 熟悉在pc机上建立、汇编、连接、调试和运行汇编语言程序的过程。 二、实验内容 1) 有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。EXAM 11 DATA SEGMENTBUF1 DW 9348HBUF2 DW 4 DUP(0),0AH,0DH,$BUF3 DW 4 DUP(0),$DATA ENDSCOD

    2、E SEGMENT ASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATA MOV DS,AX MOV AX,BUF1 ADD AX,0 JS NEXT MOV BUF2,AX MOV BUF3,AX JMP EEE NEXT:AND AX,7FFFH NOT AX MOV BUF2,AX INC AXMOV BUF3,AX EEE: MOV CX,0004H MOV DI,OFFSET BUF2 MOV DX,DI ADD DI,03BBB:MOV AX,DX AND AX,000FH CMP AL,0AH JB QQQ ADD AL,07HQQQ:ADD AL,30

    3、H MOV DI,AL DEC DIPUSH CX MOV CL,04H SHR DX,CL POP CX LOOP BBB MOV CX,0004H MOV SI, OFFSET BUF3 MOV DX,SI ADD SI,03HCCC: MOV AX,DX AND AX,000FH CMP AL,0AH JB DDD ADD AL,07HDDD:ADD AL,30H MOV SI,AL DEC SI PUSH CX MOV CL,04H SHR DX, CL POP CX LOOP CCC MOV DX,OFFSET BUF2 MOV AH,09H INT 21H MOV DX,OFFSE

    4、T BUF3 MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END BEGIN执行程序EXAM11EXE,屏幕上显示结果:ECB7 ECB8 2)有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。EXAM12 DATA SEGMENTA DB 34H,18H,2 DUP(0),$B DB 56H,83H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL

    5、,A MOV BL,B ADD AL,BL MOV AH,A+1 MOV BH, B+1 ADC AH, BH MOV A, AL MOV A+1, AH MOV CX, 0004H MOV DI, OFFSET A MOV DX, DI ADD DI,03 NEXT: MOV AX, DX AND AX,000FH CMP AL,0AH JB QQQ ADD AL, 07H QQQ: ADD AL, 30H MOV DI, AL DEC DI PUSH CX MOV CL, 04 SHR DX, CL POP CX LOOP NEXTMOV DX, OFFSET AMOV AH, 09HIN

    6、T 21HMOV AH,4CHINT 21H CODE ENDSEND START执行程序EXAM12EXE,屏幕上显示结果:9B8A 3) 在BUF和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。STACK SEGMENT STACK DB 1024 DUP(0)STACK ENDSDATA SEGMENTBUF DB 70H,35H,1FHMAX DB 2 DUP(?),$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKBEGIN: MOV AX, DATA MOV DS,

    7、AX MOV AL, BUF CMP AL, BUF+1 JNB LP1 MOV AL, BUF+1 LP1: CMP AL, BUF+2 JAE LP2 MOV AL, BUF+2 LP2: MOV CX, 02H MOV DI, OFFSET MAX MOV DL, AL INC DI LP3: AND AL, 0FH CMP AL, 0AH JB LP4 ADD AL, 07H LP4: ADD AL, 30H MOV DI,AL DEC DI PUSH CX MOV CL, 04 SHR DL, CL POP CX MOV AL, DL LOOP LP3 MOV DX, OFFSET

    8、MAX MOV AH, 09H INT 21H MOV AH, 4CH INT 21HCODE ENDS END BEGIN执行程序EXAM13EXE,屏幕上显示结果:70 4) 要求同上,只是比较的数为有符号数。 EXAM14 STACK SEGMENT STACK DB 1024 DUP(0)STACK ENDSDATA SEGMENTBUF DB 98H,75H,32HMAX DB 2 DUP(?),$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKBEGIN:MOV AX, DATA MOV DS, AX MOV AL, BUF

    9、 CMP AL, BUF+1 JG LP1 XCHG AL, BUF+1LP1: CMP AL, BUF+2 JG LP2XCHG AL, BUF+2LP2: MOV MAX, ALMOV CX, 02HMOV DI, OFFSET MAXMOV DL, DIINC DILP3: MOV AL, DLAND AL, 0FHCMP AL, 0AHJB LP4ADD AL, 07HLP4: ADD AL, 30HMOV DI,ALDEC DIPUSH CXMOV CL, 04SHR DX, CLPOP CXLOOP LP3MOV DX, OFFSET MAXMOV AH, 09HINT 21HMO

    10、V AH, 4CHINT 21HCODE ENDSEND BEGIN执行程序EXAM14EXE,屏幕上显示结果:755) 将1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。EXAM15 ORG 2000H2000 BE0010 MOV SI, 10002003 BF0910 MOV DI, 10092006 8A14 MOV DL, SI2008 80C200 ADD DL, 00200B 7B0B JPO 2018200D 8615 XCHG DL, DI200F 8814 MOV SI

    11、, DL2011 4F DEC DI2012 39FE CMP SI, DI2014 7407 JE 201D2016 EBF0 JMP 20082018 46 INC SI2019 8A14 MOV DL, SI201B EBF5 JMP 2012201D F4 HLT6)从键盘上接收一位十进制数x,计算y值,并以十六进制形式显示出来,y按下列公式计算。实验六DATE SEGMENT X DB ?DATE ENDS ;数据段CODE SEGMENT ASSUME CS:CODE,DS:DATE START:MOV AX,DATE ;代码段 MOV DS,AX ;初始化ds寄存器 MOV AH

    12、,1 INT 21H ;读文件到缓冲区 CMP AL,33H ;比较指令 JB L0 ;AB CMP AL,36H JA L0 AND AL,0FH ;逻辑与指令 MOV X,AL ;al给x MOV AL,X CMP AL,3H JE L1 ;执行L1命令 CMP AL,4H JE L4 ;执行L4命令 CMP AL,5H JE L6 ;执行L6命令 CMP AL,6H JE L7 ;执行L7命令 L1:MUL AL ADD AL,X ;al+x L5:MOV BL,AL MOV CL,4 SHR AL,CL ;移位指令 CMP AL,9 JLE L2 ;转移指令。小于或等于,或者不大于则转

    13、移 ADD AL,7 L2:ADD AL,30H ;寄存器al加0x30 MOV DL,AL MOV AH,2 ;把2放入ah里 INT 21H AND BL,0FH ;逻辑与运算指令 CMP BL,9 JLE L3 ADD BL,7 ;相加 L3:ADD BL,30H MOV DL,BL MOV AH,2 INT 21H JMP L0 L4:MUL AL SUB AL,X SUB AL,X JMP L5 L6:MUL AL JMP L5 L7:MUL AL SHR AL,1 JMP L5 L0:MOV AH,4CH INT 21HCODE ENDSEND START7)实验内容:从键盘上接收

    14、两个一位十六进制数x和y,然后再输入一个a-d之间的一个字符,按下列要求计算。a) 当输入字符为a,则计算x+y,并以十六进 制形式显示出来b) 当输入字符为b,则计算|x-y|,并以十六进制形式显示出来c) 当输入字符为c,则计算x*y,并以十六进制形式显示出来d) 当输入字符为d,则计算x/y,并以十六进制形式显示出来实验七DATA SEGMENT X DB 0 Y DB 0 W DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX XOR AX,AX MOV AH,1 INT 21H CMP

    15、AL,39H JBE L1 SUB AL,07H L1:SUB AL,30H MOV X,AL MOV AH,1 INT 21H CMP AL,39H JBE L2 SUB AL,07H L2:SUB AL,30H MOV Y,AL MOV AH,1 INT 21H A:CMP AL,41H JNE B XOR AL,AL MOV AL,X ADD AL,Y MOV W,AL JMP L3 B:CMP AL,42H JNE C XOR AL,AL MOV AL,X SUB AL,Y MOV W,AL CMP AL,0 JG L3 NEG AL MOV W,AL JMP L3 C:CMP AL,

    16、43H JNE D XOR AL,AL MOV AL,X MUL Y MOV W,AL JMP L3 D:XOR AX,AX MOV AL,X DIV Y MOV W,AL L3:MOV DL,AL MOV CL,4 SHR DL,CL CMP DL,9 JNA L4 ADD DL,07H L4:ADD DL,30H MOV AH,02H INT 21H MOV DL,W AND DL,0FH CMP DL,9 JNA L5 ADD DL,07H L5:ADD DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START实验七

    17、结果3、实验心得:(1)通过实验使我知道了和熟悉了汇编程序设计的步骤 1.建立数学模型 遇到一个题目,首先要进行全面的分析,根据问题提出的条件,特点,找出规律,找出问题的数学模型或者制定解决问题的规律。 2.绘制程序流程图 流程图能够把比较抽象的问题变得而形象化,并且有助于理清楚思路,便于程序的编制,在程序的易读性和易维护性上有很大的帮助。3.合理分配存储空间和寄存器 汇编语言能够直接的调用存储器和寄存器。程序运行时,大两量的数据,中间结果或最后的结果都存放在存储器中,且运行的程序目标代码在存储器中,节约空间是一个好的程序应该注意的问题。 4.编制程序 根据语法指令编制程序 5.人工检查 用人

    18、工的方式检查程序是否有错,并及时的改正。6.上机调试 只有通过上机才能验证程序是否正确,经过反复的运行调试,才能得到正确的程序。(2)掌握了分支程序的结构及分支程序的设计,调试方法和数据传送及算术和逻辑运算指令的用法。实验二 循环与子程序程序设计一、 实验目的1) 加深对循环结构的理解。 2)掌握循环程序的设计方法。3)学习子程序的定义和调用方法。 4)掌握子程序、子程序的嵌套、递归子程序的结构。 5) 掌握子程序设计、编制及调试。 6) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。二、 实验内容1)编制在屏幕上显示九九乘法表的程序。2)编制在屏幕上显示用*组成的三角形的程序。3、

    19、实验代码实验一DATA SEGMENTS2 DB ?S1 DB ?X DB 1Y DB 1S DB 0AHFCH=2AHFDH=3DHFKG=20HFHH=0AHFHC=0DHDATA ENDSSTACK1 SEGMENT STACKDB 20H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATAMOV DS,AXMOV CL,9LL1:PUSH CX ;将CL压入堆栈段MOV CL,YLL2:CALL L1 ;调用子程序L1INC XLOOP LL2MOV X,1INC YMOV DL,

    20、FHH ;输出换行和回车MOV AH,2INT 21HMOV DL,FHCMOV AH,2INT 21HPOP CX ;从堆栈段中取出CLLOOP LL1MOV AH,4CH ;程序结束INT 21HL1 PROC ;计算X*Y=Z并且输出X*Y=Z的子程序MOV DL,XADD DL,30H MOV AH,2INT 21HMOV DL,FCHMOV AH,2INT 21HMOV DL,YADD DL,30HMOV AH,2INT 21HMOV DL,FDH MOV AH,2INT 21HMOV AL,XMUL YDIV SMOV S1,AHADD AL,30HMOV DL,ALMOV AH,

    21、2INT 21HADD S1,30HMOV DL,S1MOV AH,2INT 21HMOV DL,FKG ;输出空格MOV AH,2INT 21HRETL1 ENDP ;子程序结束CODE ENDSEND START实验二DATA SEGMENTN DB ?FCH=2AHFDH=3DHFKG=20HFHH=0AHFHC=0DHDATA ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AH,1 ;输入一位16进制数确定输出行数 INT 21H CMP AL,39H JBE L1 SUB AL,07HL1:

    22、SUB AL,30H MOV N,ALXOR BX,BXMOV DL,FCHMOV CL,NMOV DL,FHH ;输出换行和回车MOV AH,2INT 21HMOV DL,FHCMOV AH,2INT 21HLOP:PUSH CXINC BLMOV CL,BLMOV DL,FCHLOP2:MOV AH,02HINT 21HLOOP LOP2POP CXMOV DL,0AHMOV AH,02HINT 21HMOV DL,FHCMOV AH,02HINT 21HCMP BL,9JZ L2LOOP LOPL2:MOV AH,4CH ;程序结束INT 21HCODES ENDSEND START4、

    23、实验结果:实验一结果实验二结果5、实验心得6、循环程序由初始化部分、循环部分、调整部分、控制部分组成 1两种方式,一种是先判断在执行,另一种是先执行再判断。 2两种控制循环的方式 a计数控制循环 一般使用LOOP指令,要先将循环的次数放入CX中,在多重循环的计数控制中要注保存和复原上一次循环的断点信息,在保留和复原时可以使用堆栈进行处理。 自认为可以理解为一根盘绕了确定的圈数的绳子,又进入的头,又出去的尾。 b条件控制循环 一般使用JMP指令使程序跳到这一段的开头,用CMP在循环中进行比较判断,再根据程序要求,选择适当的转移条件,跳出循环。 自认为可以理解为一圆形的导轨,并在导轨上设置一个初口

    24、,在符合条件时就在导轨上脱离,否则,将会在导轨上一直的转下去。 3再循环中可以同时使用两者,当即已知循环的次数限制范围,但又要求在符合条件时结束循环是,就要同时使用两者。7、子程序的使用大大的简化了程序设计的思路,在完成一个程序时,可以简单的把一个程序划分为几个完整的几部分,使每一部分独立的完成特定的一部分和计算任务。 子程序的使用还可以大大的减小程序的体积,在一程序中,如果需要多次反复的是用某一段代码的话,就可以将这段代码设定为子程序,以后想使用时,只要一CALL再一RET就OK啦。 我认为使用子程序的关键在于明白子程序的机理,明白子程序是如何保存和恢复断点的信息的,只有真正的理解了这一点才

    25、能更好地利用好子程序。 子程序的参数传递的方式有很多种,但是在堆栈段传递参数时,应该注意使用带立即数的返回的方式,在利用寄存器BP访问堆栈段来取得参数。实验三 算术运算与代码转换程序设计一、实验目的 1)掌握算术运算程序的设计方法。2)掌握代码转换程序的设计方法。 3)进一步掌握各种程序结构。 4)熟练掌握和使用用DEBUG调试程序。 二、实验内容1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。2)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。3)编写程序把从键盘输入的以回车为结束符的字符串中的空格去掉并按相反的顺序输出。三 实验

    26、代码、实验1DATA SEGMENTNUM1 DB 22H,33H,44H,55H,66H,77HNUM1L DB 6HNUM2 DB 22H,22H,22H,22HNUM2L DB 4HOUTCOME1 DB 10H DUP(0)OUTCOME2 DB 10H DUP(0)N DB 0HDATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATAMOV DS,AXMOV CH,0MOV SI,OFFSET NUM1M

    27、OV DI,OFFSET NUM2MOV AH,NUM1LMOV AL,NUM2LCMP AH,ALJAE CHAXCHG SI,DIXCHG AH,ALCHA:SUB AH,AL MOV CL,ALCLCMOV BX,OFFSET OUTCOME1LOP1:MOV AL,DIPUSH CXMOV CL,SI ADC CL,ALMOV BX,CLINC BXINC SIINC DIPOP CXLOOP LOP1MOV CL,AHJCXZ LOP3LOP2:PUSH CXMOV CL, BYTE PTR SIADC CL,0MOV BX,CLPOP CXINC BX INC SI LOOP LO

    28、P2LOP3:MOV CH,0MOV SI,OFFSET NUM1MOV DI,OFFSET NUM2MOV AH,NUM1LMOV AL,NUM2LCMP AH,ALJAE CHA1XCHG SI,DIXCHG AH,ALCHA1:SUB AH,AL MOV CL,ALCLCMOV BX,OFFSET OUTCOME2LOP11:MOV AL,DIPUSH CXMOV CL,SI SBB CL,ALMOV BX,CLINC BXINC SIINC DIPOP CXLOOP LOP11MOV CL,AHJCXZ LOP7LOP21:PUSH CXMOV CL, BYTE PTR SISBB CL,0MOV BX,CLPOP CXINC BX INC SI LOOP LOP21LOP7:MOV DI,OFFSET OUTCOME1ADD DI,10HMOV CX,11HLOP4: MOV DL,DIDEC DICMP N,0HJNE LOP5CMP DL,0HJE LOP9LOP5:PUSH DXPUSH CXMOV CL,4HSHR DL,CLPOP CXCMP DL,9HJBE LOP6


    注意事项

    本文(河北工业大学实验报告.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开