《电子科技大学-汇编实验报告.docx》由会员分享,可在线阅读,更多相关《电子科技大学-汇编实验报告.docx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、电子科技大学计算机工程学院标准实验报告(实验)课程名称电子科技大学教务处制表6 .写出源程序清单,并附注释;7 .写出调试过程及运行结果并分析;8 .总结实验中遇到的问题及解决方法;九、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的结果进行分析)程序说明:本程序完成求九九乘法表,就相当于C语言中用两个 for循环程序清单:data SEGMENT a DB 1 b DB ?data ENDS code SEGMENT ASSUME CS:code, DS:datamain:MOV AX, data;MOV DS, AXloopl:;循环标志MOV AL, a;MOV CL, AL;M
2、OV b, 1;loop_in:MOV AH, 2: OR b,30h;MOV DL, b INT 21h MOV DL, INT 21h OR a, 30h;MOV DL,a1;a的或运算存放到DL中MOV AH, 2INT 21h MOV DL, INT 21h SUB a,30h; SUB b,30h; MOV AL,a;a* MOV BL,b;b MUL BL MOV BL, 10; DIV BL MOV BL,AH; MOV AH, 2 CMP AL, OOh; JE loop2; OR AL,30h; MOV DL,AL INT 21H loop2: OR BL,30h; MOV
3、AH, 2 MOV DL, BL INT 21h MOV AH, 2 MOV DL, INT 21h INC bLOOP loop_in MOV AH,2 MOV DL,13 INT 21h MOV AH, 2 MOV DL,10 INT 21h INC a CMP a, 10 JB loopl MOV AH, 4ch INT 21h;a*b赋给BL寄存器;AL/BL %-ah, /-al;AL的内容与0比较;跳转到loop_in标志位置code ENDSEND main程流程图: 结束 )调试说明:将汇编语言(.asm文件)通过masm命令转换为目标程序(.obj 文件),通过link命令转
4、换为目标程序可执行程序(.exe文件); 显示结果为:c:C:VIVDOVSsysteB32cad.exe - debug 2.exeC:nasn50link 2.objMicrosoft R) Overlay Linker Uersion 3.60 Copyright Microsoft Corp 1983-1987. All rights reserved.Run File 2.EXE:List File NUL.MAP):Libraries LIB:LINK : warning L4021 : no stuck segmnt1C:nasn50debug 2.exe-g J *1-1 1*
5、2 -2 1*3-3 1*4=4 1*5-5 l6-61*8 -8 1*9=92-2-42*3-6 3*3-92*4=8 3M12 4+1=162*5N10 2*6-12 2-7-14 2*8-16 2*9=183*5-15 36-18 37-21 3闻243*9=274*5-20 4-6-24 4t7-28 48-32 4*9=365*5-25 56-30 57-35 5*8-405*9=4566-36 6742 486*9=547*7-497*8-56 8*8-64 7*9 =63 8*9=72 9*9=81Progran terminated normally -2十、实验结论:(联系理
6、论知识进行说明)通过本次实验,掌握了分支程序的结构特点,学习了分支程序的 设计和调试方法,掌握了循环程序的结构特点并学习了循环程序的设 计和调试方法,运用了循环程序设计的思想,本实验的原理框图较为 复杂,但是框图给出了明确的思路和解题方向,是很好的学习方法。 本次程序设计实验运用了数个跳转指令,JL , JLE ,跳转指令在循 环程序设计过程中具有很重要的特点。报告评分:指导教师签字:电孑科技大学实验报告实验三指导教师:实验地点:主楼A2-412实验时间:19:00-一、实验室名称:二、实验项目名称:数制、码制和子程序的编程与调试三、实验学时:四、实验原理:(包括知识点,电路图,流程图)数制、
7、码制和子程序设计基本规范与调试方法;MASM宏汇编开发环境使用方法;循环程序设计与调试方法; 分配与使用寄存器的相关方法五、实验目的:1 .熟练掌握编写汇编语言原程序的基本方法和基本框架。2 .熟练使用DEBUG调试程序。3 .掌握十六进制数与ASCII码之间,ASCII码与BCD码之间的转 换。4 .掌握用DOS功能调用,实现字符的输入和显示。5 .掌握子程序的编程与调试方法。六、实验内容:(介绍自己所选的实验内容)1、从键盘输入两个2位十进制正数,相加,结果以十六进制数形 式显示在屏幕上。(要求结果显示完整的算式)2、从键盘输入两个2位十进制正数转换成组合BCD码后,相加, 结果以十进制形
8、式显示在屏幕上。(要求结果显示完整的算式)3、从键盘输入两个2位十六进制数,相加,结果以十进制形式显 示在屏幕上。(要求结果显示完整的算式)七、实验器材(设备、元器件):WinXP PC 机,MASM,50 , VisulASM 软件平台。八、实验步骤:(编辑调试的过程)1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到 的问题是如何解决的,并对调试过程中的问题进行分析,对执行 结果进行分析。3、写出源程序清单(含注解)和执行结果(截图)。4、画出对应的流程图九、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的 结果进行分析)程序说明:本实验
9、输入两个子程序,一个是将十六进制数转换成 二进制数的子程序,还有就是讲二进制数转换为十进制数的。在程序 运行的时候我们首先输入两个十六进制数,然后分别转换为二进制数 (利用子程序)之后加法计算出二进制结果然后我们再利用子程序B 转出十进制最终结果。程序清单:DATA SEGMENTMSG1DB13,10,Pleaseinputhex number_ 1: $;输入提示字符串MSG2DB13,10,Pleaseinputhex numb er_2: $;输入提示字符串CRLFDB13,10,NNDB?,9 *MMDB9 *DATA ENDSCODE SEGMENTASSUME CS:CODE,
10、DS:DATASTART:MOVAX, DATAMOVDS, AXLEADX, MSG1MOVAH, 9INT21HCALLIN_CHAR;调用 IN_CIIARMOVMM, ALLEADX, MSG2MOVAH, 9INT21H;返回DOSCALLIN_CHARMOVNN, ALLEADX, CRLFMOVAH, 9INT21HMOVAL, MMCALLOUT_NUMMOVDL,MOVAH, 2INT21HMOVAL, NNCALLOUT_NUMMOVDL,=MOVAH, 2INT21HMOVAL, NNADDAL, MM;MN与NN相加MOVAH, 0ADCAH, 0;带进位的相加CALL
11、OUT_1EXIT:MOVAH, 4CHINT21H;返回DOSIN_CHAR:LEABX, NNMOVCX, 2IN_1:MOVAH, 1;调用1号功能,键盘输入数据INT21HCMPAL, O;判断位变量转移JBIN_1CMPAL, FJAIN_1CMPAL, 9JBELNUMCMPAL,JB IN_1SUB AL, 7LNUM:SUB AL, 30HMOV BX, ALINC BXLOOP IN XCHG AL, NNMOV BL, 16MUL BLADD AL, NN RETOUT_NUM:MOVOUT 1:;存放计算结果MOV DX, 0程序框图:调试说明:将汇编语言(.asm文件)
12、通过masm命令转换为目标程序(.obj 文件),通过link命令转换为目标程序可执行程序(.exe文件);显示结果为:c:C:VIVDOVSsysteB32cBd.exe - debug aul. exe Eross-referenceYNUL?CRF:50882 450318 Bytes symbol space free0 Warning Errors0 Severe ErrorsC:masn501ink nul.objMicrosoft Overlay Linker Uersion 3.60 Copyright Microsoft Corp 1983-1987. All rights
13、reserved-Run File (NU1.EXEList File NUL.MAP1:Libraries (.LIBI:LINK : warning L4021: no stack segnentC:masn50debug nul.exe please input hex nunberj. : 16Please input hex nunber_2: 18 H22,024,046Progran terninated normally十、实验结论:(联系理论知识进行说明)本实验完成了数制,码制子程序调试设计及其应用程序的设计 与调试运行实验,学习了汇编语言程序设计过程中的数据输入方法和 字符
14、串存储特点,以及利用码制转换将两个十六进制数相加并以十进 制形式输出。报告评分:指导教师签字:电孑科就.大学实验报告实验一学生姓名:穆萨指导教师:实验地点:主楼A2-412实验时间:19:00一、实验室名称:二、实验项目名称:汇编源程序的上机调试操作基础训练三、实验学时:四、实验原理:(包括知识点,电路图,流程图)DEBUG的基本调试命令;汇编数据传送和算术运算指令MASM宏汇编开发环境使用调试方法五、实验目的:1 .掌握DEBUG的基本命令及其功能2 .学习数据传送和算术运算指令的用法3 .熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的 过程也孑科技大学实验报告实验四指导教师:实验
15、地点:主楼A2-412实验时间:19:00-一、实验室名称:串操作指令及其应用程序的设计与调试运行二、实验项目名称:三、实验学时:四、实验原理:(包括知识点,电路图,流程图)串操作程序设计基本规范与调试方法;MASM宏汇编开发环境使用方法循环程序设计与调试方法;分配与使用寄存器的相关方法五、实验目的:1 .熟悉串操作指令的基本格式和使用方法2 .掌握常用的串操作程序的设计方法。3 .熟悉串操作程序的调试运行过程。六、实验内容:(介绍自己所选的实验内容)1 .从键盘输入两个长度不同的字符串,设字符串长度小于2 5个 字符。要求在屏幕上以右边对齐的形式显示出来。2 .数据块移动。将一个连续存储单元
16、的数据移动到另一个连续的 存储单元,并找出其中零的个数并显示出来。(注意在编程的时候 要确保数据块位置的不确定性)3 .从键盘输入两个相同长度的字符串,分别放到数据段和附加段, 利用串比较指令比较数据段和附加段中两个字符串,如果两串一 样,输出Y,否则输出不同的字符。七、实验器材(设备、元器件):WinXP PC 机,MASM,50 , VisulASM 软件平台。八、实验步骤:(编辑调试的过程)实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方 法,以及对程序结果的分析等。1 .程序说明。说明程序的功能、结构。2 .调试说明。包括上机调试的情况、上机调试步骤、调试所遇 到的问题是如何解
17、决的,并对调试过程中的问题进行分析,对执行结果进行分析。3 .画出流程图。4 .写出源程序清单(含注解)和执行结果(截图)。九、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的 结果进行分析)程序说明:本程序完成两个字符串的键盘输入并且右对齐输出字符串。结构:1、在数据段中设置两个存放显示信息的字符串,一个是提示用 户输入,另一个是提示显示信息位置2、在数据段中设置两个存放输入字符串的缓冲区3、输入字符串曹勇OAH号DOS功能调用,字符串存入缓冲区时, 第二个字节为实际输入字符串的长度,从第三个字节开始为字符串的 ASCII 码。4、为了显示右对齐,由于两个字符串缓冲区的长度相同,只需
18、 要将两个字符串向缓冲区后面靠齐,再调用09H号DOS功能调用即可 达到显示的右对齐。程序清单:DATA SEGMENTNUM EQU 25PROMPT 1 DB OAH,ODH, fstring: f $;输入提示PR0MPT2 DB OAH, ODII, after adjusting:,OAH, ODH, f$fSTR ING 1 DB NUM, 0, NUM DUP( ), OAH, ODH,STRING2 DB NUM, 0, NUM DUP( 9,0AH, ODH, f$fDATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP(O)STACK1 E
19、NDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACK1BEGIN:MOV AX , DATAMOV DS, AXMOV ES , AXMOV CX ,2; CX初始化为2LEA BX ,STRING1L00P1:LEA DX, PROMPT1MOV AH, 09HINT 21HMOV DX, BXMOV AH, OAHINT 21HLEA BX, STRING2LOOP L00P1LEA BX, STRING1+2CALL MOVELEA BX, STRING2+2CALL MOVELEA DX, PR0MPT2MOV AH, 09HINT 21HL
20、EA DX, STRING1+2MOV AH, 09HINT 21HLEA DX, STRING2+2MOV AH, 09HINT 21HMOV AH, 4CHINT 21HMOVE PROCXOR CH, CH ;XOR CH, CH结果为0相当于,清零MOV CL,MOV SI, CXADD SI, BXDEC SIMOV DI, BXADD DI, NUM-1STDREP MOVSBMOV CX, NUMSUB CL, -1BXMOV AL, REP STOSB RET MOVE ENDP CODE ENDSEND BEGIN程序流程图:REP MOVSB进行字符串传送调试说明:将汇编语
21、言(.asm文件)通过masm命令转换为目标程序(.obj文件),通过link命令转换为目标程序可执行程序(.exe文件);显示结果为:50502 415674 Bytes symbol space free0 Warn ing Errors B Severe ErrorsC:masn50link nu4.objMicrosoft Overlay Linker Uersion 3.60Copyright Microsoft Corp 1983-1987. All rights reserved.Run File 【HU4.EXEJ: List File NUL.MAP: Libraries .
22、LIB:C:masn50debug nu4.exe -g string:hell rush sti*ing:how are you? after adjusting: hell, nusa how arc you?Progran terninated normally十、实验结论:(联系理论知识进行说明)本实验完成了串操作指令及其应用程序的设计与调试运行实验, 学习了汇编语言程序设计过程中的数据输入方法和字符串存储特点, 以及利用串操作命令来将缓冲区大小一致的两个字符串右对齐输出。 本次实验很有难度,提升了我们设计复杂汇编程序的能力。报告评分:指导教师签字:六、实验内容:(介绍自己所选的实验内
23、容)1 . DEBUG命令的使用2 .程序的调试与运行3 .编写程序计算以下表达式:Z=(5X+2Y-7)/2设X、丫的值放在字 变量VARX、VARY中,结果存放在字节单元VARZ中。七、实验器材(设备、元器件):WinXP PC 机,MASM,50 , VisulASM 软件平台。八、实验步骤:(编辑调试的过程)1 .编辑源程序,建立一个以后缀为.ASM的文件.2 .汇编源程序,检查程序有否错误,有错时回到编辑状态,修改 程序中错误行。无错时继续第3步。3 .连接目标程序,产生可执行程序。4 .用DEBUG程序调试可执行程序,记录数据段的内容。九、实验数据及结果分析:(实验运行结果介绍或者
24、截图,对不同的 结果进行分析)程序说明:功能:本程序完成Z=(5X+2Y-7)/2这个等式的计算结果求取。其 中X与Y是已知量,Z是待求量。结构:首先定义数据段,两个DB变量VARX与VARY (已经初始化), 以及结果存放在VARZ,初始化为?。然后定义堆栈段,然后书写代 码段,代码段使用顺序程序设计本程序,重点使用MOV和IMUL以及 XOR, IDIV完成程序设计。详细内容见程序注释。程序清单:DATA SEGMENTVARX DB 10VARY DB 10VARZ DB ?DATA ENDSSTACK SEGMENT PARA STACKSTACK ENDSCODE SEGMENTAS
25、SUME CS:CODE, DS:DATA, SS:STACK MAIN:MOV AX,DATAMOV DS, AXMOV AL, VARXMOV AH, VARYSAL AL, 1SAL AL, 1ADD AL, VARXSAL AH, 1ADD AL, AHSUB AL, 7SAR AL, 1MOV VARZ, ALMOV AH, 4CHINT 21HCODE ENDSEND MAIN程序框图:开始AX与AX进行异或(置零)CX与CX进行异或(置零)VARX AL5 f CLAX与AX进行异或(置零)VARY - AL2 - CLAL = AL*CLAL +DL - ALAL-7 AL2
26、- CLCL/2 = CL AL - VARZ结束调试说明:将汇编语言(.asm文件)通过masm命令转换为目标程序(.obj文件),通过link命令转换为目标程序可执行程序(.exe文件);这次试验还要用-P参数以及d参数显示结果为:C:INDOSsyste32cd. exe - debug 1.exeliX=141F BX=0000S=13F2 ES=13E213F3:001C A20200 pPCX=0033 DX=0000 SP=0000SS=13F3 CS=13F3 IP=001CMOU 0002 LALBP=0000 SI=0000 DI=0000NU UP EI PL NZ NA
27、 PO CYDS=0002=00liX=141F BX=0000S=13F2 ES=13E2tt.3F3:001F B44C pPCX=0033 DX=0000 SP=0000SS=13F3 CS=13F3 IP=001FMOU AH,4cBP=0000 SI=0000NU UP EI PL NZ NA克图拉克 581546 右健弹出窗口X=4C1FS=13F2 13F3:0021BX=0000ES=13E2CD21CX=0033 DX=0000 SP=0000SS=13F3 CS=13F3 IP=0021BP=0000 SI=0000NU UP EI PL NZDI=0000 NA PO C
28、Y一D3F3:0000 .3F3:0010 13F3:0020 13F3:0030 ;3F3:00403F3:0050 3F3:0060 13F3:00?082C9E866B0480140F2 06 CD 56 2A DI FE 90301102E0C41B46 80CCD804I NT2180BE DD85B A 0 08 9E 00206F6100082910000-8A C4-2C 21-8B 80-7F 58-0? 8B-00 46-F8 FF-76670E19B82000D88F10B00D800804BEE60F578FF7022A6B96DA03388F02966668E0829
29、44BD0 0046 8A 16 F6 F6 D204AFBBB5EBFS82E0 U.& .t:&_一 .*FF.F.F.F.u. .u.十、实验结论:(联系理论知识进行说明)通过本次实验,我们学习了解掌握了 DEBUG的基本命令及其功能, 学习了数据传送和算术运算指令的用法,熟悉了在PC机上编辑、汇 编、连接、调试和运行汇编语言程序的过程。完成了 Z=(5*X + 2*Y -7)/2算术式的编程计算,使用到了以上学习到的知识,并且利 用了顺序程序设计的思想。通过本次实验,大大提升了对汇编程序设 计这门课实践意义的理解,提高了编程能力和设计水平。报告评分:指导教师签字:电孑科就.大学实验报告
30、实验二学生姓名:穆萨指导教师:实验地点:主楼A2-412实验时间:19:00-一、实验室名称:二、实验项目名称:分支程序与循环程序设计三、实验学时:四、实验原理:(包括知识点,电路图,流程图)分支程序设计基本规范与调试方法,循环程序设计与调试方法;分配与使用寄存器的相关方法五、实验目的:1 .掌握分支程序的结构。2 .掌握分支程序的设计与调试方法。3 .掌握循环程序设计与调试方法4 .掌握正确分配与使用寄存器。六、实验内容:(介绍自己所选的实验内容)1 .根据输入的字母进行大小写转换(若是输入小写字母则转换成 为大写字母,反之),若输入的不是字母则提示出错并重新输入。2 .从键盘上输入三个一位十进制数,将其中大于均值的数显示出 来。3 .显示九九表(任意形式均可)4 .键盘输入1-7,对应输出Monday-Sunday o七、实验器材(设备、元器件):WinXP PC 机,MASM,50 , VisulASM 软件平台。八、实验步骤:(编辑调试的过程)1 .编写源程序文件;2 .汇编,若发现语法错误或者格式错误则修改;3 .链接,形成可执行文件;4 .运行程序,得到正确结果;5 .撰写实验报告:1)实验目的;2)实验要求;3)实验步骤;4)实验中涉及知识介绍;5)画出流程图;